首页 > 解决方案 > Kubernetes 部署中的容器不使用 hostNetwork

问题描述

我最近熟悉了 kubernetes。我想将一个项目部署到我的 minikube 集群中。这是yaml文件:

部署.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    run: project
  name: project
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      run: project
  template:
    metadata:
      labels:
        run: project
    spec:
      hostNetwork: true
      containers:
      - name: container1
        image: image1
        imagePullPolicy: Never
      - name: container2
        image: image2
        imagePullPolicy: Never

我成功创建了部署,并且 pod 中的两个容器都已启动并正在运行,但这些容器无法连接到本地资源,如数据库(例如 redis)

我通过此命令获取日志,结果如下。

kubectl 日志 -f 项目-5f5c6df6bc-q82s5 容器1

连接到 127.0.0.1:6379 时出现错误 111。连接被拒绝。

标签: kubernetesnetworking

解决方案


我认为您可以使用具有ExternalNameMinikube 提供的特殊主机名的服务类型: https ://minikube.sigs.k8s.io/docs/handbook/host-access/#hostminikubeinternal 这公开了一个可以从 Kubernetes 使用的外部服务.

kind: Service
apiVersion: v1
metadata:
  name: redis
spec:
  type: ExternalName
  externalName: host.minikube.internal

在集群中运行的代码中,只需使用主机redis,以便 Kubernetes 可以检索到所需主机的映射。


推荐阅读