对于作为 Windows Docker 桌面的一部分运行的 Kubernetes 集群,是否有等效的 host.docker.internal

Sre*_*ram 4 kubernetes docker-desktop

用例:我有一个 Docker 桌面,并在其中启用了 kubernetes。我想从 kubernetes 节点连接到笔记本电脑上运行的数据库,而不使用笔记本电脑的 IP 地址。

我想从 Kubernetes 端点内引用 Windows 主机,而不使用主机的动态 IP。在 docker 中,有一个特殊的 DNS 名称 host.docker.internal 允许连接主机端点。我无法为端点 IP 指定此项。Kubernetes 中有类似的东西吗?

Mic*_*haw 5

使用host.docker.internal

我已经在 Mac 上进行了测试,但在 Windows 上应该同样有效。

  1. 启动一个 alpine pod(部署 yaml借自 rossbackp)。

    apiVersion: v1
    kind: Pod
    metadata:
      name: alpine
      namespace: default
    spec:
      containers:
      - image: alpine:3.2
        command:
          - /bin/sh
          - "-c"
          - "sleep 60m"
        imagePullPolicy: IfNotPresent
        name: alpine
      restartPolicy: Always
    
    Run Code Online (Sandbox Code Playgroud)
    apiVersion: v1
    kind: Pod
    metadata:
      name: alpine
      namespace: default
    spec:
      containers:
      - image: alpine:3.2
        command:
          - /bin/sh
          - "-c"
          - "sleep 60m"
        imagePullPolicy: IfNotPresent
        name: alpine
      restartPolicy: Always
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在主机上启动一个简单的 Web 服务器。

    kubectl apply -f deployment.yaml  # after saving the above file as deployment.yaml
    
    Run Code Online (Sandbox Code Playgroud)
  3. 从 alpine pod 访问 Web 服务器。

    mkdir /tmp/server
    cd /tmp/server
    echo "hi" > index.html
    python -m SimpleHTTPServer 8000
    
    Run Code Online (Sandbox Code Playgroud)