Kubeadm: 飛行前チェックの実行がハングする

作成日 2019年04月01日  ·  22コメント  ·  ソース: kubernetes/kubeadm

これを提出する前に、kubeadmの問題でどのキーワードを検索しましたか?

プリフライト
下がる
kubeadm参加

バグレポート

バージョン

kubeadmバージョンkubeadm versionを使用):
kubeadmバージョン:&version.Info {メジャー: "1"、マイナー: "14"、GitVersion: "v1.14.0"、GitCommit: "641856db18352033a0d96dbc99153fa3b27298e5"、GitTreeState: "clean"、BuildDate: "2019-03-25T15:51: 21Z "、GoVersion:" go1.12.1 "、コンパイラ:" gc "、プラットフォーム:" linux / amd64 "}

環境

  • Kubernetesバージョンkubectl versionを使用):
    クライアントバージョン:version.Info {Major: "1"、Minor: "14"、GitVersion: "v1.14.0"、GitCommit: "641856db18352033a0d96dbc99153fa3b27298e5"、GitTreeState: "clean"、BuildDate: "2019-03-25T15:53: 57Z "、GoVersion:" go1.12.1 "、コンパイラ:" gc "、プラットフォーム:" linux / amd64 "}
  • クラウドプロバイダーまたはハードウェア構成
  • OS (例:/ etc / os-releaseから):
    NAME = "CentOS Linux"
    VERSION = "7(コア)"
    ID = "centos"
    ID_LIKE = "rhel fedora"
    VERSION_ID = "7"
    PRETTY_NAME = "CentOS Linux 7(コア)"
    ANSI_COLOR = "0; 31"
    CPE_NAME = "cpe:/ o: centos:centos :7"
    HOME_URL = " https://www.centos.org/ "
    BUG_REPORT_URL = " https://bugs.centos.org/ "

CENTOS_MANTISBT_PROJECT = "CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION = "7"
REDHAT_SUPPORT_PRODUCT = "centos"
REDHAT_SUPPORT_PRODUCT_VERSION = "7"

  • カーネル(例: uname -a ):
    Linux vm02.andrefagundes.org 3.10.0-957.5.1.el7.x86_64#1SMP金2月1日14:54:57UTC 2019 x86_64 x86_64 x86_64 GNU / Linux

  • その他

どうしたの?

コントロールプレーンを結合するときの問題。 プロセスは、飛行前チェックの実行というメッセージでハングします。 下記参照:

[ root @ vm02〜 ] #kubeadm joinvm10.andrefagundes。 org:6443 --token 07nh7g.v8p5fcs61fn3o2h4 --discovery-token-ca-cert-hash sha256:039a5f9229dafe39d4a51af6899c20adff1de5dda23f780ac9b896e95f95623a --experimental-control-control-plane --certificate
[プリフライト]プリフライトチェックの実行

あなたは何が起こると思っていましたか?

ノードが参加するか、エラーを示すメッセージが表示されることを期待していました。

それをどのように再現するか(可能な限り最小限かつ正確に)?

以下の公式ドキュメントに従っています。

https://kubernetes.io/docs/setup/independent/high-availability/#external -etcd-nodes

他に知っておくべきことはありますか?

いいえ。

kinsupport prioritawaiting-more-evidence sinetwork

最も参考になるコメント

何が起こっているかについての詳細を知るために、例えば--v=2kubeadm init/joinに電話することを忘れないでください。

全てのコメント22件

v10パラメーターを使用。

[ root @ vm03 etcd] #kubeadm joinvm10.andrefagundes。 org:6443 --token 07nh7g.v8p5fcs61fn3o2h4 --discovery-token-ca-cert-hash sha256:039a5f9229dafe39d4a51af6899c20adff1de5dda23f780ac9b896e95f95623a --experimental-control-plane-experimental-control-plane --certificate
I0401 00:34:08.531961 16893 join.go:367] [プリフライト] NodeNameが空であることがわかりました。 ノード名としてOSホスト名を使用
I0401 00:34:08.532014 16893 join.go:371] [プリフライト]がadvertiseAddressが空であることがわかりました。 デフォルトのインターフェースのIPアドレスをadvertiseAddressとして使用する
I0401 00:34:08.532048 16893 initconfiguration.go:105]が検出され、CRIソケットを使用しています:/var/run/dockershim.sock
I0401 00:34:08.532179 16893 interface.go:384] IPv4アドレスを持つデフォルトルートを探しています
I0401 00:34:08.532187 16893interface.go:389]デフォルトルートはインターフェイス "eth0"を通過します
I0401 00:34:08.532324 16893 interface.go:196]インターフェイスeth0がアップしています
I0401 00:34:08.532380 16893 interface.go:244]インターフェイス "eth0"には4つのアドレスがあります:[192.168.122.103 / 24 fe80 :: a3c0:2a34:91f2:e0eb / 64 fe80 :: 8439:c3eb:5848:c1f2 / 64 fe80 :: 4381:b4a5:5836:a0e1 / 64]。
I0401 00:34:08.532399 16893 interface.go:211]アドレス192.168.122.103/24を確認しています。
I0401 00:34:08.532407 16893 interface.go:218] IPが192.168.122.103を検出しました
I0401 00:34:08.532415 16893interface.go:250]インターフェイス "eth0"の有効なIPv4アドレス192.168.122.103が見つかりました。
I0401 00:34:08.532421 16893 interface.go:395]アクティブなIPが見つかりました192.168.122.103
[プリフライト]プリフライトチェックの実行
I0401 00:34:08.532495 16893 preflight.go:90] [プリフライト]一般的なチェックの実行
I0401 00:34:08.532539 16893checks.go:254]ディレクトリ/ etc / kubernetes / manifestsの存在と空を検証します
I0401 00:34:08.532570 16893checks.go:292]ファイル/etc/kubernetes/kubelet.confの存在を検証します
I0401 00:34:08.532579 16893checks.go:292]ファイル/etc/kubernetes/bootstrap-kubelet.confの存在を検証します
I0401 00:34:08.532586 16893checks.go:105]コンテナランタイムの検証
I0401 00:34:08.580885 16893checks.go:131]サービスが有効でアクティブかどうかを検証しています
I0401 00:34:08.638659 16893checks.go:341]ファイル/ proc / sys / net / bridge / bridge-nf-call-iptablesの内容を検証しています
I0401 00:34:08.638724 16893checks.go:341]ファイル/ proc / sys / net / ipv4 / ip_forwardの内容を検証しています
I0401 00:34:08.638755 16893checks.go:653]スワップが有効かどうかを検証する
I0401 00:34:08.638788 16893checks.go:382]実行可能IPの存在を検証します
I0401 00:34:08.638809 16893checks.go:382]実行可能iptablesの存在を検証します
I0401 00:34:08.638824 16893checks.go:382]実行可能マウントの存在を検証します
I0401 00:34:08.638837 16893checks.go:382]実行可能nsenterの存在を検証します
I0401 00:34:08.638849 16893checks.go:382]実行可能ebtablesの存在を検証します
I0401 00:34:08.638860 16893checks.go:382]実行可能なethtoolの存在を検証します
I0401 00:34:08.638871 16893checks.go:382]実行可能なsocatの存在を検証します
I0401 00:34:08.638883 16893checks.go:382]実行可能ファイルtcの存在を検証します
I0401 00:34:08.638894 16893checks.go:382]実行可能タッチの存在を検証します
I0401 00:34:08.638914 16893checks.go:524]すべてのチェックを実行
I0401 00:34:08.664826 16893checks.go:412]指定されたノード名がnet.LookupHostを使用して到達可能かどうかをチェックします
I0401 00:34:08.665583 16893checks.go:622] kubeletバージョンの検証
I0401 00:34:08.709573 16893checks.go:131]サービスが有効でアクティブかどうかを検証しています
I0401 00:34:08.716270 16893checks.go:209]ポート10250の可用性を検証しています
I0401 00:34:08.716418 16893checks.go:439]接続タイプがプロキシ経由か直接かを検証します
I0401 00:34:08.716444 16893 join.go:427] [プリフライト] cluster-infoの検出
I0401 00:34:08.716498 16893 token.go :200] [検出] APIサーバー "vm10.andrefagundes。org:6443"に接続しようとしています
I0401 00:34:08.716961 16893 token.go:75] [discovery]クラスター情報検出クライアントを作成し、「 https://vm10.andrefagundes.org:6443 」から情報を要求しました
I0401 00:34:08.717031 16893 round_trippers.go:419] curl -k -v -XGET -H "Accept:application / json、 / " -H "User-Agent:kubeadm / v1.14.0(linux / amd64)kubernetes / 641856d "' https://vm10.andrefagundes.org:6443 / api / v1 / namespaces / kube-public / configmaps / cluster-info'
I0401 00:34:08.722405 16893 round_trippers.go:438] GET https://vm10.andrefagundes.org:6443 / api / v1 / namespaces / kube-public / configmaps / cluster-info 4035ミリ秒で禁止
I0401 00:34:08.722423 16893 round_trippers.go:444]応答ヘッダー:
I0401 00:34:08.722432 16893 round_trippers.go:447]コンテンツタイプ:application / json
I0401 00:34:08.722441 16893 round_trippers.go:447] X-Content-Type-Options:nosniff
I0401 00:34:08.722450 16893 round_trippers.go:447]コンテンツ-長さ:321
I0401 00:34:08.722458 16893 round_trippers.go:447]日付:2019年4月1日月曜日03:34:08 GMT
I0401 00:34:08.722497 16893 request.go:942]応答本文:{"kind": "Status"、 "apiVersion": "v1"、 "metadata":{}、 "status": "Failure"、 "message ":" configmaps \ "cluster-info \"は禁止されています:ユーザー\ " system:anonymous \ "は名前空間\ "kube-public \" "のAPIグループ\" \ "のリソース\" configmaps \ "を取得できません"、 " reason ":" Forbidden "、" details ":{" name ":" cluster-info "、" kind ":" configmaps "}、" code ":403}
I0401 00:34:08.722937 16893 token.go:83] [検出]クラスター情報の要求に失敗しました。再試行します:[configmaps "cluster-info"は禁止されています:ユーザー " system:anonymous "はAPIでリソース "configmaps"を取得できません名前空間 "kube-public"のグループ ""]

別の情報... vm10.andrefagundes.orgは、コントロールプレーンの前にあるHaproxyです。

私にはネットワークの問題のようです。
この参加ノードがLBのポート6443に接続していて、vm10.andrefagundes.orgを解決できることを確認しますか?

はい、vm10もコントロールプレーンを指すように変更しました。 コントロールプレーンのトラフィックがTCDUMPで監視されているのを見ました。

kubeletログに未解決のエラーが表示されていますか?

ログにいくつかのエラーがあります。 また、クラスターを数回再インストールしようとしましたが、毎回異なるエラーが発生しました。 私はあきらめています。 ケースを閉じることができます。 ありがとう!!

単一のコントロールプレーンノードといくつかのワーカーノードの作成は機能しますか、それとも追加のコントロールプレーンノードを結合するときにのみ問題が発生しますか?

ユーザー " system:anonymous "は、名前空間 "kube-public" "、" reason ":" Forbidden "、" details ":{" name ":" cluster-info "、のAPIグループ" "のリソース" configmaps "を取得できません"kind": "configmaps"}、 "code":403

kubeadminitがcluster-infoを適切に作成/構成していないようです
kubeadmの初期化ログを共有できますか?

コマンド「kubeadmjoin ...」を実行した後も同じエラーが発生します:飛行前チェックの実行がスタックしました。 私はそれを処理する考えがありません。

私も同じ問題を抱えていました。 マスターを再起動する必要があり、その後、ノードで「kubeadmjoin ...」コマンドを再度実行するとうまくいきました。

kubeadm v1.15でも同じ問題が発生しましたが、リブートマスターが機能しません

kubeadm v1.15でも同じ問題が発生しましたが、リブートマスターが機能しません

kubelet&kubeadmv1.13.1にフォールバックしてこの問題を修正しました

何が起こっているかについての詳細を知るために、例えば--v=2kubeadm init/joinに電話することを忘れないでください。

同じ問題にぶつかりましたが、問題は、キープアライブデーモンとhaproxyデーモンが誤って構成されていて、ハングマスターノードがAPIサービスVIPを介してクラスターに参加できないようにするネットワーク接続に起因していました。

--v = 2でkubeadminit / joinを実行することが、それを解決する方法であったことを指摘する価値があります

何が起こっているかについての詳細を知るために、例えば--v=2kubeadm init/joinに電話することを忘れないでください。

kubeadm v1.15

kubeadm join .. --v = 2

I0802 11:47:31.027812 359 token.go:202] [検出] APIサーバー ""への接続に失敗しました:トークンID "r5uyqk"がこのクラスターに対して無効であるか、有効期限が切れています。 コントロールプレーンノードで「kubeadmtokencreate」を使用して、新しい有効なトークンを作成します

kubeadminitフェーズupload-certs--upload-certs
kubeadmトークンの作成

その後、kubeadmが成功に参加します

私の場合、マスターノードのファイアウォールを停止することでノードに正常に参加できました。

systemctl stop firewall

私の場合、マスターノードのファイアウォールを停止することでノードに正常に参加できました。

systemctl stop firewall

これは魅力のように機能しました。
[ root @ localhost〜 ] #kubeadm join 192.168.8.128:6443 --token 38lhr8.kxi5uy8aoy71dj17 --discovery-token-ca-cert-hash sha256:a12c805b8d98f42a256486d27e87463e22aaba190ab8f5bdce89bbb843fca983
[プリフライト]プリフライトチェックの実行
[警告IsDockerSystemdCheck]:Dockercgroupドライバーとして「cgroupfs」が検出されました。 推奨されるドライバーは「systemd」です。 https://kubernetes.io/docs/setup/cri/のガイドに従ってください
[警告SystemVerification]:このDockerバージョンは、検証済みバージョンのリストに含まれていません:19.03.1。 最新の検証済みバージョン:18.09
[プリフライト]クラスターから構成を読み取る...
[プリフライト]参考:この設定ファイルは、「kubectl -n kube-system get cmkubeadm-config-oyaml」で確認できます。
[kubelet-start] kube-system名前空間の「kubelet-config-1.14」ConfigMapからkubeletの構成をダウンロードしています
[kubelet-start]ファイル「/var/lib/kubelet/config.yaml」へのkubelet設定の書き込み
[kubelet-start]フラグ付きのkubelet環境ファイルをファイル「/var/lib/kubelet/kubeadm-flags.env」に書き込んでいます
[kubelet-start] kubeletサービスのアクティブ化
[kubelet-start] kubeletがTLSブートストラップを実行するのを待っています...

このノードはクラスターに参加しています:

  • 証明書署名要求がapiserverに送信され、応答が受信されました。
  • Kubeletには、新しい安全な接続の詳細が通知されました。

コントロールプレーンで「kubectlgetnodes」を実行して、このノードがクラスターに参加することを確認します。

OPのログをもう一度見ると、これはプリフライトの「ハング」ではなく、cluster-info構成マップにアクセスできません。これは、「init」の「boostrap-token」フェーズで発生する唯一の方法です。スキップされます。

後のレポートを見ると、バグではなく「サポート」アイテムに該当するネットワークと期限切れのトークンの問題があります。

/トリアージサポート
質問がある場合は、k8s slackでstackoverflow、reddit、または#kubeadmを試してください。

本当のバグを見つけたら、新しい問題を開いてください。

私の場合、マスターノードのファイアウォールを停止することでノードに正常に参加できました。

systemctl stop firewall

systemctl stop Firewalld

トラフィックがマスターノードに接続できなかったことがわかりました。

sgにルールを追加すると問題が解決しました

コマンド「kubeadmjoin ...」を実行した後も同じエラーが発生します:飛行前チェックの実行がスタックしました。 私はそれを処理する考えがありません。

解決策は見つかりましたか?

トラフィックがマスターノードに接続できなかったことがわかりました。

sgにルールを追加すると問題が解決しました

どのインバウンドポートを許可しましたか?

このページは役に立ちましたか?
0 / 5 - 0 評価