由於前一篇 Rancher HA 高可用安裝步驟 內容過長,後續相關內容在這裏補充。
下面問題標記
[前]
的需要在安裝 Rancher HA 前提前考慮。
1. [前]域名問題
假設以下服務器使用的 hostname 爲
rancher.mybatis.io
在前面寫到了最後安裝 Rancher 時要設置 hostname,在沒有本地 DNS 服務器的情況下,需要修改本地 hosts 來映射域名。
如果只是修改訪問 Rancher 的客戶端電腦的 hosts 配置,雖然能打開 Rancher 了,但是仍然存在很多問題。
1.1 無法使用 Launch kubectl
在如下集羣界面點擊【Launch kubectl】
會彈出如下窗口:
這裏可以看到 Closed Code: 1006,在 Devtools 的 Network 可以看到 404 錯誤:
Request URL: wss://rancher.mybatis.io/v3/clusters/local?shell=true
Request Method: GET
Status Code: 404 Not Found
經過搜索在 https://qiita.com/suzukihi724/items/00b167c6f5f2ddeca718 發現了線索。
1.2 cattle-xxx-agent CrashLoopBackOff
直接在集羣節點通過 kubectl get pods --all-namespaces
獲取 pod 狀態:
NAMESPACE NAME READY STATUS RESTARTS AGE
cattle-system cattle-cluster-agent-5d6866db8-69nvc 0/1 CrashLoopBackOff 180 15h
cattle-system cattle-node-agent-4kkm4 0/1 CrashLoopBackOff 180 15h
cattle-system cattle-node-agent-ppwg4 0/1 CrashLoopBackOff 180 15h
cattle-system cattle-node-agent-qxm25 0/1 CrashLoopBackOff 180 15h
可以看到上面的 cattle agent Crash,查看上述有問題的 cluster 日誌:
$ kubectl -n cattle-system logs cattle-cluster-agent-5d6866db8-69nvc
INFO: Environment: CATTLE_ADDRESS=10.42.0.6 CATTLE_CA_CHECKSUM=cc83e629bc77fdff27d1f160ab48c40af8e8490e06a291d798039b92a6e5dd2b CATTLE_CLUSTER=true CATTLE_INTERNAL_ADDRESS= CATTLE_K8S_MANAGED=true CATTLE_NODE_NAME=cattle-cluster-agent-5d6866db8-69nvc CATTLE_SERVER=https://rancher.mybatis.io
INFO: Using resolv.conf: nameserver 10.43.0.10 search cattle-system.svc.cluster.local svc.cluster.local cluster.local options ndots:5
ERROR: https://rancher.mybatis.io/ping is not accessible (The requested URL returned error: 404 Not Found)
查看 node 日誌:
$ kubectl -n cattle-system logs cattle-node-agent-4kkm4
INFO: Environment: CATTLE_ADDRESS=10.10.1.238 CATTLE_AGENT_CONNECT=true CATTLE_CA_CHECKSUM=cc83e629bc77fdff27d1f160ab48c40af8e8490e06a291d798039b92a6e5dd2b CATTLE_CLUSTER=false CATTLE_INTERNAL_ADDRESS= CATTLE_K8S_MANAGED=true CATTLE_NODE_NAME=10.10.1.238 CATTLE_SERVER=https://rancher.mybatis.io
INFO: Using resolv.conf: nameserver 114.114.114.114 nameserver 8.8.8.8
ERROR: https://rancher.mybatis.io/ping is not accessible (The requested URL returned error: 404 Not Found)
問題很明顯,雖然客戶端配置了 hosts,但是集羣節點並不知道 rancher.mybatis.io
是哪個機器。
1.3 解決方案
- 在所有節點配置
/etc/hosts
,先讓所有節點都能認識rancher.mybatis.io
- 最關鍵的部分,參考:https://www.jianshu.com/p/5c13ebfd9947,爲Agent Pod添加主機別名(/etc/hosts)
# 配置 cattle-cluster-agent kubectl -n cattle-system patch deployments cattle-cluster-agent --patch '{ "spec": { "template": { "spec": { "hostAliases": [ { "hostnames": [ "rancher.mybatis.io" ], "ip": "負載均衡IP" } ] } } } }' # 配置 cattle-node-agent kubectl -n cattle-system patch daemonsets cattle-node-agent --patch '{ "spec": { "template": { "spec": { "hostAliases": [ { "hostnames": [ "rancher.mybatis.io" ], "ip": "負載均衡IP" } ] } } } }'