我这边有好几个集群(分别用二进制方式部署、kubeadm部署),默认用的CA证书只有一年,我最近在排查一个请求api超时问题时突然发现所有集群的ca证书过期(它只有1年),但是其他组件正常运行(签署了10年)。
K8S版本:1.14.X
在网页里如果证书过期会有安全提示,那用ca签署后的组件证书和ca本身没有关系吗?
如果我拿apiserver或是etcd启动时使用的证书来请求API,会被拒绝unauthorized
但是为什么组件之间能正常通信?
我发现每个csr.json里面有好多-hostname,如果配置错集群通信会有问题,但不知道它的作用。
for instance in node0 node1; do
cat > ${instance}-csr.json <<EOF
{
"CN": "system:node:${instance}", <<<< 这里
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "TH",
"O": "system:nodes",
"OU": "Kubernetes The Hard Way",
"ST": "china"
}
]
}
EOF
INTERNAL_IP=${NODE_IP[${instance}]}
echo "\n\nGenerating Key and Cert for "${INTERNAL_IP}" :: "${instance}
cfssl gencert \
-ca=ca.pem \
-ca-key=ca-key.pem \
-config=ca-config.json \
-hostname=${instance},${INTERNAL_IP} \ >>> 还有这里
-profile=kubernetes \
${instance}-csr.json | cfssljson -bare ${instance}
mv ${instance}-key.pem ${instance}.key
mv ${instance}.pem ${instance}.crt
done
}
你的证书,绑定了具体的
节点/ip
,所以只能授权的节点发起才认。你的答案