web-dev-qa-db-ja.com

ポッドから他のポッドに接続する

基本的に、私は自動的にスケーリングする3つのコンテナーを作成するDeploymentがあります。PHP-FPM、NGINX、およびアプリケーションを含むコンテナーで、すべてシークレット、サービス、Ingressで設定されています。アプリケーションはまた、PHP-FPMとNGINXの間でプロジェクトを共有するため、すべてセットアップされています。

K8でさらに探索したいので、永続ディスクもマウントするRedisでポッドを作成することにしました(ただし、それは重要ではありません)。また、redis用のサービスを作成しました。RedisコンテナーにSSHで接続してredis-cliを実行すると、すべて正常に動作します。

楽しい部分は、プロジェクトがRedisがオンになっているポッドに接続できないことです。ポッド間のコンテナは同じ「ローカル」ネットワークを共有し、localhostを使用してアクセスできることを理解しています。

独立してスケーリングする他のポッドで実行されているredisサーバーにプロジェクトを接続するにはどうすればよいですか? Redisサービスの何が問題になっていますか?


私のRedisサービスは次のとおりです。

apiVersion: v1
kind: Service
metadata:
  name: redis-service
spec:
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis

私のRedisポッドは、デプロイメント構成ファイルを使用しています(必ずしもスケーリングする必要はありませんが、楽しみにしています):

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
  labels:
    app: redis
spec:
  selector:
    matchLabels:
      app: redis
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: redis
    spec:
      volumes:
        - name: redis-persistent-volume
          persistentVolumeClaim:
            claimName: redis-pvc
      containers:
        - image: redis:4.0.11
          command: ['redis-server']
          name: redis
          imagePullPolicy: Always
          resources:
            limits:
              cpu: 250m
              memory: 512Mi
            requests:
              cpu: 250m
              memory: 512Mi
          ports:
            - containerPort: 6379
              name: redis
          volumeMounts:
            - name: redis-persistent-volume
              mountPath: /data

また、kubectl get serviceを利用すると、RedisサーバーにクラスターIPがあります。

NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.96.0.1       <none>        443/TCP        21h
nginx-service   NodePort    10.100.111.16   <none>        80:30312/TCP   21h
redis-service   ClusterIP   10.99.80.141    <none>        6379/TCP       6s
10
user9874638

MicroK8s を使用している場合は、それらの documentation を参照してください

私は別のポッドと通信するのに苦労しましたが、期待どおりに機能しない他のことは、サービスの名前を使用して通信することでした(DNSルックアップはサービス名をIPに変換できないようです)。

いずれにせよ、 MicroK8sのドキュメント の中にいくつかの関連する手順があり、実行する必要があり、その後すべてが突然動作し始めました。

また、MicroK8s DNSサービスが実際にインストールされていることを確認してください。

microk8s.enable dns

最新版は MicroK8sのドキュメント を参照してください。ただし、今日のステップは次のとおりです。

enter image description here

0
NS du Toit