目的
相對 IP 地址而言,域名的好處就是易記和靈活性高,即便服務器 IP 改動,只需要改動對應 DNS 解析記錄即可。
然而默認地,當連接 K3s 集群域名地址時,你會遇到以下類似錯誤(以 example.org
為例):
1E0131 12:38:27.974601 45714 memcache.go:265] "Unhandled Error" err="couldn't get current server API group list: Get \"https://example.org:6443/api?timeout=32s\": tls: failed to verify certificate: x509: certificate is valid for archlinux, kubernetes, kubernetes.default, kubernetes.default.svc, kubernetes.default.svc.cluster.local, localhost, not example.org"
2Unable to connect to the server: tls: failed to verify certificate: x509: certificate is valid for archlinux, kubernetes, kubernetes.default, kubernetes.default.svc, kubernetes.default.svc.cluster.local, localhost, not example.org
解決方案
解決的方法很簡單,就是將域名添加為額外的 TLS 證書主題別名。
於創建集群時,指定 --tls-san
參數
1curl -sfL https://get.k3s.io | sh -s -- --tls-san="example.org"
添加 --tls-san
到現有的集群
編輯 /etc/systemd/system/k3s.service
,並將 --tls-san
追加到 ExecStart
命令:
1sudo vim /etc/systemd/system/k3s.service
1ExecStart=/usr/local/bin/k3s \
2 server \
3 '--tls-san=example.org' \
接著重啟 K3s 即可。
1sudo systemctl daemon-reload
2
3sudo systemctl restart k3s