ste*_*esu 2 docker kubernetes kubectl minikube
我试图理解 Kubernetes,以便我可以开始使用它进行本地开发,但我在这里遇到了一些基础知识......
我在 Mac OS X 上运行,并使用 Homebrew 通过brew install kubernetes
. 之后,我启动了一个简单的应用程序(部署?服务?——我不清楚术语),如下所示:
$> minikube start
$> kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10
$> kubectl expose deployment hello-minikube --type=NodePort --port=8080
Run Code Online (Sandbox Code Playgroud)
我直接从Kubernetes 文档获取这些命令
现在,每一步我都在尝试阅读 Kubernetes 文档并尝试使用各种命令行工具,这样我就不会盲目跟随,而是真正理解正在发生的事情。这就是我遇到的第一个巨大障碍:IP 地址太多!
$> ifconfig
...
inet 192.168.2.126 netmask 0xffffff00 broadcast 192.168.2.255
...
$> minikube ip
192.168.64.3
$> kubectl describe pods
...
IP: 172.17.0.2
...
$> kubectl describe services
...
IP: 10.96.8.59
...
Run Code Online (Sandbox Code Playgroud)
我了解其中几个:
但我不知道172.17.0.2 和 10.96.8.59 是怎么回事——这些 IP 地址是什么,我什么时候需要使用它们,以及如何访问它们?
当我尝试在浏览器中访问四个 IP 地址xxx.xxx.xxx.xxx:8080
中的任何一个时,我正在运行的 echoserver 应用程序不会出现。主机只是超时。但是使用minikube service hello-minikube --url
(根据文档)我得到:http ://192.168.64.3:30866
我可以理解为什么我要获取 Minikube 的 IP 地址(除了直接连接到 VM 并转发 VM 端口之外,我的计算机如何访问在 VM 内运行的容器?)——但我不明白:
还有一点相关:我不知道 kubectl 如何知道连接到 Minikube VM 并向该集群上的 Kubernetes API 服务器发送命令。我从未告诉 kubectl 我有一个正在运行的虚拟机,也没有告诉它如何连接到该虚拟机。但不知怎的,它就是知道。
我知道这就像三个不同的问题(每个 IP 地址的含义、Minikube 如何进行端口转发以及 kubectl 如何与 Minikube 进行通信) - 但这些都是在遵循 Minikube 教程的第一步时出现的问题,我我自己似乎无法找到答案。
小智 6
ifconfig 对于理解我们正在查看的每个 IP 地址的来源确实很有帮助。每个 IP 来自不同的子网。
192.168.64.3
是来自我们虚拟机网络接口的内部IP地址。
172.17.0.2
是来自 docker 网络接口的内部 IP 地址。这允许与主机和我们运行的容器进行网络隔离。
10.96.8.59
是来自虚拟机自己的网络接口的内部 IP 地址。您可以通过 ssh 进入虚拟机 ( minikube ssh
) 并在那里运行命令 ifconfig 来确认这一点。--service-cluster-ip-range
这个分配可以通过我们运行 minikube start 时的选项来控制
172.17.0.2 和 10.96.8.59 是怎么回事——这些 IP 地址是什么,我什么时候需要使用它们,以及如何访问它们?
IP地址10.96.8.59
只能通过另一个VM访问。例如,如果您将更多虚拟机附加到现有的 minikube 集群,那么您可以10.96.8.59
通过其他虚拟机访问。此外,10.96.xx.xx 范围内的 IP 将用于 Pod 内通信。而172.17.0.2
将用于 Pod 间通信。
30866端口来自哪里?
这是 minikube 从一系列端口中随机选择的,以便将您的服务暴露给您的网络。默认情况下,minikube 公开我们服务的端口范围是30000-32767
但如果你想操纵它,请参考这个文档
kubectl 如何知道连接到 Minikube VM
如果您启动 minikube,我们会看到 minikube 尝试设置虚拟机,然后配置 kubectl 以连接到虚拟机。让这个 kubectl 知道要连接到哪个主机;所有这些信息都存储在配置文件中,~/.kube/
您可以在此处找到服务器 IP:端口组合。
归档时间: |
|
查看次数: |
1257 次 |
最近记录: |