この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

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-agentsystem-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をアップロードしてください。