我正在尝试在我的内部部署服务器Ubuntu 16.04上安装Kubernetes。并参考以下文档,
https://medium.com/@Grigorkh/install-kubernetes-on-ubuntu-1ac2ef522a36
安装kubelete kubeadm和kubernetes-cni后,我发现用以下命令启动kubeadm,
kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=10.133.15.28 --kubernetes-version stable-1.8
在这里,我完全混淆了为什么我们设置cidr和api服务器的广告地址。我在这里添加了一些来自Kubernetes的混淆,
我是这个集装箱化和Kubernetes世界的新手。
答案 0 :(得分:1)
为什么我们在这里指定CIDR和--apiserver-advertise-address?
为什么法兰绒在kubernetes安装中使用?
Kubernetes使用Container Network Interface在群集内创建特殊的虚拟网络,以便在pod之间进行通信。
以下是一些解释"为什么"来自documentation:
Kubernetes对任何网络实施都施加了以下基本要求(除非有任何有意的网络分段政策):
- 所有容器都可以与没有NAT的所有其他容器通信
- 所有节点都可以与所有容器通信(反之亦然),无需NAT
- 容器看到的IP与其他人看到的IP相同
Kubernetes在Pod范围应用IP地址 - Pod中的容器共享其网络命名空间 - 包括其IP地址。这意味着Pod中的容器都可以在localhost上到达彼此的端口。这确实意味着Pod中的容器必须协调端口使用,但这与VM中的进程没有什么不同。这被称为“IP-per-pod”模型。
因此,Flannel是可用于创建网络的CNI之一,它将连接所有pod和CIDR选项,为该网络定义子网。有许多具有类似功能的替代CNI。
如果您想了解有关如何在Kubernetes中使用网络的更多详细信息,您可以通过以上链接阅读,例如here。
如何为我的服务器找到这两个地址?
API服务器广告地址必须只有一个且是静态的。该地址使用所有组件与API服务器通信。不幸的是,Kubernetes不支持每个主服务器的多个API服务器地址。
但是,您仍然可以根据需要在服务器上使用尽可能多的地址,但只能将其中一个地址定义为--apiserver-advertise-address
。唯一的请求 - 它必须可以从群集中的所有节点访问。