基本的に、自動的にスケーリングする 3 つのコンテナーを作成する展開があります: PHP-FPM、NGINX、およびアプリケーションを含むコンテナーで、すべてシークレット、サービス、イングレスで設定されています。アプリケーションは、PHP-FPM と NGINX の間でもプロジェクトを共有するため、すべてセットアップされています。
K8s を使ってもっと調べたいので、永続ディスクもマウントする 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