从外部访问 k3s 集群#
当你用默认设置创建 k3s 集群时,只能在本节点内部访问。
如果将 /etc/rancher/k3s/k3s.yaml kubeconfig 文件拷贝到其他主机并导入,尝试访问时会遇到如下报错:
| 1
2
 | ❯ kubectl get node
Unable to connect to the server: x509: certificate is valid for 10.0.140.68, 10.43.0.1, 127.0.0.1, not xxx.xxx.xxx.xxx
 | 
要让 k3s 集群支持外部访问,可以在创建集群时加上如下参数:
| 1
 | --tls-san value                            (listener) Add additional hostname or IP as a Subject Alternative Name in the TLS cert
 | 
该参数详情见 https://rancher.com/docs/k3s/latest/en/installation/install-options/#registration-options-for-the-k3s-server
安装命令示例:
| 1
 | curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--tls-san <your node public ip address>" sh -
 | 
然后将 /etc/rancher/k3s/k3s.yaml 的内容复制到本地,并把 server 的 IP 地址从 127.0.0.1 改为你实际要访问的地址。
再次获取集群信息时就可以正常访问了。
| 1
2
3
 | ❯ kubectl get node
NAME         STATUS   ROLES                  AGE   VERSION
wenhan-dev   Ready    control-plane,master   61s   v1.22.7+k3s1
 |