問題タブ [kubernetes]
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 - ベアメタル/プライベート クラウド上の Kubernetes ストレージ
2 つのプライベート クラウド サーバーで 2 ノード (マスター ミニオン) セットアップの Kubernetes から始めたところです。私はそれをインストールし、基本的な構成を行い、マスターからミニオンまでいくつかの単純なポッド/サービスを実行しました。
私の質問は:
Google Cloud を使用していない場合、ポッドで永続ストレージを使用するにはどうすればよいですか?
最初のテストでは、ゴースト ブログ ポッドを実行しましたが、ポッドを破棄すると変更が失われます。ポッドにボリュームを追加しようとしましたが、実際には、GC を使用していないときの方法に関するドキュメントを見つけることができません。
私の試み:
これを見つけました: Kubernetes での MySQL と WordPress の永続的なインストール
テスト用インストールにストレージ (NFS?) を追加する方法がわかりません。
rabbitmq - Kubernetes レプリケーション コントローラーを使用してメッセージ ベースのサービスをレプリケートする方法
通常、メッセージパッシングを使用して、分離されたサービスにメッセージを送信します。これにより、(たとえば RabbitMQ の AMQP を使用して) ブローカーのルーティング機能を使用して、正しいサービスにフィードする正しいキューにメッセージをディスパッチできるため、サービス検出は問題になりません。負荷分散もメッセージ ブローカによって処理されます。
Kubernetes に入ります。
サービスのレプリケーションと失敗したサービスの再生成について話すときに通常提示される使用例は、クライアントが http などのアクティブなプロトコルを使用してサービスに接続する場合です (このサービスがリクエストを非同期的に処理する場合でも)。このコンテキストでは、サービスのグループとそれらの間の負荷を分散するための単一のエントリ ポイントを管理するレプリケーション コントローラーを用意するのが自然に適しています。
ローリング デプロイなど、kubernetes の直感的なコンセプトは気に入っていますが、http インターフェースを持たないこの野獣をどのように制御すればよいのでしょうか。
更新: メッセージ ブローカーのクラスターをセットアップしようとしていません。メッセージコンシューマをサービスとして見ています。サービス クライアントはサービスに直接接続せず、メッセージ ブローカーにメッセージを送信します。メッセージ ブローカは、ある意味でロード バランサとして機能し、サブスクライブされたキュー コンシューマにメッセージをディスパッチします。これらのコンシューマーがサービスを実装します。
私の質問は、デモのほとんどの使用パターンが http 経由で呼び出されるサービスを処理し、kubernetes がこれらのサービスのサービス プロキシとレプリケーション コントローラーを作成するためにうまく機能しているという事実に引き寄せられます。HTTP インターフェイス自体を持たず、ローリング アップデートのすべての利点と最小限のインスタンスを備えた、私の種類のサービス用のレプリケーション コントローラーを作成することは可能ですか?
kubernetes - インスタンスの停止と開始後に Amazon kubernetes クラスターに再接続する方法を教えてください。
Amazon EC2 でcluster/kube-up.shを使用して kubernetes を試すためのクラスターを作成します。それから、使用しないときはお金を節約するために停止します。次回、Amazon でマスターとミニオンのインスタンスを起動すると、EC2 が新しいパブリック IP をインスタンスに割り当てるため、*~/.kube/config にはクラスター マスターの古い IP が含まれます。
現在、Elastic IP をcluster/kube-up.shに提供して、インスタンスの停止と開始の間で一貫した IP が適切に設定されるようにする方法を見つけていません。また、古い IP の~/.kube/configに証明書があるため、IP を手動で変更しても機能しません。
Running: ./cluster/../cluster/aws/../../cluster/../_output/dockerized/bin/darwin/amd64/kubectl get pods --context=aws_kubernetes
Error: Get https://52.24.72.124/api/v1beta1/pods?namespace=default: x509: certificate is valid for 54.149.120.248, not 52.24.72.124
再起動後に別の IP で実行されている同じ kubernetes マスターに対してkubectlにクエリを作成させるにはどうすればよいですか?
node.js - MongoDb ドライバーを使用して node.js から rs.initiate() および rs.Add() を呼び出すことはできますか?
Docker と Kubernetes を使用しているときに、サイドカーを介して MongoDb レプリカ セットを設定するプロセスを自動化しようとしています。
上記のセットアップはそれほど重要ではありません。要するに、node.js アプリケーションからmongo レプリカ セット コマンド (例: rs.initiate()
、rs.add('anotherserver')
、rs.conf()
など)を呼び出せるようにする必要があるということです。rs.reconfig()
注: ノード アプリケーションからのものである必要はありません。誰かが同じことを行う別の方法を知っている場合は、考えを共有してください。
更新:私はこれを機能させることができ、他の人が使用できるようにサイドカーをオープンソースにしました。
amazon-ec2 - AWS EC2 上のパブリック Kubernetes サービスへのトラフィックのルーティング
Amazon EC2 の CoreOS インスタンスで kubernetes (0.15) クラスターを実行しています。
パブリックにアクセスできるようにするサービスを作成するとき、現在、EC2 インスタンスのプライベート IP アドレスを次のようにサービスの説明に追加しています。
次に、これらの IP を ELB ロード バランサーに追加し、トラフィックをそれらのマシンにルーティングします。
しかし、これが機能するには、実行中のすべてのサービスでクラスター内のすべてのマシンのリストを維持する必要がありますが、これは間違っていると感じています。
これを解決するために現在推奨されている方法は何ですか?
- サービスの PortalIP がわかっている場合、AWS VPC インフラストラクチャでルーティング可能にする方法はありますか?
- 外部の静的 (エラスティック) IP をサービスに割り当ててルーティングすることはできますか?
(私は知っcreateExternalLoadBalancer
ていますが、それはまだ AWS をサポートしていないようです)
docker - Ubuntu クラスターのセットアップ後に Pod に ping を実行できない
最新の手順 (2015 年 5 月 7 日更新) に従って、etcd と flanneld を使用して Ubuntu** でクラスターをセットアップしました。しかし、ネットワークに問題があります...何らかの壊れた状態にあるようです。
**注: 0.16.2 がインストールされるように構成スクリプトを更新しました。また、kubectl get minions
最初は何も返されませんでしたが、後に表示されましたsudo service kube-controller-manager restart
。
これは私のセットアップです:
どのマシンからでも、他のマシンに ping を送信できます...問題が発生し始めるのは、ポッドとサービスを作成するときです。
ポッド
したがって、このポッドは起動されていKubeNode3
ます... KubeNode3 以外のマシンから ping を実行しようとすると、Destination Net Unreachable
エラーが発生します。例えば
etcdctl get /coreos.com/network/config
4つすべてを呼び出して、戻ることができます{"Network":"172.16.0.0/16"}
。
そこからどこを見たらいいのかわからない。誰か助けてくれませんか?
サポート情報
マスターノードで:
ノード上:
kubernetes - kubernetes で実行されている一連のポッドを更新するにはどうすればよいですか?
kubernetes クラスターのレプリケーション コントローラーによって制御される一連のポッドを更新する好ましい方法は何ですか?
私は2つの方法を見ることができます:
- レプリケーション コントローラを手動で削除して再作成する
- 使用する
kubectl rolling-update
を使用してrolling-update
、レプリケーション コントローラーの名前を変更する必要があります。レプリケーション コントローラーの定義を YAML ファイルに格納し、手動で生成しないため、ファイルを変更してコードの更新をプッシュする必要があると、レプリケーション コントローラーの 2 つの名前 (コントローラー A とコントローラー B など) を交互に使用するなどの悪い習慣が発生するようです。名前の競合を避けます。
より良い方法は何ですか?
kubernetes - skydns のトラブル - 「理解」してはいけませんか?
Google コンテナー エンジンを使用しており、クラスター内にポッドとサービスを作成できます。しかし、DNS 機能 (skydns) を使用してサービスを検索しようとすると、何も見つかりません。非マスター ノードにログインすると、DNS コンテナーが表示され、「host」コマンドを使用して DNS ルックアップを実行できます (apt-get でインストールされます)。しかし、名前でサービスを見つけることができません。kubernetes.local をサービスの IP に関連付けます。実際には、kubernetes.local をすべてのサービスの IP に関連付けます (私は 9 つ持っています)。ただし、サービス名「my-service-name」は関連付けられません。
これを機能させるためのトリックを知っている人はいますか?サービスを作成してもskydnsにDNSエントリが作成されない(おそらくそれを機能させる魔法がある)...または私は完全に無知です(魔法が少ない、おそらく可能性が高い)。
どちらかわかりません。
b
docker - Google Container Engine / Kubernetes でクラスタをスケールアップするにはどうすればよいですか?
Google Container Engine の Kubernetes クラスターで実行されているアプリ コンテナーの 2 つのインスタンス (たまたま Node.JS アプリですが、それは重要ではありません) があります。3 つのインスタンスにスケールアップしたいと考えています。
私のクラスターにはマスター ノードと 2 つのミニオン ノードがあり、レプリケーション コントローラーとロード バランサー サービスがあります。レプリケーション コントローラーにより、アプリ コンテナーは 2 つのノードで正常に実行されます。
レプリカの数を変更できる便利なgcloud alpha container kubectl resizeコマンドがあることはわかりますが、別のミニオンをスピンアップできるように、クラスター自体のサイズを増やす方法や方法がわからないノード。クラスタを作成、削除、一覧表示、説明する gcloud コマンドしか表示されません。それらのサイズを変更するものは何もありません。
クラスターのサイズを変更できない場合、スケールアップするには、まったく新しいクラスターを作成し、古いクラスターを削除する必要があります。何か不足していますか?
また、自動スケーリングをサポートする予定はありますか?
kubernetes - Google コンテナ エンジンで Docker イメージを実行するにはどうすればよいですか?
Google Container Engine で Docker イメージを実行しようとしています。インスタンスは実行中の docker イメージを表示しません。docker コマンドを ssh して実行すると、サービスが起動します。しかし、ターミナルからインスタンスを起動しただけでは何も起こりません。誰かが私が間違っていることを見てもらえますか。
私のdockerファイルは次のようになります
container.yaml は次のようになります
インスタンスを起動するコマンドは