Kubernetes 法兰绒正在为从节点崩溃
我在我的从属节点上得到了法兰绒服务的这个结果。法兰绒在主节点上运行良好Kubernetes 法兰绒正在为从节点崩溃,kubernetes,Kubernetes,我在我的从属节点上得到了法兰绒服务的这个结果。法兰绒在主节点上运行良好 kube-system kube-flannel-ds-amd64-xbtrf 0/1 CrashLoopBackOff 4 3m5s 在从机上运行的Kube代理很好,但不是法兰绒吊舱 我只有一个主节点和一个从节点。首先它说正在运行,然后它转到错误,最后是崩溃回退 godfrey@master:~$ kubectl get pods --all-namespaces -o wid
kube-system kube-flannel-ds-amd64-xbtrf 0/1 CrashLoopBackOff 4 3m5s
在从机上运行的Kube代理很好,但不是法兰绒吊舱
我只有一个主节点和一个从节点。首先它说正在运行
,然后它转到错误
,最后是崩溃回退
godfrey@master:~$ kubectl get pods --all-namespaces -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kube-system kube-flannel-ds-amd64-jszwx 0/1 CrashLoopBackOff 4 2m17s 192.168.152.104 slave3 <none> <none>
kube-system kube-proxy-hxs6m 1/1 Running 0 18m 192.168.152.104 slave3 <none> <none>
到目前为止,我还没有找到解决办法。感谢您的帮助。由于解决方案来自OP,我将以社区维基的形式发布答案 正如OP在评论中所报告的,他在kubeadm初始化期间没有通过podCIDR 以下命令用于查看法兰绒吊舱处于“CrashLoopBackoff”状态: 确认podCIDR未传递给处于
CrashLoopBackoff
状态的法兰绒吊舱kube-flannel-ds-amd64-ksmmh
$ kubectl logs kube-flannel-ds-amd64-ksmmh
kubeadm init--pod网络cidr=172.168.10.0/24
未按预期将podCIDR传递给从属节点
因此,为了解决这个问题,必须使用kubectl补丁节点slave1-p'{“spec”:{“podCIDR”:“172.168.10.0/24”}
命令将podCIDR传递给每个从属节点
请查看此链接:以及“Kubernetes Specific”部分由于解决方案来自OP,我将以社区wiki的形式发布答案 正如OP在评论中所报告的,他在kubeadm初始化期间没有通过podCIDR 以下命令用于查看法兰绒吊舱处于“CrashLoopBackoff”状态: 确认podCIDR未传递给处于
CrashLoopBackoff
状态的法兰绒吊舱kube-flannel-ds-amd64-ksmmh
$ kubectl logs kube-flannel-ds-amd64-ksmmh
kubeadm init--pod网络cidr=172.168.10.0/24
未按预期将podCIDR传递给从属节点
因此,为了解决这个问题,必须使用kubectl补丁节点slave1-p'{“spec”:{“podCIDR”:“172.168.10.0/24”}
命令将podCIDR传递给每个从属节点
请参阅此链接:和“Kubernetes Specific”(Kubernetes Specific)部分所描述的群集配置在两个方面看起来不正确:
首先,
PodCIDR
合理的最小子网大小是/16
。每个Kubernetes节点通常获得/24
子网,因为它最多可以运行100个吊舱。PodCIDR
和ServicesCIDR
(默认值:“10.96.0.0/12”)不得干扰您现有的LAN网络,也不得相互干扰
因此,正确的kubeadm
命令如下所示:
$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
在您的情况下,PodCIDR
子网只是/24
,它被分配给了主节点。从属节点没有自己的/24
子网,因此Flannel Pod在日志中显示了错误:
I0515 05:14:53.975822 1 main.go:390] Found network config - Backend type: vxlan
I0515 05:14:53.975856 1 vxlan.go:121] VXLAN config: VNI=1 Port=0 GBP=false Learning=false DirectRouting=false
E0515 05:14:53.976072 1 main.go:291] Error registering network: failed to acquire lease: node "slave3" pod cidr not assigned
I0515 05:14:53.976154 1 main.go:370] Stopping shutdownHandler...
Error registering network: failed to acquire lease: node "slave3" pod cidr not assigned
手动将同一子网分配给多个节点将导致其他连接问题
您可以在中找到有关Kubernetes IP子网的更多详细信息
第二个问题是IP子网号 最新的网络插件版本能够基于
kubeadm
参数--Pod网络cidr
检测正确的Pod子网。旧版本使用预定义的子网192.168.0.0/16
,您必须在Deaemonset
规范中的YAML文件中对其进行调整:
- name: CALICO_IPV4POOL_CIDR
value: "192.168.0.0/16"
is仍然需要为kubeadm init
指定默认子网(10.244.0.0/16
)
要为集群使用自定义子网,在应用到集群之前,应调整“安装”YAML文件
...
---
kind: ConfigMap
apiVersion: v1
metadata:
name: kube-flannel-cfg
namespace: kube-system
...
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan"
}
}
...
因此,以下内容适用于Kubernetes和Calico的任何版本:
$ sudo kubeadm init --pod-network-cidr=192.168.0.0/16
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
# Latest Calico version
$ kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
# or specific version, v3.14 in this case, which is also latest at the moment
# kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml
法兰绒也一样:
$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
# For Kubernetes v1.7+
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# For older versions of Kubernetes:
# For RBAC enabled clusters:
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-legacy.yml
$
还有许多其他的网络插件。您可以在文档中找到该列表:
首先,
PodCIDR
合理的最小子网大小是/16
。每个Kubernetes节点通常获得/24
子网,因为它最多可以运行100个吊舱。PodCIDR
和ServicesCIDR
(默认值:“10.96.0.0/12”)不得干扰您现有的LAN网络,也不得相互干扰
因此,正确的kubeadm
命令如下所示:
$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
在您的情况下,PodCIDR
子网只是/24
,它被分配给了主节点。从属节点没有自己的/24
子网,因此Flannel Pod在日志中显示了错误:
I0515 05:14:53.975822 1 main.go:390] Found network config - Backend type: vxlan
I0515 05:14:53.975856 1 vxlan.go:121] VXLAN config: VNI=1 Port=0 GBP=false Learning=false DirectRouting=false
E0515 05:14:53.976072 1 main.go:291] Error registering network: failed to acquire lease: node "slave3" pod cidr not assigned
I0515 05:14:53.976154 1 main.go:370] Stopping shutdownHandler...
Error registering network: failed to acquire lease: node "slave3" pod cidr not assigned
手动将同一子网分配给多个节点将导致其他连接问题
您可以在中找到有关Kubernetes IP子网的更多详细信息
第二个问题是IP子网号 最新的网络插件版本能够基于
kubeadm
参数--Pod网络cidr
检测正确的Pod子网。旧版本使用预定义的子网192.168.0.0/16
,您必须在Deaemonset
规范中的YAML文件中对其进行调整:
- name: CALICO_IPV4POOL_CIDR
value: "192.168.0.0/16"
is仍然需要为kubeadm init
指定默认子网(10.244.0.0/16
)
要为集群使用自定义子网,在应用到集群之前,应调整“安装”YAML文件
...
---
kind: ConfigMap
apiVersion: v1
metadata:
name: kube-flannel-cfg
namespace: kube-system
...
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan"
}
}
...
因此,以下内容适用于Kubernetes和Calico的任何版本:
$ sudo kubeadm init --pod-network-cidr=192.168.0.0/16
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
# Latest Calico version
$ kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
# or specific version, v3.14 in this case, which is also latest at the moment
# kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml
法兰绒也一样:
$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
# For Kubernetes v1.7+
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# For older versions of Kubernetes:
# For RBAC enabled clusters:
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-legacy.yml
$
还有许多其他的网络插件。您可以在文档中找到该列表: