千家信息网

kubernetes集群安装指南:客户端安装及各组件认证文件创建

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,大多情况,证书用于服务安全访问(即https访问)所需要,在kubernetes集群中,如果关闭了匿名访问,开启了集群HTTPS访问以及TLS双向认证;如:worker节点组件HTTPS访问apise
千家信息网最后更新 2025年12月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安全错误 数据库的锁怎样保障安全 网络安全与移动互联网那个好 山西通用软件开发价格多少 虹口区加工软件开发项目信息 手机号码无故被判违反网络安全法 php服务器端搭建 计算机网络技术获得的能力 成都最好的服务器托管 2021网络安全市场展望 ca证书在服务器还是客户端 微信小程序数据库后台 网络安全等级保护工作的流程 邯郸网络技术费用 性读书软件开发 网络安全安全研究生 高性能计算服务器 知乎 六年级网络安全画 手机开共享网络安全吗 数据库格式无法识别 支付宝不支持第三方数据库 启帆网络技术工 河间市网络安全教育平台 燃气企业关于网络安全有关政策 成都最好的服务器托管 学校网络安全宣传主题班会 为什么有的服务器恐龙都是炫彩 中学生网络安全法案例 sun服务器管理口登录 普陀区营销软件开发销售 数据库总结报告与致谢 万方数据库可以获取哪些信息
0