kubernetes集群安装指南:客户端安装及各组件认证文件创建
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,大多情况,证书用于服务安全访问(即https访问)所需要,在kubernetes集群中,如果关闭了匿名访问,开启了集群HTTPS访问以及TLS双向认证;如:worker节点组件HTTPS访问apise
千家信息网最后更新 2025年02月03日kubernetes集群安装指南:客户端安装及各组件认证文件创建
大多情况,证书用于服务安全访问(即https访问)所需要,在kubernetes集群中,如果关闭了匿名访问,开启了集群HTTPS访问以及TLS双向认证;如:worker节点组件HTTPS访问apiserver服务时,Apiserver还需要验证客户端是否合法,此时就需要为worker节点上的组件生成kubeconfig认证文件用于连接apiserver。
1. 基本设置
1.1 变量设置
PACKAGE=kubernetes-server-v1.12.0-linux-amd64.tar.gzK8S_DOWNLOAD_URL=https://github.com/devops-apps/download/raw/master/kubernetes/$PACKAGEK8S_CONF_PATH=/etc/k8s/kubernetesK8S_KUBECONFIG_PATH=/etc/k8s/kubeconfigKUBE_APISERVER=https://dev-kube-api.mo9.comBOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ')
1.2 kubectl、kubens工具集安装
sudo wget $K8S_DOWNLOAD_URL -P /root/softwarecd $SOFTWARE tar -xzfkubernetes-server-v1.12.0-linux-amd64.tar.gz -C ./cp -fp kubernetes/server/bin/{kubectl,kubens} /usr/local/sbin
1.3 创建认证文件存放目录
if [ ! -d "$K8S_CONF_PATH" ]; then mkdir -p $K8S_CONF_PATHfiif [ ! -d "$K8S_KUBECONFIG_PATH" ]; then mkdir -p $K8S_KUBECONFIG_PATHfi
2. 创建 TLS Bootstrapping Token
cat > ${K8S_CONF_PATH}/token.csv <
- bootstrapping token文件主要用于为apiserver开启tocken认证而创建,如果没有开启apiserver token认证可以不用创建此文件;
3 kubeconfig文件创建
3.1 创建kube-controller-manager kubeconfig文件
kubectl config set-cluster kubernetes \ --certificate-authority=${CA_DIR}/ca.pem \ --embed-certs=true \ --server=${KUBE_APISERVER} \ --kubeconfig=${K8S_KUBECONFIG_PATH}/kube-controller-manager.kubeconfigkubectl config set-credentials system:kube-controller-manager \ --client-certificate=${CA_DIR}/kube-controller-manager.pem \ --client-key=${CA_DIR}/kube-controller-manager-key.pem \ --embed-certs=true \ --kubeconfig=${K8S_KUBECONFIG_PATH}/kube-controller-manager.kubeconfigkubectl config set-context system:kube-controller-manager \ --cluster=kubernetes \ --user=system:kube-controller-manager \ --kubeconfig=${K8S_KUBECONFIG_PATH}/kube-controller-manager.kubeconfigkubectl config use-context system:kube-controller-manager \ --kubeconfig=${K8S_KUBECONFIG_PATH}/kube-controller-manager.kubeconfig
3.2 创建kube-shceduler kubeconfig文件
kubectl config set-cluster kubernetes \ --certificate-authority=${CA_DIR}/ca.pem \ --embed-certs=true \ --server=${KUBE_APISERVER} \ --kubeconfig=${K8S_KUBECONFIG_PATH}/kube-scheduler.kubeconfigkubectl config set-credentials system:kube-scheduler \ --client-certificate=${CA_DIR}/kube-scheduler.pem \ --client-key=${CA_DIR}/kube-scheduler-key.pem \ --embed-certs=true \ --kubeconfig=${K8S_KUBECONFIG_PATH}/kube-scheduler.kubeconfigkubectl config set-context system:kube-scheduler \ --cluster=kubernetes \ --user=system:kube-scheduler \ --kubeconfig=${K8S_KUBECONFIG_PATH}/kube-scheduler.kubeconfigkubectl config use-context system:kube-scheduler \ --kubeconfig=${K8S_KUBECONFIG_PATH}/kube-scheduler.kubeconfig
3.3 创建kubelet bootstrapping kubeconfig文件
kubectl config set-cluster kubernetes \ --certificate-authority=${CA_DIR}/ca.pem \ --embed-certs=true \ --server=${KUBE_APISERVER} \ --kubeconfig=${K8S_KUBECONFIG_PATH}/bootstrap.kubeconfigkubectl config set-credentials kubelet-bootstrap \ --token=${BOOTSTRAP_TOKEN} \ --kubeconfig=${K8S_KUBECONFIG_PATH}/bootstrap.kubeconfigkubectl config set-context default \ --cluster=kubernetes \ --user=kubelet-bootstrap \ --kubeconfig=${K8S_KUBECONFIG_PATH}/bootstrap.kubeconfigkubectl config use-context default \ --kubeconfig=${K8S_KUBECONFIG_PATH}/bootstrap.kubeconfig
- bootstrapping文件主要用于apiserver给kubelet证书做自动轮转,使用该文件,apiserver会自动给kubelet颁发服务端证书以及证书密钥,从而不必为kubelet证书
3.4 创建kube-proxy kubeconfig文件
kubectl config set-cluster kubernetes \ --certificate-authority=${CA_DIR}/ca.pem \ --embed-certs=true \ --server=${KUBE_APISERVER} \ --kubeconfig=${K8S_KUBECONFIG_PATH}/kube-proxy.kubeconfigkubectl config set-credentials kube-proxy \ --client-certificate=${CA_DIR}/kube-proxy.pem \ --client-key=${CA_DIR}/kube-proxy-key.pem \ --embed-certs=true \ --kubeconfig=${K8S_KUBECONFIG_PATH}/kube-proxy.kubeconfigkubectl config set-context default \ --cluster=kubernetes \ --user=kube-proxy \ --kubeconfig=${K8S_KUBECONFIG_PATH}/kube-proxy.kubeconfigkubectl config use-context default \ --kubeconfig=${K8S_KUBECONFIG_PATH}/kube-proxy.kubeconfig
3.5 创建kubectl kubeconfig文件
kubectl config set-cluster kubernetes \ --certificate-authority=${CA_DIR}/ca.pem \ --embed-certs=true \ --server=${KUBE_APISERVER} \ --kubeconfig=${K8S_KUBECONFIG_PATH}/kubectl.kubeconfigkubectl config set-credentials admin \ --client-certificate=${CA_DIR}/admin.pem \ --client-key=${CA_DIR}/admin-key.pem \ --embed-certs=true \ --kubeconfig=${K8S_KUBECONFIG_PATH}/kubectl.kubeconfigkubectl config set-context kubernetes \ --cluster=kubernetes \ --user=admin \ --kubeconfig=${K8S_KUBECONFIG_PATH}/kubectl.kubeconfigkubectl config use-context kubernetes \ --kubeconfig=${K8S_KUBECONFIG_PATH}/kubectl.kubeconfig
- --certificate-authority:验证 kube-apiserver 证书的根证书;
- --client-certificate、--client-key:刚生成的 admin 证书和私钥,连接 kube-apiserver 时使用;
- --embed-certs=true:将 ca.pem 和 admin.pem 证书内容嵌入到生成的 kubectl.kubeconfig 文件中(不加时,写入的是证书文件路径);
备注:kubeconfig文件是用于安全连接apiserver服务的认证文件。
4 同步token文件及kubeconfig文件到相应的节点
master节点:
cd $K8S_KUBECONFIG_PATHansible master_k8s_vgs -m copy -a \"src=kube-controller-manager.kubeconfig dest=$K8S_KUBECONFIG_PATH/ " -bansible master_k8s_vgs -m copy -a \"src=kube-scheduler.kubeconfig dest=$K8S_KUBECONFIG_PATH/ " -b
- worker节点
cd $K8S_KUBECONFIG_PATHansible worker_k8s_vgs -m copy -a \"src=bootstrap.kubeconfig dest=$K8S_KUBECONFIG_PATH/ " -bansible worker_k8s_vgs -m copy -a \"src=kube-proxy.kubeconfig dest=$K8S_KUBECONFIG_PATH/ " -b
- kubeconfig文件主要用于各组件在通过https访问apiserver时所需要的认证的文件,该文件包括对应组件的服务端证书、证书私钥、ca根证书以及apiserver的访问地址
创建完kubernetes集群组件相关认证文件后,接下来正式部署kubernetes集群相关组件etcd集群,请参考:kubernetes集群安装指南:etcd集群部署
文件
证书
认证
集群
组件
节点
服务
生成
安全
验证
客户
客户端
指南
合法
接下来
不用
内容
双向
变量
地址
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
沉侵式服务器冷却招标
数据库范式判断题
什么公司会购买云服务器
天涯明月刀美脸男数据库
数据库基本表
wifi网络安全密钥不对
网络技术简答题 题库
mqtt 云服务器搭建
网络安全几点主张
gartner 网络安全
国际主流的数据库有哪些
广州京霖网络技术有限公司
甲骨文高级数据库系统工程师
网络安全手抄报男
2008数据库怎么安装视图
联想服务器 上海
新建空白数据库的快捷键
软件开发在加拿大工资
人工智能跟软件开发
医疗领域的网络安全宣传周
雕龙数据库百度百科
qt软件开发无锡
菲菲网络技术
mqtt 云服务器搭建
正阳软件开发商
mysql数据库名字修改
校园网络安全教育问题
5g网络安全问题对策
两会前网络安全保障
万德数据库官网如何查询