Kubernetes集群外网访问配置指南:TLS/SSL证书更新详解
背景说明
在云服务器上搭建的Kubernetes集群若使用内网IP,需通过外网(如Lens工具)访问时,必须将集群的外网IP或域名添加到TLS/SSL证书中。本文将为您详解证书更新全流程,助您轻松实现外网访问。
操作步骤
🌟 操作前必读
重要提醒
⚠️ 操作前务必备份原始证书文件!
cp -rp /etc/kubernetes /etc/kubernetes.bak
🔍 查看现有证书信息
- 进入证书目录:
cd /etc/kubernetes/pki
- 查看证书详情:
openssl x509 -in apiserver.crt -noout -text|grep -A 2 'Alternative' # 输出示例: X509v3 Subject Alternative Name: DNS:k8s-master, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, IP Address:10.96.0.1, IP Address:192.168.80.128
输出示例显示当前仅允许通过内网IP访问,若需域名访问需配置hosts指向该IP。
🔧 证书更新准备
- 备份证书(安全第一!):
cd /etc/kubernetes/pki mv apiserver.crt apiserver.crt.bak mv apiserver.key apiserver.key.bak
- 生成默认配置文件:
kubeadm config print init-defaults > /etc/kubernetes/kubeadm-config.yaml
✍️ 修改配置文件
- 编辑配置文件:
打开kubeadm-config.yaml
,在certSANs
字段中添加新域名或IP:
如果集群的配置文件中没有certSANs: - k8s.example.com # 新增域名 - 192.168.80.128 # 集群内网IP(若需保留内网访问) - 10.96.0.1 # 集群服务IP(必须保留!) # 保留原有默认域名 - kubernetes - kubernetes.default - kubernetes.default.svc - kubernetes.default.svc.cluster.local
certSANs
配置段,你可以直接加在类似下面的位置处:apiServer: certSANs: ....
🔄 重新生成证书
- 执行证书生成命令:
kubeadm init phase certs apiserver --config /etc/kubernetes/kubeadm-config.yaml
🔍 验证证书更新
- 再次查看证书详情:
openssl x509 -in apiserver.crt -noout -text|grep -A 2 'Alternative'
🔁 重启API服务
- 高可用集群:直接重启kube-apiserver进程,kubelet会自动拉起。
- 单节点集群:
# 通过移动yaml文件触发重启(业务低峰期操作!) mv /etc/kubernetes/manifests/kube-apiserver.yaml /root/ mv /root/kube-apiserver.yaml /etc/kubernetes/manifests
🌐 访问配置
更新kubeconfig文件中的server地址:
apiVersion: v1
clusters:
- cluster:
server: https://k8s.example.com:6443 # 替换为您的域名或IP
🎉 完成!
保存配置后,即可通过公网IP或域名访问集群。本地域名需配置hosts文件哦!
📌 小贴士:操作前请确保已全面测试,建议在非生产环境验证流程。
评论区