k3s&&rancher 轮换证书
-
参考网址
- https://mp.weixin.qq.com/s?__biz=MzkyNzM4Nzk1NQ==&mid=2247500723&idx=1&sn=64def8cd6ec7fd874440690f1f589a3a
- http://kingsd.top/2020/07/01/k3s-cert-rotary/
- https://www.cnblogs.com/databank/p/16334715.html
-
k3s证书过期
提示:k8s简化了安装过程,后续基础环境不在使用k3s而是已使用k8s
# 如果是k3s(k8s)提示证书过期,则先执行如下操作
# 如果集群证书没过期可以不用加 --insecure-skip-tls-verify=true 这个参数标识指不验证TLS
k3s kubectl --insecure-skip-tls-verify=true delete secret k3s-serving -n kube-system
# 删除k3s集群内的证书
kubectl delete secret k3s-serving -n kube-system
# 备份源文件
mkdir -p tlsbak
cp /var/lib/rancher/k3s/server/tls/** ./tlsbak -rf
rm /var/lib/rancher/k3s/server/tls/dynamic-cert.json
# 查看证书是否过期,或者直接从浏览器点击证书查看
openssl x509 -noout -dates -in server-ca.crt
rancher证书过期
# 删除rancher证书目录,或者移动备份
/data/vpclub/rancher-2.0/data/k3s/server/tls
# 两次重启rancher,第一次为重新生成证书,第二次为加载证书
# 查看rancher证书过期状态
curl -vvv https://ip:port
# 查看k8s的集群代理状态
kubectl get po -n cattle-system
# 查看cattle agent容器状态,具体根据rancher版本查看对应d容器
docker ps -a|grep cattle
# 查看cattle-agent日志以获得更多信息
docker logs -f <cattle-agent-container-name>
-
集群不可用恢复
# 删除 agentagent,具体的名称要使用kubectl get ns
kubectl -n cattle-system delete daemonset.apps/cattle-node-agent deployment.apps/cattle-cluster-agent
# 更新集群,全局,系统设置,server-url;非必要步骤
# 设置环境变量
RANCHERURL="https://192.168.0.10:8000"
# 集群ID
CLUSTERID="c-8dlc7"
# 在当前登录用户菜单下创建新的toke,用户,api&&keys。把Bearer Token记录下来
# Token
TOKEN="token-8kdfz:f4kgn4ptrq92wxkmqlzjhf9wntbxc4jpnnwq6spnv6mlhm76259wl6"
# 安装jq
yum install -y epel-release
yum install -y jq
# 验证证书
curl -s -H "Authorization: Bearer ${TOKEN}" "${RANCHERURL}/v3/clusterregistrationtokens?clusterId=${CLUSTERID}" | jq -r '.data[] | select(.name != "system") | .command'
# 此时返回新的导入连接
curl -s -k -H "Authorization: Bearer ${TOKEN}" "${RANCHERURL}/v3/clusterregistrationtokens?clusterId=${CLUSTERID}" | jq -r '.data[] | select(.name != "system") | .insecureCommand'
# 重新导入集群
curl --insecure -sfL https://192.168.0.10:8000/v3/import/sztcbkgpcffdvmrd8rn9qvd9flp595np5zcss6xljqk89jqkdx8rhf.yaml |k3s kubectl apply -f -
-
K3S其他注意事项
- 更换机器后,主机名重复不能加入集群解决办法
# 在node主机
cat /etc/rancher/node/password
# 在 control panel (master)
cat /var/lib/rancher/k3s/server/cred/node-passwd
# 将两边的密码保持一致,或者把某行删除
# 可能需要修改k3s.services的token
# 查看集群加入token
cat /var/lib/rancher/k3s/server/node-token
# 替换noded加入token
sed -i "s/<old-token>/<new-token>/g" /usr/lib/systemd/system/k3s.service
# 重新加载服务配置
systemctl daemon-reload
# 重启服务
systemctl restart k3s