kubernetes 如何查找群集节点ip地址

9nvpjoqh  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(6)|浏览(229)

Minikube有单个集群的特定节点IP地址(192.168.99.100),如果我使用kubeadm创建多个节点集群,我应该怎么做才能找到这个IP地址?

xqkwcwgp

xqkwcwgp1#

这应该相当简单:kubectl get nodes -o wide

2nc8po8w

2nc8po8w2#

此命令显示节点名称、私有和公共IP地址。

kubectl get nodes -o wide | awk -v OFS='\t\t' '{print $1, $6, $7}'
6mw9ycah

6mw9ycah3#

通常,Kubernetes集群没有单一IP。Minikube拥有它,因为它是一个特殊的1节点案例。大多数生产集群将以这样或那样的方式使用许多网络内部、集群内部和外部IP地址进行操作。例如,每个节点通常部署在一个单独的(虚拟)机器上,该机器具有自己的IP地址,可以是外部或网络内部(如10.x.y.z或192.168.x.y),具体取决于您的网络设置。此外,许多kubernetes对象,如pod或服务也有其IP(集群内部或外部)。现在的问题是你需要IP做什么:

  • 如果你正在寻找你的kubernetes API端点服务器的地址(kubectl与之对话的端点),那么在使用kubeadm手动创建集群的情况下,这将是你使用kubeadm init命令创建的主节点的IP(假设单个主节点)。详见官方文档。要使用kubectl与您的集群通信,您需要一些授权数据,但IP除外:请参阅上述文件的后续部分如何获得它。
  • 如果您正在寻找LoadBalancer类型服务的IP,则它将在kubectl get service name-of-your-service -o yamlkubectl describe service name-of-your-service的输出中的许多其他内容中报告。但是请注意,使用kubeadm创建的集群本身并不提供外部负载均衡器(这就是为什么它们被称为外部负载均衡器),如果您打算手动设置一个功能齐全的生产集群,您将需要另外使用类似MetalLB的东西。
  • 如果您正在查找NodePort类型服务的IP,则这些将是您通过在其上运行kubeadm join命令而同化到群集中的工作节点(虚拟)机器的所有IP。如果你不记得它们,那么你可以使用kubectl get nodes -o wide,就像other answer中建议的那样。
2guxujil

2guxujil4#

要获取有关Kubernetes objects的信息,您应该使用kubectl get <resource>kubectl describe <resource>
在文档中
显示一个或多个资源
打印有关指定资源的最重要信息的表。您可以使用标签选择器和--selector标志来过滤列表。如果所需的资源类型是有名称空间的,那么除非传递--all-namespaces,否则只能看到当前名称空间中的结果。
如果您将检查kubectl get的手册,您将获得有关-o标志的信息。
-o,--output='':输出格式。标签:JSON| YAML|宽|名称|自定义列=.| custom-columns-file=.| go-模板=.| go模板文件=.| jsonpath=.| jsonpath-file=.参见自定义列[http://kubernetes.io/docs/user-guide/kubectl-overview/#custom-columns]、golang模板[http://golang.org/pkg/text/template/#pkg-overview]和jsonpath模板http://kubernetes.io/docs/user-guide/jsonpath(http://kubernetes.io/docs/user-guide/jsonpath]).
这意味着你可以得到YAMLsJSON的输出。详细信息可以在此文档中找到。
正如@Bernard Halas提到的,你可以只使用kubectl get nodes -o wide
另一种选择是将describegrep一起使用。-A将打印尾随上下文的数字行。如果您需要获取每个节点的信息列表,这很有帮助。

$ kubectl describe node | grep Addresses: -A 4
Addresses:
  InternalIP:   10.164.0.63
  ExternalIP:   35.204.67.223
  InternalDNS:  gke-test-default-pool-d11b1330-g44z.c.composite-rune-239911.internal
  Hostname:     gke-test-default-pool-d11b1330-g44z.c.composite-rune-239911.internal
--
Addresses:
  InternalIP:   10.164.0.61
  ExternalIP:   35.204.63.113
  InternalDNS:  gke-test-default-pool-d11b1330-gtpj.c.composite-rune-239911.internal
  Hostname:     gke-test-default-pool-d11b1330-gtpj.c.composite-rune-239911.internal
--
Addresses:
  InternalIP:   10.164.0.62
  ExternalIP:   35.204.202.107
  InternalDNS:  gke-test-default-pool-d11b1330-r4dw.c.composite-rune-239911.internal
  Hostname:     gke-test-default-pool-d11b1330-r4dw.c.composite-rune-239911.internal

您也可以使用YAMLJSON。输出将与前一个类似。

$ kubectl get nodes -o yaml | grep addresses: -A 8
    addresses:
    - address: 10.164.0.63
      type: InternalIP
    - address: 35.204.67.223
      type: ExternalIP
    - address: gke-test-default-pool-d11b1330-g44z.c.composite-rune-239911.internal
      type: InternalDNS
    - address: gke-test-default-pool-d11b1330-g44z.c.composite-rune-239911.internal
      type: Hostname
...

另外,如果你需要一些特定的输出(只有你需要的信息,而不是默认打印),你可以使用自定义列。基于YAML

$ kubectl get pods -o custom-columns=Name:.metadata.name,NS:.metadata.namespace,HostIP:.status.hostIP,PodIP:status.podIP,REQ_CPU:.spec.containers[].resources.requests.cpu
Name                          NS        HostIP        PodIP       REQ_CPU
httpd-5d8cbbcd67-gtzcx        default   10.164.0.63   10.32.2.7   100m
nginx-7cdbd8cdc9-54dds        default   10.164.0.62   10.32.1.5   100m
nginx-7cdbd8cdc9-54ggt        default   10.164.0.62   10.32.1.3   100m
nginx-7cdbd8cdc9-bz86v        default   10.164.0.62   10.32.1.4   100m
nginx-7cdbd8cdc9-zcvrf        default   10.164.0.62   10.32.1.2   100m
nginx-test-59df8dcb7f-hlrcr   default   10.164.0.63   10.32.2.4   100m
zysjyyx4

zysjyyx45#

下面的命令应该显示cluser中每个节点的内部IP地址:

ubuntu@astrocyte:~$ kubectl get nodes -o yaml | grep -- "- address:"
    - address: 192.168.1.6
    - address: astrocyte
    - address: 192.168.1.20
    - address: axon2.local
    - address: 192.168.1.7
    - address: axon3.local

它还显示主机名(如果已配置

14ifxucb

14ifxucb6#

最简单的方法是

kubectl get nodes -o wide

相关问题