【问题标题】:In a Kubernetes cluster is it possible to obtain a container/pod IP address from inside a different container在 Kubernetes 集群中,是否可以从不同的容器中获取容器/pod IP 地址
【发布时间】:2019-08-03 02:09:40
【问题描述】:

是否可以确定邻居容器或 pod IP 地址,例如给出了它的名字?更具体地说,如果我有两个正在运行的容器/pod C1 (ip=1.2.3.4) 和 C2 (ip=5.6.7.8) 并且我执行:

  ME$ kubectl exec -it C1 bash
  C1$ magic_command_to_get_ip C2
  5.6.7.8

有magic_command_to_get_ip吗?

我是 Kubernetes 新手,我曾经使用 getent hosts tasks.$SERVICE 在 Docker 中将名称解析为地址,但显然它不适用于 KB。

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    每个 pod 都挂载了一个服务帐户。

    您可以使用

    进行检查
    kubectl decsribe pod pod_name
    

    输出:

    Mounts:
    /var/run/secrets/kubernetes.io/serviceaccount from xxxxx-token-xxx (ro)
    

    如果您的服务帐户有权执行该命令,则 Raunak 建议的命令应该可以工作。

    请确保您使用的服务帐户有权运行该命令。

    cmets (Forbidden): pods "cassandra-0" is disabled: User "system:serviceaccount:default:default" 中所述的错误是因为这个。

    更多关于服务帐号docs

    【讨论】:

      【解决方案2】:

      此线程可能重复 - How to know a Pod's own IP address from inside a container in the Pod?

      虽然您可以使用 POD_HOST=$(kubectl get pod $POD_NAME --template={{.status.podIP}}),但您的 bash_variable 可以是集群中所有可用 pod 的枚举。

      【讨论】:

      • 这需要在每个容器中安装 kubectl,对吗?
      • 我不同意这不是重复的,因为我试图确定邻居 IP 而不是自己的 IP
      • kubectl 是一个控制实用程序,可与整个 k8s 集群一起工作,而不仅限于 Pod。它用于与集群的 API 服务器通信,因此不需要安装在每个 pod 中
      • 好吧,我正在尝试从容器内实现邻居ip。我在容器中安装了 Kubectl,但命令仍然不起作用:来自服务器的错误(禁止):pods“cassandra-0”被禁止:用户“system:serviceaccount:default:default”无法获取 API 组中的资源“pods”“ " 在命名空间“默认”中
      猜你喜欢
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      • 2015-02-24
      • 2020-01-24
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多