使用Pod环境变量连接到Pod

时间:2020-08-15 10:05:21

标签: kubernetes azure-aks

在我的AKS群集中,我有2个服务(API和Redis DB)。我想从API窗格连接到Redis数据库。

我使用kubectl exec redis-pod -- printenv获取了Redis Env,并且主机变量为REDIS_SERVICE_HOST,是否可以将这个env注入API部署中?

我尝试了类似的方法,但是没有用:

env:
   - name: REDIS_HOST
     value: ${REDIS_SERVICE_HOST}:6379

1 个答案:

答案 0 :(得分:1)

您可以将redis主机IP存储在configMap中,并将其用作env

  export REDISHOST_IP=XXX.XXX.XXX.XXX
  kubectl create configmap redishost --from-literal=REDISHOST=${REDISHOST_IP}

env:
- name: REDISHOST
  valueFrom:
    configMapKeyRef:
      name: redishost
      key: REDISHOST

一种更好的方法是使用kubernetes服务公开Redis

apiVersion: v1
kind: Service
metadata:
  name: redis
  namespace: default
  labels:
    app: redis
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis

注意:在此示例中,redis窗格需要具有标签app: redis

然后使用环境将redis.default.svc.cluster.local作为Redis主机注入其他容器中。

您还可以使用configMap存储redis.default.svc.cluster.local并将其用作环境。

kubectl create configmap redishost --from-literal=REDISHOST=redis.default.svc.cluster.local

env:
- name: REDISHOST
  valueFrom:
    configMapKeyRef:
      name: redishost
      key: REDISHOST

这样,即使重新启动Redis Pod,并且Pod IP更改,连接到Redis的其他Pod也不会受到影响,因此不需要更改。