Kubernetes 证书
# 查看证书 过期时间
$ cd /etc/kubernetes/pki
$ openssl x509 -in apiserver.crt -text -noout
Validity
Not Before: Feb 7 12:25:44 2020 GMT
Not After : Feb 6 12:25:44 2021 GMT
发现:时间有效期为一年。
现在要延长有效期。
- 方案1 kubeadm 命令手动更新。
$ cd /workspace/kubernetes/configs/
$ kubeadm alpha certs renew all --config=./kubeadm-config.yaml
- 方案2 go语言重新编译 kubeadm 修改为10年。
需要准备的证书:¶
- admin-key.pem
- admin.pem
- ca-key.pem
- ca.pem
- kube-proxy-key.pem
- kube-proxy.pem
- kubernetes-key.pem
- kubernetes.pem
使用证书的组件如下:¶
- etcd:使用 ca.pem、kubernetes-key.pem、kubernetes.pem
- kube-apiserver:使用 ca.pem、kubernetes-key.pem、kubernetes.pem
- kubelet:使用 ca.pem
- kube-proxy:使用 ca.pem、kube-proxy-key.pem、kube-proxy.pem
- kubectl:使用 ca.pem、admin-key.pem、admin.pem
- kube-controller-manager:使用 ca-key.pem、ca.pem
草稿¶
创建 kubernetes 证书¶
cat << EOF | tee kubernetes-csr.json
{
"CN": "kubernetes",
"hosts": [
"127.0.0.1",
"192.168.10.100",
"192.168.10.101",
"192.168.10.102",
"10.254.0.1",
"centos-master-01",
"centos-master-02",
"kubernetes",
"kubernetes.default",
"kubernetes.default.svc",
"kubernetes.default.svc.cluster",
"kubernetes.default.svc.cluster.local"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "BeiJing",
"L": "BeiJing",
"O": "k8s",
"OU": "System"
}
]
}
EOF
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kubernetes-csr.json | cfssljson -bare kubernetes
创建 admin 证书¶
cat << EOF | tee admin-csr.json
{
"CN": "admin",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "BeiJing",
"L": "BeiJing",
"O": "system:masters",
"OU": "System"
}
]
}
EOF
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin
创建 kube-proxy 证书¶
cat << EOF | tee kube-proxy-csr.json
{
"CN": "system:kube-proxy",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "BeiJing",
"L": "BeiJing",
"O": "k8s",
"OU": "System"
}
]
}
EOF
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-proxy-csr.json | cfssljson -bare kube-proxy