关于证书在K8S集群中的作用?

開開新新 发表于: 2021-03-13   最后更新时间: 2021-03-15 14:33:24   1,541 游览

我这边有好几个集群(分别用二进制方式部署、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
}
发表于 2021-03-13
添加评论

你的证书,绑定了具体的节点/ip,所以只能授权的节点发起才认。

你的答案

查看kubernetes相关的其他问题或提一个您自己的问题