在开始安装 Kubernetes 之前,需要先将一些必要系统创建完成,其中 Etcd 就是 Kubernetes 最重要的一环,Kubernetes 会将大部分信息储存于 Etcd 上,来提供给其他节点索取,以确保整个集群运作与沟通正常。
创建集群 CA 与 Certificates
在这部分,将会需要产生 client 与 server 的各组件 certificates,并且替 Kubernetes admin user 产生 client 证书。
建立/etc/etcd/ssl文件夹,然后进入目录完成以下操作。
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64chmod +x cfssl*
将这三个二进制可执行文件,修改名称复制到/usr/local/bin/下
[root@localhost ~]# ll /usr/local/bin/总用量 18808-rwxr-xr-x. 1 root root 10376657 3月 30 2016 cfssl-rwxr-xr-x. 1 root root 6595195 3月 30 2016 cfssl-certinfo-rwxr-xr-x. 1 root root 2277873 3月 30 2016 cfssljson
使用CFSSL创建CA证书以及etcd的TLS认证证书
创建 CA (Certificate Authority)
创建 CA 配置文件(ca-config.json)
[root@localhost ssl]# cat ca-config.json{"signing": {"default": {"expiry": "87600h"},"profiles": {"etcd": {"expiry": "87600h","usages": ["signing","key encipherment","server auth","client auth"]},"expiry": "87600h"}}}}[root@localhost ssl]#
“字段说明” “ca-config.json”:可以定义多个 profiles,分别指定不同的过期时间、使用场景等参数;后续在签名证书时使用某个 profile; “signing”:表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE; “server auth”:表示client可以用该 CA 对server提供的证书进行验证; “client auth”:表示server可以用该CA对client提供的证书进行验证;
创建 CA 证书签名请求(ca-csr.json)
[root@localhost ssl]# cat ca-csr.json{"CN": "etcd","key": {"algo": "rsa","size": 2048},"names": [{"C": "CN","ST": "wuhan","L": "wuhan","O": "etcd","ST": "System"}]}
“CN”:Common Name,etcd 从证书中提取该字段作为请求的用户名 (User Name);浏览器使用该字段验证网站是否合法; “O”:Organization,etcd 从证书中提取该字段作为请求用户所属的组 (Group); 这两个参数在后面的kubernetes启用RBAC模式中很重要,因为需要设置kubelet、admin等角色权限,那么在配置证书的时候就必须配置对了,具体后面在部署kubernetes的时候会进行讲解。 “在etcd这两个参数没太大的重要意义,跟着配置就好。”
生成 CA 证书和私钥
[root@localhost ssl]# cfssl gencert -initca ca-csr.json|cfssljson -bare ca2019/08/29 18:43:38 [INFO] generating a new CA key and certificate from CSR2019/08/29 18:43:38 [INFO] generate received request2019/08/29 18:43:38 [INFO] received CSR2019/08/29 18:43:38 [INFO] generating key: rsa-20482019/08/29 18:43:38 [INFO] encoded CSR2019/08/29 18:43:38 [INFO] signed certificate with serial number 25156972509303128085601524248922010370512108985[root@localhost ssl]# ll总用量 28-rw-r--r--. 1 root root 427 8月 29 18:34 ca-config.json-rw-r--r--. 1 root root 968 8月 29 18:43 ca.csr-rw-r--r--. 1 root root 256 8月 29 18:41 ca-csr.json-rw-------. 1 root root 1679 8月 29 18:43 ca-key.pem-rw-r--r--. 1 root root 1289 8月 29 18:43 ca.pem-rw-r--r--. 1 root root 567 8月 29 18:20 config.json-rw-r--r--. 1 root root 287 8月 29 18:23 csr.json[root@localhost ssl]#
