2016-10-17 13 views
0

KubernetesのRedisサーバーに依存するオンラインサービスを展開するつもりです。これまでのところ私が持っている:Kubernetesに同じ展開を複数回展開する

kind: Deployment 
apiVersion: extensions/v1beta1 
metadata: 
    name: "redis" 
spec: 
    replicas: 1 
template: 
    metadata: 
     labels: 
     app: redis 
    spec: 
     containers: 
     - name: redis 
      image: redis 
      ports: 
      - containerPort: 6379 
       protocol: TCP 

私はまたしてサービスとしてのRedisを公開することができます。これにより

apiVersion: v1 
kind: Service 
metadata: 
    name: redis 
    labels: 
    app: redis 
spec: 
    ports: 
    - port: 6379 
    protocol: TCP 
    selector: 
    app: redis 

、私はRedisのサーバーを持つ単一のポッドを実行し、それを公開することができます。

しかし、私のアプリケーションはいくつかのRedisサーバーに接続する必要があります(これは構成できますが、理想的には変更しないでください)。 Redisサーバがと話しているので、レプリカを使用することはできません。サービス抽象化では、どちらのインスタンスについて話しているかわからないため、単一のサービスに公開することはできません。私はこれを知るために私のアプリケーションの必要性がスケーラビリティを妨げ、その結果柔軟性を失うのをうれしく思っています。

私は、同じ展開を何度も展開し、それぞれのサービスを宣言することを考えましたが、Kubernetesのドキュメントでは何も見つかりませんでした。もちろん、展開とサービスのYAMLファイルをコピー&ペーストして、それぞれに接尾辞を追加することもできますが、これはあまりにも手作業で(そして率直に言っても)複雑すぎるようです。

私の目標を達成するためにクーベルネットには何かがありますか?

答えて

1

pet setsをご覧ください。ペットセットは、redis0、redis1、redis2のようなインスタンスごとに一意ではありますが、決定可能な名前を取得します。 牛として扱われる配備ポッドに対抗するペットとしても扱われます。

ペットセットは、アップグレード、削除、および一般的には扱いにくいが、信頼性と決定性を得るための価格であることにご注意ください。ペットのセットとして

あなたの展開は:

apiVersion: apps/v1alpha1 
kind: PetSet 
metadata: 
    name: redis 
spec: 
    serviceName: "redis" 
    replicas: 3 
    template: 
    metadata: 
     labels: 
     app: redis 
     annotations: 
     pod.alpha.kubernetes.io/initialized: "true" 
    spec: 
     terminationGracePeriodSeconds: 0 
     containers: 
     - name: redis 
     image: redis 
     ports: 
     - containerPort: 6379 
      protocol: TCP 

はまた、それが簡単にポッド内のデータにアクセスできるようにすること、ボリュームを使用することを検討してください。

+0

ありがとうございました!これはまさに私が求めていたものです。私は「PetSet」がダッシュボードでそれを見たときのことだと気づいていませんでした。特定のサービスの設定を自動化するためのペットのリストをイントロスペクト/リクエスト/通知するアプリケーションは、とにかくありますか? – ereOn

+0

'app = redis'を対象とするサービスを作成することで、簡単に接続できます。これにより、ラウンドロビンでアクセスすることができます。すべてのサービスが必要な場合は、kubernetes APIを使用してサービスのIPを取得する必要があります。 –

+0

私の場合、後で必要があると思います。もし[有望な] [このリンク](http://kubernetes.io/docs/user-guide/accessing-the-cluster/#accessing-the-api-from-a-pod)が見つかったら。ありがとう! – ereOn

関連する問題