roo*_*oot 5 kubernetes flannel kubeadm
目前我正在 1 Master 2 Node 环境中设置 Kubernetes。
我成功地初始化了 Master 并将节点添加到了集群中
当我将节点加入集群时,kube-proxy pod 成功启动,但 kube-flannel pod 出现错误并遇到 CrashLoopBackOff。
法兰绒pod.log:
I0613 09:03:36.820387 1 main.go:475] Determining IP address of default interface,
I0613 09:03:36.821180 1 main.go:488] Using interface with name ens160 and address 172.17.11.2,
I0613 09:03:36.821233 1 main.go:505] Defaulting external address to interface address (172.17.11.2),
I0613 09:03:37.015163 1 kube.go:131] Waiting 10m0s for node controller to sync,
I0613 09:03:37.015436 1 kube.go:294] Starting kube subnet manager,
I0613 09:03:38.015675 1 kube.go:138] Node controller sync successful,
I0613 09:03:38.015767 1 main.go:235] Created subnet manager: Kubernetes Subnet Manager - caasfaasslave1.XXXXXX.local,
I0613 09:03:38.015828 1 main.go:238] Installing signal handlers,
I0613 09:03:38.016109 1 main.go:353] Found network config - Backend type: vxlan,
I0613 09:03:38.016281 1 vxlan.go:120] VXLAN config: VNI=1 Port=0 GBP=false DirectRouting=false,
E0613 09:03:38.016872 1 main.go:280] Error registering network: failed to acquire lease: node "caasfaasslave1.XXXXXX.local" pod cidr not assigned,
I0613 09:03:38.016966 1 main.go:333] Stopping shutdownHandler...,
Run Code Online (Sandbox Code Playgroud)
在节点上,我可以验证 PodCDIR 是否可用:
kubectl get nodes -o jsonpath='{.items[*].spec.podCIDR}'
172.17.12.0/24
Run Code Online (Sandbox Code Playgroud)
在 Masters kube-controller-manager 上,pod cidr 也在那里
[root@caasfaasmaster manifests]# cat kube-controller-manager.yaml
apiVersion: v1
kind: Pod
metadata:
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ""
creationTimestamp: null
labels:
component: kube-controller-manager
tier: control-plane
name: kube-controller-manager
namespace: kube-system
spec:
containers:
- command:
- kube-controller-manager
- --leader-elect=true
- --controllers=*,bootstrapsigner,tokencleaner
- --cluster-signing-key-file=/etc/kubernetes/pki/ca.key
- --address=127.0.0.1
- --use-service-account-credentials=true
- --kubeconfig=/etc/kubernetes/controller-manager.conf
- --root-ca-file=/etc/kubernetes/pki/ca.crt
- --service-account-private-key-file=/etc/kubernetes/pki/sa.key
- --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt
- --allocate-node-cidrs=true
- --cluster-cidr=172.17.12.0/24
- --node-cidr-mask-size=24
env:
- name: http_proxy
value: http://ntlmproxy.XXXXXX.local:3154
- name: https_proxy
value: http://ntlmproxy.XXXXXX.local:3154
- name: no_proxy
value: .XXXXX.local,172.17.11.0/24,172.17.12.0/24
image: k8s.gcr.io/kube-controller-manager-amd64:v1.10.4
livenessProbe:
failureThreshold: 8
httpGet:
host: 127.0.0.1
path: /healthz
port: 10252
scheme: HTTP
initialDelaySeconds: 15
timeoutSeconds: 15
name: kube-controller-manager
resources:
requests:
cpu: 200m
volumeMounts:
- mountPath: /etc/kubernetes/pki
name: k8s-certs
readOnly: true
- mountPath: /etc/ssl/certs
name: ca-certs
readOnly: true
- mountPath: /etc/kubernetes/controller-manager.conf
name: kubeconfig
readOnly: true
- mountPath: /etc/pki
name: ca-certs-etc-pki
readOnly: true
hostNetwork: true
volumes:
- hostPath:
path: /etc/pki
type: DirectoryOrCreate
name: ca-certs-etc-pki
- hostPath:
path: /etc/kubernetes/pki
type: DirectoryOrCreate
name: k8s-certs
- hostPath:
path: /etc/ssl/certs
type: DirectoryOrCreate
name: ca-certs
- hostPath:
path: /etc/kubernetes/controller-manager.conf
type: FileOrCreate
name: kubeconfig
status: {}
Run Code Online (Sandbox Code Playgroud)
XXXXX 用于匿名化
我使用以下 kubeadm comman 初始化了 master(也没有任何错误)
kubeadm init --pod-network-cidr=172.17.12.0/24 --service-
cidr=172.17.11.129/25 --service-dns-domain=dcs.XXXXX.local
Run Code Online (Sandbox Code Playgroud)
有谁知道什么可能导致我的问题以及如何解决它们?
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE
kube-system etcd-caasfaasmaster.XXXXXX.local 1/1 Running 0 16h 172.17.11.1 caasfaasmaster.XXXXXX.local
kube-system kube-apiserver-caasfaasmaster.XXXXXX.local 1/1 Running 1 16h 172.17.11.1 caasfaasmaster.XXXXXX.local
kube-system kube-controller-manager-caasfaasmaster.XXXXXX.local 1/1 Running 0 16h 172.17.11.1 caasfaasmaster.XXXXXX.local
kube-system kube-dns-75c5968bf9-qfh96 3/3 Running 0 16h 172.17.12.2 caasfaasmaster.XXXXXX.local
kube-system kube-flannel-ds-4b6kf 0/1 CrashLoopBackOff 205 16h 172.17.11.2 caasfaasslave1.XXXXXX.local
kube-system kube-flannel-ds-j2fz6 0/1 CrashLoopBackOff 191 16h 172.17.11.3 caasfassslave2.XXXXXX.local
kube-system kube-flannel-ds-qjd89 1/1 Running 0 16h 172.17.11.1 caasfaasmaster.XXXXXX.local
kube-system kube-proxy-h4z54 1/1 Running 0 16h 172.17.11.3 caasfassslave2.XXXXXX.local
kube-system kube-proxy-sjwl2 1/1 Running 0 16h 172.17.11.2 caasfaasslave1.XXXXXX.local
kube-system kube-proxy-zc5xh 1/1 Running 0 16h 172.17.11.1 caasfaasmaster.XXXXXX.local
kube-system kube-scheduler-caasfaasmaster.XXXXXX.local 1/1 Running 0 16h 172.17.11.1 caasfaasmaster.XXXXXX.local
Run Code Online (Sandbox Code Playgroud)
Pan*_*nde 11
未能获得租约只是意味着,pod 没有获得 podCIDR。尽管主节点上的清单显示 podCIDR 为真,但我也发生了这种情况,但它仍然无法正常工作并且漏斗进入崩溃回送。这就是我为修复它所做的。
从主节点,首先找出你的漏斗 CIDR
sudo cat /etc/kubernetes/manifests/kube-controller-manager.yaml | grep -i cluster-cidr
Run Code Online (Sandbox Code Playgroud)
输出:
- --cluster-cidr=172.168.10.0/24
Run Code Online (Sandbox Code Playgroud)
然后从主节点运行以下命令:
kubectl patch node slave-node-1 -p '{"spec":{"podCIDR":"172.168.10.0/24"}}'
Run Code Online (Sandbox Code Playgroud)
其中,slave-node-1 是获取租约失败的节点 podCIDR 是您在上一个命令中找到的 cidr
希望这可以帮助。
根据法兰绒文档:
至少,您必须告诉 flannel 它应该用于覆盖的 IP 范围(子网)。以下是最小 flannel 配置的示例:
Run Code Online (Sandbox Code Playgroud){ "Network": "10.1.0.0/16" }
因此,您需要为 Pod 指定一个最小大小为 的网络/16,并且它不应该是现有网络的一部分,因为 Flannel 使用封装将不同节点上的 Pod 连接到一个覆盖网络。
这是描述它的文档部分:
使用 Docker,每个容器都会分配一个 IP 地址,可用于与同一主机上的其他容器进行通信。为了通过网络进行通信,容器与主机的 IP 地址绑定,并且必须依赖端口映射来到达所需的容器。这使得在容器内运行的应用程序很难公布其外部 IP 和端口,因为这些信息对它们不可用。
flannel 通过为每个容器提供一个可用于容器到容器通信的 IP 来解决这个问题。它使用数据包封装来创建跨越整个集群的虚拟覆盖网络。更具体地说,flannel 为每个主机提供一个 IP 子网(默认为 /24),Docker 守护进程能够从中将 IP 分配给各个容器。
换句话说,您应该使用如下设置重新创建集群:
kubeadm init --pod-network-cidr=10.17.0.0/16 --service-cidr=10.18.0.0/24 --service-dns-domain=dcs.XXXXX.local
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9100 次 |
| 最近记录: |