kubernetes容器获取IP地址

举报
张俭 发表于 2023/12/11 10:58:54 2023/12/11
【摘要】 kubernetes中容器获取IP地址是一个常见的需求,常见的有两种获取IP地址的方式 kubernetes环境变量注入通过在部署时,container下的env中配置如下yaml - name: POD_IP valueFrom: fieldRef: apiVersion: v1...

kubernetes中容器获取IP地址是一个常见的需求,常见的有两种获取IP地址的方式

kubernetes环境变量注入

通过在部署时,container下的env中配置如下yaml

            - name: POD_IP
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: status.podIP

进入容器就可以根据环境变量获取到容器IP

# echo $POD_IP
172.17.0.2

通过shell脚本获取

通过ip命令(推荐)

# ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1
172.17.0.2

注意这里一定要用inet\b,不要用inet。使用inet的话,在Ipv6双栈场景下会因为匹配到inet6获取到错误的结果, Ipv6双栈场景下ip命令的部分输出结果如下图所示

inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
inet6 fe80::ffff prefixlen 64 scopeid 0x20<lin>

通过ifconfig命令(不推荐)

不推荐使用ifconfig命令的原因是,这个命令已经废弃,将会逐步删除

ifconfig eth0 | grep 'inet\b' | awk '{print $2}' | cut -d/ -f1

同样需要使用inet\b,不要使用inet

TLDR

优先配置如下yaml进行环境变量注入,其次使用ip addr show eth0 | grep “inet\b” | awk ‘{print $2}’ | cut -d/ -f1命令获取

            - name: POD_IP
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: status.podIP
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。