kubelet的tls证书理解记录

kulelet如果有token的方式做认证,只需要生成一次bootstrap-kubeconfig就可以了 生成的方式

BOOTSTRAP_TOKEN='your_token'
HOST_NAME='node_ip'
kubectl config set-cluster kubernetes \
  --certificate-authority=/etc/kubernetes/pki/ca.crt \
  --embed-certs=true \
  --server=https://apiserver:port \
  --kubeconfig=bootstrap.kubeconfig
kubectl config set-credentials kubelet-bootstrap \
  --token=${BOOTSTRAP_TOKEN} \
  --kubeconfig=bootstrap.kubeconfig
kubectl config set-context default \
  --cluster=kubernetes \
  --user=kubelet-bootstrap \
  --kubeconfig=bootstrap.kubeconfig
kubectl config use-context default --kubeconfig=bootstrap.kubeconfig
mv bootstrap.kubeconfig /etc/kubernetes/

token怎么来,我建议直接用kubeadm做一个出来

kubeadm token create --print-join-command --ttl 0

kubelet启动之后会向apiserver请求认证,如果认证通过,会自动生成一个kubelet的配置kubelet.conf,如果kubelet没有指定这两个参数

tlsCertFile
tlsPrivateKeyFile

默认会自动生成一对,可是如果apiserver配置有问题,可能遇到下面的问题

kubectl logs xxxx
x509: certificate signed by unknown authority
cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs

现象就是apiserver上发给kueblet一个请求,tls握手和认证失败 如此,你可能需要自己生成一对证书私钥来显式指定kubelet的tsl参数

#kubelet-csr.json
{
  "CN": "system:node:x.x.x.x",
  "hosts": [
        "x.x.x.x",
        "localhost",
	"127.0.0.1"
  ],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "O": "system:nodes"
    }
  ]
}
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=server kubelet-csr.json | cfssljson -bare kubelet-base

把新作出来的这样指定kubelet的配置

--tlsCertFile=kubelet-base.pem
--tlsPrivateKeyFile=kubelet-base-key.pem

转载于:https://my.oschina.net/xueyi28/blog/3060661

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值