2016-10-27 4 views
3

私はこのようになりますシンプルな複製コントローラのYAMLファイルを持っている: Kubernetesでは、レプリケーションコントローラを使用するときにポッドの名前を設定する方法は?

apiVersion: v1 
kind: ReplicationController 
metadata: 
    name: nginx 
spec: 
    replicas: 3 
    selector: 
    app: nginx 
    template: 
    spec: 
     containers: 
     - image: library/nginx:3.2 
     imagePullPolicy: IfNotPresent 
     name: nginx 
     ports: 
     - containerPort: 80 
    metadata: 
     labels: 
     app: nginx 

そして、このレプリケーション・コントローラを実行した後、私が得る

名前が「nginxの-XXX」は、「xxx」は表して、3種類のポッド文字と数字のランダムな文字列。

複製コントローラによって作成されたポッドの名前を指定して、ポッドの名前を「nginx-01」、「nginx-02」、「nginx-03」にすることができます。さらに、何らかの理由でポッド「nginx-02」がダウンしていて、複製コントローラが自動的に別のnginxポッドを作成すると、この新しいnginxポッドの名前を「nginx-02」にしておきたいとします。

これは可能でしょうか?前もって感謝します。

答えて

3

ステートレスワークロードを実行している場合、特定のポッドのN個のレプリカを実行することを目的としている場合は、各オブジェクトに固定IDが関連付けられている理由を想像できません。

ReplicaSet/ReplicationControllerを使用してこれを行う方法はありません。コントローラが新しいポッドを作成すると、ポッド名の後に生成された名前の接尾辞が付けられます。

これが本当に必要な場合(固定ID /順序インデックス)、このプロパティはKubernetes v1.4のアルファベットにあるPetSet resourceによって満たされます。しかし、それはあなたがおそらく必要ないことをさらに保証するものです。

+0

たとえば、自分のポッドに、アクセス可能なFQDN名を認識させたいと思います。今のところ、ポッドはそのようにenv変数(例:10-42-25-26.dev.pod.cluster.local)からIPアドレスを判断することさえできません。 この要件の背景は、監視ソリューション(Hystrix/Turbineダッシュボードなど)を構築することです。 ステートレスポッドをステートフルセットに変換するだけで、上記の目標シームをハックにすることができます。 –

+0

は、リンク機能を持つ以前にリリースされたドッカーとの下位互換性のために使用されていた環境変数を使用しないようにしましたが、現在は廃止されています。ホスト、ポート環境変数を使用するには、順番どおりに行う必要があります。ポッドをサービスとして公開するには、デフォルトのパターンポッドはレプリカセットの一部であり、レプリカはサービスとして公開され、クラスタDNSは常にservice.namespace.svc.clusterのように動的に正しいクラスタIDアドレスを指し、fdqnを更新します。ローカルまたはあなたが上書きしたデフォルトのベース名 – Walid

関連する問題