我尝试配置新安装的 Lens IDE 以与我的远程集群(在远程服务器上、虚拟机上)配合使用,但遇到了一些错误,并且找不到针对这种情况的正确解释。
Lens 需要一个配置文件,我从集群中将其提供给它,并将其更改为
server: https://127.0.0.1:6443
到
server: https://
(远程服务器地址):
(为集群中虚拟机的 6443 分配中间端口)
之后在镜头中我得到了这个:
2021/06/14 22:55:13 http: proxy error: x509: certificate is valid for 10.43.0.1, 127.0.0.1, 192.168.1.122, not (address to the remote server)
我可以看到一些证书必须重新配置,但我对这件事绝对陌生。
这里是原始配置文件的完整内容:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0...
server: https://127.0.0.1:6443
name: default
contexts:
- context:
cluster: default
user: default
name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
user:
client-certificate-data: LS0...
client-key-data: LS0...
解决方案非常明显且简单。
k3s 必须将新 IP 添加到证书中。因为默认情况下,它只包含 localhost 和它运行的节点的 IP,如果您(像我一样)有某种机器(例如 lb 或专用防火墙),则该机器的 IP 必须是手动添加。
有两种方法可以做到:
curl -sfL https://get.k3s.io | sh -s - server --tls-san desired IP
sudo nano /etc/systemd/system/k3s.service
ExecStart=/usr/local/bin/k3s \ server \ '--tls-san' \ 'desired IP' \
sudo systemctl daemon-reload
附注不过,我在使用第二种方法时遇到了问题。
对于变体 2,还必须重新创建证书:
sudo k3s kubectl -n kube-system delete secrets/k3s-serving
sudo mv /var/lib/rancher/k3s/server/tls/dynamic-cert.json /tmp/dynamic-cert.json
sudo systemctl daemon-reload
sudo systemctl restart k3s