Minikube具有单个群集的特定节点IP地址(192.168.99.100),如果我使用kubeadm创建许多节点群集,我该怎么做才能找到此IP地址?
答案 0 :(得分:2)
这应该非常简单:kubectl get nodes -o wide
答案 1 :(得分:1)
要获取有关Kubernetes objects
的信息,您应该使用kubectl get <resource>
或kubectl describe <resource>
。
在docs
显示一种或多种资源
打印有关指定资源的最重要信息的表。您可以使用标签选择器和--selector标志来过滤列表。如果所需的资源类型已命名空间,则除非传递--all-namespaces,否则您只会在当前命名空间中看到结果。
如果您要查看kubectl get
手册,则会获得有关-o
标志的信息。
-o,--output ='':输出格式之一: json | yaml | wide | name | custom-columns = ... | custom-columns-file = ... | go-template = ... | go-template-file = ... | jsonpath = ... | jsonpath-file = ... 查看golang模板中的自定义列[http://kubernetes.io/docs/user-guide/kubectl-overview/#custom-columns] [http://golang.org/pkg/text/template/#pkg-overview]和jsonpath模板 [http://kubernetes.io/docs/user-guide/jsonpath]。
这意味着您可以获得YAMLs
或JSON
格式的输出。详细信息可以在this doc中找到。
正如@Bernard Halas提到的,您可以只使用kubectl get nodes -o wide
。
另一种选择是将describe
与grep
一起使用。 -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
您还可以使用YAML
或JSON
格式。输出将类似于上一个。
$ 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
...
此外,如果您需要一些特定的输出(仅需要信息且未默认打印),则可以使用custom columns。它基于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
答案 2 :(得分:1)
重要的是要了解,不存在kubernetes集群的单个IP之类的东西。 Minikube之所以拥有它,是因为它是一个特殊的1节点案例。大多数生产集群将以一种或多种方式使用许多内部和外部IP地址进行操作:每个节点都部署在具有自己IP地址的单独(虚拟)计算机上,该IP地址是公共的还是私有的,具体取决于您设置(虚拟)计算机的方式。 现在的问题是,您需要什么IP:
kubectl
与之对话的端点),那么在使用kubeadm
手动创建集群的情况下,这将是主节点的IP您使用kubeadm init
命令创建的(假设使用单个大写字母)。有关详情,请参见this official doc。要使用kubectl
与您的集群通信,您将需要一些授权数据,但其IP除外:请参见上述文档的后续部分如何获取它。LoadBalancer
类型服务的IP,那么它将在kubectl get service name-of-your-service -o yaml
或kubectl describe service name-of-your-service
的输出中报告许多其他内容。但是请注意,使用kubeadm
创建的集群不能单独提供外部负载均衡器(这就是为什么将它们称为外部)的原因,如果您打算手动设置功能齐全的生产集群,则需要使用类似另外MetalLB。NodePort
类型服务的IP,那么这些将是通过在它们上运行kubeadm join
命令而被吸收到群集中的工作节点(虚拟)计算机的所有IP。如果您不记得它们,则可以按照other answer中的建议使用kubectl get nodes -o wide
。答案 3 :(得分:0)
以下命令应显示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
如果配置了主机名,它还会显示主机名