疑難排解 Rancher Server Kubernetes 叢集
本節描述如何疑難排解在 Kubernetes 叢集上安裝的 Rancher。
相關命名空間
大部分的疑難排解將在這 3 個命名空間中的物件上進行。
cattle-system-rancher部署和 pod。ingress-nginx- Ingress controller pod 和服務。cert-manager-cert-managerpod。
"default backend - 404"
許多事情可能導致 ingress-controller 無法將流量轉發到您的 rancher 實例。大多數時候這是由於錯誤的 SSL 設定。
需要檢查的事項
檢查 Rancher 是否正在執行
使用 kubectl 檢查 cattle-system 系統命名空間,查看 Rancher pod 是否處於 Running 狀態。
kubectl -n cattle-system get pods
NAME READY STATUS RESTARTS AGE
pod/rancher-784d94f59b-vgqzh 1/1 Running 0 10m
如果狀態不是 Running,請在 pod 上執行 describe 並檢查 Events。
kubectl -n cattle-system describe pod
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 11m default-scheduler Successfully assigned rancher-784d94f59b-vgqzh to localhost
Normal SuccessfulMountVolume 11m kubelet, localhost MountVolume.SetUp succeeded for volume "rancher-token-dj4mt"
Normal Pulling 11m kubelet, localhost pulling image "rancher/rancher:v2.0.4"
Normal Pulled 11m kubelet, localhost Successfully pulled image "rancher/rancher:v2.0.4"
Normal Created 11m kubelet, localhost Created container
Normal Started 11m kubelet, localhost Started container
檢查 Rancher 日誌
使用 kubectl 列出 pod。
kubectl -n cattle-system get pods
NAME READY STATUS RESTARTS AGE
pod/rancher-784d94f59b-vgqzh 1/1 Running 0 10m
使用 kubectl 和 pod 名稱列出 pod 的日誌。
kubectl -n cattle-system logs -f rancher-784d94f59b-vgqzh
憑證 CN 是 "Kubernetes Ingress Controller Fake Certificate"
使用瀏覽器檢查憑證詳細資訊。如果它顯示 Common Name 是 "Kubernetes Ingress Controller Fake Certificate",則讀取或簽發 SSL 憑證時可能出錯。
如果您使用 LetsEncrypt 簽發憑證,有時可能需要幾分鐘才能簽發憑證。
檢查 cert-manager 簽發的憑證問題(Rancher 產生或 LetsEncrypt)
cert-manager 有 3 個部分。
cert-managernamespace 中的cert-managerpod。cattle-systemnamespace 中的Issuer物件。cattle-systemnamespace 中的Certificate物件。
倒著查,對每個物件執行 kubectl describe 並檢查事件。您可以追蹤可能缺少的內容。
例如,Issuer 有問題:
kubectl -n cattle-system describe certificate
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning IssuerNotReady 18s (x23 over 19m) cert-manager Issuer rancher not ready
kubectl -n cattle-system describe issuer
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning ErrInitIssuer 19m (x12 over 19m) cert-manager Error initializing issuer: secret "tls-rancher" not found
Warning ErrGetKeyPair 9m (x16 over 19m) cert-manager Error getting keypair for CA issuer: secret "tls-rancher" not found
檢查您自己的 SSL 憑證問題
您的憑證直接應用於 cattle-system namespace 中的 Ingress 物件。
檢查 Ingress 物件的狀態,查看它是否已就緒。
kubectl -n cattle-system describe ingress
如果它已就緒但 SSL 仍然無法運作,您可能有格式錯誤的憑證或 secret。
檢查 nginx-ingress-controller 日誌。因為 nginx-ingress-controller 的 pod 中有多個容器,您需要指定容器的名稱。
kubectl -n ingress-nginx logs -f nginx-ingress-controller-rfjrq nginx-ingress-controller
...
W0705 23:04:58.240571 7 backend_ssl.go:49] error obtaining PEM from secret cattle-system/tls-rancher-ingress: error retrieving secret cattle-system/tls-rancher-ingress: secret cattle-system/tls-rancher-ingress was not found
No matches for kind "Issuer"
您選擇的 SSL 設定選項需要在安裝 Rancher 之前安裝 cert-manager,否則會顯示以下錯誤:
Error: validation failed: unable to recognize "": no matches for kind "Issuer" in version "certmanager.k8s.io/v1alpha1"
安裝 cert-manager 並嘗試重新安裝 Rancher。
Canal Pod 顯示 READY 2/3
此問題最常見的原因是節點之間的埠 8472/UDP 未開放。檢查您的本地防火牆、網路路由或安全群組。
一旦網路問題解決,canal pod 應該會逾時並重新啟動以建立其連線。
nginx-ingress-controller Pod 顯示 RESTARTS
此問題最常見的原因是 canal pod 無法建立覆蓋網路。請參閱 Canal Pod 顯示 READY 2/3 進行疑難排解。
Failed to dial to /var/run/docker.sock: ssh: rejected: administratively prohibited (open failed)
此錯誤的一些原因包括:
- 指定連線的使用者沒有存取 Docker socket 的權限。這可以透過登入主機並執行命令
docker ps來檢查:
$ ssh user@server
user@server$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES