CentOS 7.3下Docker Kubernetes1.8.3集群环境搭建(5)

kubectl 与 kube-apiserver 的安全端口通信,需要为安全通信提供 TLS 证书和秘钥。

[root@mimo222 ~]# cd /opt/ssl/ [root@mimo222 ~]# vi admin-csr.json # 添加以下信息: { "CN": "admin", "hosts": [], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "TianJin", "L": "TianJin", "O": "system:masters", "OU": "System" } ] }

生成admin 证书和私钥

[root@mimo222 ~]# cd /opt/ssl/ /opt/local/cfssl/cfssl gencert -ca=/etc/kubernetes/ssl/ca.pem \ -ca-key=/etc/kubernetes/ssl/ca-key.pem \ -config=/opt/ssl/config.json \ -profile=kubernetes admin-csr.json | /opt/local/cfssl/cfssljson -bare admin

查看生成

[root@mimo222 ssl]# ll admin* -rw-r--r-- 1 root root 1013 Dec 14 19:22 admin.csr -rw-r--r-- 1 root root 231 Dec 14 19:22 admin-csr.json -rw------- 1 root root 1679 Dec 14 19:22 admin-key.pem -rw-r--r-- 1 root root 1407 Dec 14 19:22 admin.pem

拷贝到指定目录

cp admin*.pem /etc/kubernetes/ssl/ 配置 kubectl kubeconfig 文件

生成证书相关的配置文件存储与 /root/.kube 目录中

# 配置 kubernetes 集群 kubectl config set-cluster kubernetes \ --certificate-authority=/etc/kubernetes/ssl/ca.pem \ --embed-certs=true \ --server=https://127.0.0.1:6443 # 配置 客户端认证 kubectl config set-credentials admin \ --client-certificate=/etc/kubernetes/ssl/admin.pem \ --embed-certs=true \ --client-key=/etc/kubernetes/ssl/admin-key.pem kubectl config set-context kubernetes \ --cluster=kubernetes \ --user=admin kubectl config use-context kubernetes 创建 kubernetes 证书 [root@mimo222 ~]# cd /opt/ssl [root@mimo222 ~]# vi kubernetes-csr.json { "CN": "kubernetes", "hosts": [ "127.0.0.1", "10.0.11.222", "10.254.0.1", "kubernetes", "kubernetes.default", "kubernetes.default.svc", "kubernetes.default.svc.cluster", "kubernetes.default.svc.cluster.local" ], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "ShenZhen", "L": "ShenZhen", "O": "k8s", "OU": "System" } ] }

这里 hosts 字段中三个 IP 分别为 127.0.0.1 本机、172.16.1.64 为 Master 的IP(多个Master节点需要将所有master节点IP都写在这)、 10.254.0.1 为 kubernetes SVC的 IP, 一般是部署网络的第一个IP , 如: 10.254.0.1, 在启动完成后,我们使用 kubectl get svc, 就可以查看到。

生成 kubernetes 证书和私钥

kubelet 首次启动时向kube-apiserver 发送 TLS Bootstrapping 请求,kube-apiserver 验证 kubelet 请求中的 token 是否与它配置的 token 一致,如果一致则自动为 kubelet生成证书和秘钥。

# 生成 token(注意此处的token在生成node节点kubelet需要的证书时也会用到,要注意不要写错或重新生成别的) [root@mimo222 ~]# head -c 16 /dev/urandom | od -An -t x | tr -d ' ' 3140a1541451afcc87ca7b715f124ce3 # 创建 token.csv 文件 [root@mimo222 ~]# cd /opt/ssl [root@mimo222 ~]# vi token.csv # 填写以下信息: 3140a1541451afcc87ca7b715f124ce3,kubelet-bootstrap,10001,"system:kubelet-bootstrap" # 拷贝 cp token.csv /etc/kubernetes/ # 生成高级审核配置文件 [root@mimo222 ~]# cd /etc/kubernetes cat >> audit-policy.yaml <<EOF # Log all requests at the Metadata level. apiVersion: audit.k8s.io/v1beta1 kind: Policy rules: - level: Metadata EOF 创建 kube-apiserver.service 文件

自定义 系统 service 文件一般存于 /etc/systemd/system/ 下

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3610a734fcb0347b51bf15379c90ac67.html