|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
SUSE Rancher PrimeサーバーKubernetesクラスターのトラブルシューティング
このセクションでは、Kubernetesクラスター上でRancherのインストールをトラブルシューティングする方法について説明します。
関連するネームスペース
トラブルシューティングのほとんどは、これらの3つのネームスペース内のオブジェクトで行われます。
-
cattle-system-rancherデプロイメントとポッド。 -
traefik- Ingressコントローラーポッドとサービス。 -
cert-manager-cert-managerポッド。
"デフォルトバックエンド - 404"
いくつかの要因が、ingress-controllerがあなたのRancherインスタンスにトラフィックを転送しない原因となる可能性があります。ほとんどの場合、これは不適切なSSL設定が原因です。
確認すべき事項
Rancherが実行中か確認してください
`kubectl`を使用して`cattle-system`システムネームスペースを確認し、Rancherポッドが実行中の状態にあるかどうかを確認します。
kubectl -n cattle-system get pods NAME READY STATUS RESTARTS AGE pod/rancher-784d94f59b-vgqzh 1/1 Running 0 10m
状態が`Running`でない場合は、ポッドで`describe`を実行し、イベントを確認してください。
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`を使用してポッドのリストを表示します。
kubectl -n cattle-system get pods NAME READY STATUS RESTARTS AGE pod/rancher-784d94f59b-vgqzh 1/1 Running 0 10m
`kubectl`とポッド名を使用してポッドからのログをリストします。
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-managerポッドはcert-managerネームスペースにあります。 -
Issuerオブジェクトはcattle-systemネームスペースにあります。 -
Certificateオブジェクトはcattle-systemネームスペースにあります。
逆に作業を進め、各オブジェクトに対して 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 ネームスペースのIngressオブジェクトに直接適用されます。
Ingressオブジェクトのステータスを確認し、準備が整っているか確認してください。
kubectl -n cattle-system describe ingress
準備が整っていてもSSLがまだ機能していない場合、証明書またはシークレットが不正な可能性があります。
nginx-ingress-controllerのログを確認してください。nginx-ingress-controllerにはポッド内に複数のコンテナがあるため、コンテナの名前を指定する必要があります。
kubectl logs -n traefik traefik-6b94b8b688-bngw2 ... 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
「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 Podsは準備完了です 2/3
この問題の最も一般的な原因は、ノード間でポート8472/UDPが開いていないことです。ローカルファイアウォール、ネットワークルーティング、またはセキュリティグループを確認してください。
ネットワークの問題が解決されると、`canal`ポッドはタイムアウトし、接続を確立するために再起動します。
/var/run/docker.sockへのダイヤルに失敗しました: ssh: 拒否されました: 管理上の理由で禁止されています (オープンに失敗)
このエラーの原因には以下が含まれます:
-
接続するように指定されたユーザーは、Dockerソケットにアクセスする権限を持っていません。これは、ホストにログインしてコマンド`docker ps`を実行することで確認できます:
$ ssh user@server user@server$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
非rootユーザーとしてDockerを管理するの設定方法を参照してください。
-
RedHat/CentOSをオペレーティングシステムとして使用している場合、`root`ユーザーを使用してノードに接続することはできません。 Bugzilla #1527565のためです。別のユーザーを追加し、Dockerソケットにアクセスできるように設定する必要があります。 非rootユーザーとしてDockerを管理するの設定方法を参照してください。
-
SSHサーバーのバージョンは6.7以上ではありません。これは、SSHを介してDockerソケットに接続するために必要なソケット転送が機能するために必要です。これは、接続先のホストで`sshd -V`を使用するか、netcatを使用して確認できます:
$ nc xxx.xxx.xxx.xxx 22 SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.10
アドレス[xxx.xxx.xxx.xxx:xx]を使用してsshにダイヤルに失敗しました: ssh: ハンドシェイクに失敗しました: ssh: 認証できませんでした。試みた方法[none publickey]、サポートされている方法は残っていません。
`ssh_key_path`として指定されたキー ファイルは、ノードにアクセスするために正しくありません。ノードのために正しい`ssh_key_path`を指定したか、接続するために正しいユーザーを指定したかを再確認してください。
unix:///var/run/docker.sockでDockerデーモンに接続できません。Dockerデーモンは実行中ですか?
ノードは設定された`address`および`port`で到達できません。
エージェントがTLSエラーを報告しています。
Rancherを使用していると、fleet-agent、system-agent、または`cluster-agent`から、以下のようなエラーメッセージが表示されることがあります。
tls: failed to verify certificate: x509: failed to load system roots and no roots provided; readdirent /dev/null: not a directory
これは、Rancherが`agent-tls-mode`を`strict`に設定して構成されている場合に、`cacert`設定でcacertsが見つからなかったときに発生します。問題を解決するには、`agent-tls-mode`を`system-store`に設定するか、TLSシークレットの追加に記載されているようにRancherのCAをアップロードしてください。
新しいクラスターのデプロイメントが「エージェントのチェックインを待機中」で停止しています。
Rancherが`agent-tls-mode`を`strict`に設定している場合、新しいクラスターのプロビジョニングに失敗し、一般的な「エージェントのチェックインを待機中」というエラーメッセージが表示されることがあります。その根本的な原因は、上記のTLSエラーのケースと似ています。Rancherのエージェントは、Rancherが使用しているCAを特定できない(または、Rancherの証明書が指定された証明書機関によって実際に署名されていることを確認できない)ためです。
問題を解決するには、`agent-tls-mode`を`system-store`に設定するか、TLSシークレットの追加に記載されているようにRancherのCAをアップロードしてください。