問題タブ [kubelet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - Kubelet が起動しない: 終了ステータスでクラッシュする: 255/n/a
Ubuntu 16.04 LTS、Docker 17.12.1、Kubernetes 1.10.0
Kubelet が起動しない:
6 月 22 日 06:45:57 dev-master systemd[1]: kubelet.service: メイン プロセスが終了しました、コード = 終了、ステータス = 255/n/a
6 月 22 日 06:45:57 dev-master systemd[1]: kubelet.service: 結果 'exit-code' で失敗しました。
注: v1.9.1 では問題ありません
ログ:
kubernetes - kubernetes ポッドに hyperkube イメージをデプロイする方法は?
Kubernetes ポッドに hyperkube をデプロイしたいと考えています。
すでに Kubernetes クラスターがあります。Docker Hub でいくつかの Docker イメージを試しました。しかし、すべてのポッドがいくつかの問題で失敗しています。
Kubernetes ポッドに hyperkube イメージをデプロイできません。
kubernetes - OpenStack ボリュームを Kubernetes 静的ポッドに接続する方法は?
kubelet
OpenStack クラウドで v1.10.3 を使用して単一のマスター ノードをブートストラップし、ポッドとして k8s の必需品用に「自己ホスト型」の単一の etcd ノードを使用したいとします。
コンポーネントを開始する前にkube-apiserver
、稼働中の etcd インスタンスが必要ですが、もちろん、クラスターの準備がまったく整っていないため、単に実行しkubectl apply -f
たり、マニフェストをフォルダーに配置したりすることはできません。addon-manager
API サーバーの準備ができていなくても、kubelet でポッドを開始する方法があります。これは静的ポッドと呼ばれます (yaml Pod 定義は通常 にあります/etc/kubernetes/manifests/
)。そして、それは、apiserver、スケジューラー、コントローラーマネージャー、etcd 自体などの「システム」ポッドを開始する方法です。以前はノードからディレクトリをマウントして etcd データを保持していましたが、今は OpenStack ブロックストレージ リソースを使用したいと考えています。ここで質問があります: OpenStack cinder ボリュームをアタッチ、マウント、使用して、静的ポッドから etcd データを永続化するにはどうすればよいですか?
今日学んだように、OpenStack ボリュームをアタッチするには少なくとも 3 つの方法があります。
ボリュームを管理するかなり新しい方法であるCSI OpenStack cinder ドライバー。また、静的ポッド マニフェストではポッドのみを宣言でき、PVC/PV などの他のリソースは宣言できないため、CSI ドキュメントには次のように記載されているため、要件に適合しません。
csi ボリューム タイプは Pod からの直接参照をサポートしておらず、PersistentVolumeClaim オブジェクトを介してのみ Pod で参照できます。
ボリュームをアタッチする前の csi の方法は次のとおりです: FlexVolume。
FlexVolume ドライバー バイナリは、各ノード (場合によってはマスター) の事前定義されたボリューム プラグイン パスにインストールする必要があります。
OK、これらのバイナリをノードに追加し (この DS を参照として使用)、次のようにポッド マニフェストにボリュームを追加しました。
kubelet ログから次のエラーを受け取りました。
driver-call.go:258] マウント コマンドが失敗しました、ステータス: 失敗、理由: ボリューム 2c21311b-7329-4cf4-8230-f3ce2f23cf1a が利用できません
この Cinder ボリュームは既に CoreOS コンピューティング インスタンスに接続されていると確信しているため、これは奇妙です。
- そして、私が知っているボリュームをマウントする最後の方法は、cinder in-tree サポートです。これは、少なくとも k8s 1.5
--cloud-provider=openstack
以降で機能し、--cloud-config
kubelet オプション以外に特別な要件はありません。
静的ポッドのボリュームを宣言するための yaml マニフェスト パーツは次のようになります。
残念ながら、この方法を試すと、kubelet から次のエラーが表示されます。
ボリュームは、ボリュームのノードのボリューム ステータスの VolumesInUse のリストに追加されていません。
意味がわかりませんが、ノードのステータスを更新できなかったようです (もちろん、まだ etcd と apiserver はありません)。悲しいことに、それは私にとって最も有望な選択肢でした。
OpenStack cinder ボリュームを kubelet のみに依存する静的ポッドにアタッチする他の方法はありますか (クラスターが実際には準備ができていない場合)? 私が見逃しているクラウドがエラーを上回ったというアイデアはありますか?