我正在Virtualbox
内部运行的centos VM上安装kubernetes(kubeadm),所以用yum我安装了kubeadm, kubelet
和docker
。
现在,在尝试使用kubeadm init --pod-network-cidr=192.168.56.0/24 --apiserver-advertise-address=192.168.56.33/32
设置群集时,我遇到了以下错误:
Unable to update cni config: No networks found in /etc/cni/net.d
Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
所以我检查了一下,/etc
没有cni
文件夹,甚至没有安装kubernetes-cni-0.6.0-0.x86_64
。我尝试在/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
中评论KUBELET_NETWORK_ARGS
,但没有用。
附注:
我正在代理后面安装。
我有多个网络适配器:
NAT : 10.0.2.15/24 互联网
仅主机 : 192.168.56.33/32
和码头工人接口:172.17.0.1/16
Docker 版本: 17.12.1-ce
kubectl 版本 : 主要:"1", 次要:"9", GitVersion:"v1.9.3">
Centos 7
添加 pod 网络插件 - 编织网
kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
在使用 "kubeadm init" 设置集群时,有几点需要记住,并且在 Kubernetes 站点 kubeadm 集群创建中清楚地记录了它:
- "kubeadm 重置",如果您已经创建了以前的集群
- 从主目录或根目录中删除".kube"文件夹
- (此外,使用 systemctl 停止 kubelet 将允许顺利设置) 在
- 计算机上永久禁用交换,尤其是在重新启动 Linux 系统时
- 不要忘记,根据附加站点(不是 Kubernetes 站点)上提供的说明安装 Pod 网络附加组件
- 按照 kubeadm 在命令窗口中给出的初始化后步骤进行操作。
如果正确执行所有这些步骤,则您的集群将正常运行。
并且不要忘记执行以下命令以在创建的集群上启用计划:
kubectl taint nodes --all node-role.kubernetes.io/master-
关于如何从代理后面安装,您可能会发现这很有用:
使用代理安装
停止并禁用 apparmor 并重新启动该节点上的容器服务将解决您的问题
root@node:~# systemctl stop apparmor
root@node:~# systemctl disable apparmor
root@node:~# systemctl restart containerd.service
检查这个答案。
使用此 PR(直到获得批准):
kubectl -n kube-system apply -f https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml
这是一个已知问题:Coreos/法兰绒#1044
我看不到 helm 服务器版本:
$ helm version --tiller-namespace digital-ocean-namespace
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Error: could not find a ready tiller pod
kubectl describe node kubernetes-master --namespace digital-ocean-namespace
命令显示消息:
NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
节点未准备就绪:
$ kubectl get node --namespace digital-ocean-namespace
NAME STATUS ROLES AGE VERSION
kubernetes-master NotReady master 82m v1.14.1
kubernetes-worker-1 NotReady <none> 81m v1.14.1
我在 Kubernetes 和法兰绒网络之间遇到了版本兼容性问题。
我的 k8s 版本1.14
如下命令所示:
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.1", GitCommit:"b7394102d6ef778017f2ca4046abbaa23b88c290", GitTreeState:"clean", BuildDate:"2019-04-08T17:11:31Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.1", GitCommit:"b7394102d6ef778017f2ca4046abbaa23b88c290", GitTreeState:"clean", BuildDate:"2019-04-08T17:02:58Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
使用以下命令重新安装法兰绒网络后:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
然后我可以看到 helm 服务器版本:
$ helm version --tiller-namespace digital-ocean-namespace
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
通过使用以下命令安装 Calico CNI 插件解决了此问题:
curl https://docs.projectcalico.org/manifests/calico.yaml -O
kubectl apply -f calico.yaml
我通过安装 Pod 网络插件解决了这个问题, 我使用了 Flannel pod 网络,这是一个非常简单的覆盖网络,可以满足 kubernetes 的要求。
您可以使用以下命令执行此操作:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
你可以在 kubernetes 文档中阅读更多关于这一点的信息
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network
这是Github
https://github.com/kubernetes/kubernetes/issues/34695 中提到的代理错误
他们建议使用kubeadm init --use-kubernetes-version v1.4.1
但我完全改变了我的网络(没有代理),我设法设置了我的集群。
之后,我们可以设置pod网络kubectl apply -f ...
查看 https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#pod-network
我面临同样的错误,它看到它看到systemd
有问题。我不记得我上一个systemd
版本了。但是更新它为我解决了问题。
我遇到了同样的错误,我在从属节点加入集群后看到了问题。从属节点在加入后显示状态为"未就绪"。
我检查了kubectl describe node ksalve
并观察到了提到的问题。 深入挖掘后,我发现systemd
主节点和从节点不同。 在主站中,我已经配置了systemd
但是从属服务器只有默认cfgroup
。
从主节点中删除systemd
后,从属状态立即更改为Ready
。
我的问题是我在创建集群后更新主机名。通过这样做,就像主人不知道它是主人一样。
我还在跑步:
sudo hostname $(curl 169.254.169.254/latest/meta-data/hostname)
[1][2]
但现在我在集群初始化之前运行它
导致我从运行sudo journalctl -u kubelet
到这个的错误:
Unable to register node "ip-10-126-121-125.ec2.internal" with API server: nodes "ip-10-126-121-125.ec2.internal" is forbidden: node "ip-10-126-121-125" cannot modify node "ip-10-126-121-125.ec2.internal"
就我而言,这是因为我忘记打开8285
端口。 法兰绒使用8285
端口,您需要从防火墙打开它。
例如:
如果你使用法兰绒插件,而你的操作系统是 centOS:
firewall-cmd --permanent --add-port=8285/tcp
firewall-cmd --reload
就我而言,我重新启动了 docker,状态更改为就绪
sudo systemctl stop docker
sudo systemctl start docker
这适用于 AWS VPC CNI
-
Step1 : kubectl get mutatingwebhookconfiguration -oyaml> 变异.txt
-
第 2 步:Kubectl 删除 -f 突变.txt
-
步骤3:重启节点
-
步骤4:您应该能够看到节点已准备就绪
-
步骤5:重新安装变异网络钩子配置