Kubernetes.如何使用以下命令使部署可从另一个部署访问< host>:< port>?

ckocjqey  于 2022-12-29  发布在  Kubernetes
关注(0)|答案(1)|浏览(101)

我在kubernetes中部署了一个python fastapi api,它运行正常,为此我使用了如下配置:

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: mynamespace
  name: myapi-deployment
  labels:
    app: myapi-deployment
spec:
  revisionHistoryLimit: 0
  replicas: 1
  selector:
    matchLabels:
      app: myapi
      tier: backend
  template:
    metadata:
      labels:
        app: myapi
        tier: backend
    spec:
      containers:
        - name: myapi
          image: path_to_my_container_repo
          imagePullPolicy: Always
          ports:
            - containerPort: 80
      imagePullSecrets:
        - name: registry-secret

---
apiVersion: v1
kind: Service
metadata:
  name: myapi-service
  namespace: mynamespace
spec:
  selector:
    app: myapi
    tier: backend
  ports:
    - protocol: "TCP"
      port: 80
      targetPort: 80
  type: ClusterIP

---

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: mynamespace
  name: mynamespace-ingress-all
  annotations:
    ...
spec:
  ingressClassName: nginx
  rules:

  - host: somedomain
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: myapi-service
            port:
              number: 80

项目的需求在不断变化,所以我必须在那里添加redis。我已经在localhost上正常工作了,但是当我试图将其移动到kubernetes时遇到了一些问题。
我可以使用以下命令正确创建Redis部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: mynamespace
  name: myapiredis-deployment
  labels:
    app: myapiredis-deployment
spec:
  revisionHistoryLimit: 0
  replicas: 1
  selector:
    matchLabels:
      app: myapiredis
  template:
    metadata:
      labels:
        app: myapiredis
    spec:
      containers:
        - name: myapiredis
          image: redis:7.0.6-alpine
          imagePullPolicy: Always
          ports:
            - containerPort: 6379

当然,这两个部署无法看到对方,当fastapi尝试连接到redis时,我收到了一个“错误111连接到localhost:6379。连接被拒绝”的错误。
我一直在尝试配置服务来添加新的redis-deployment,但是我在互联网上找到的所有例子都使用了另一种类型的服务(节点端口,负载平衡器)。我甚至不确定这是否可以用我的ClusterIP类型来实现。
我如何使用“localhost:6379”配置我的redis部署对fastapi可见?

t98cgbkg

t98cgbkg1#

正如@大卫迷宫所建议的,Redis安装应该有自己的Service,您需要更改应用程序的配置以使用Service名称作为主机名(可能使用环境变量),其他Kubernetes Pod通常不会是localhost。
有关详细信息,请参阅此link

相关问题