我初始化一个5节点k8s集群,如下所示:

[root@lpdkubpoc01a ~]# kubeadm init --pod-network-cidr=10.96.0.0/16 --service-cidr=10.97.0.0/16 --image-repository quaytest.phx.aexp.com/control-plane
W0727 15:19:51.123991    1866 version.go:101] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt": Get https://dl.k8s.io/release/stable-1.txt: dial tcp: lookup dl.k8s.io on 10.2.88.196:53: no such host
W0727 15:19:51.124080    1866 version.go:102] falling back to the local client version: v1.17.5
W0727 15:19:51.124236    1866 validation.go:28] Cannot validate kube-proxy config - no validator is available
W0727 15:19:51.124244    1866 validation.go:28] Cannot validate kubelet config - no validator is available
[init] Using Kubernetes version: v1.17.5
[preflight] Running pre-flight checks
...
...
Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:
```bash
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
现在,您应该将Pod网络部署到群集。
使用列出的选项之一运行“kubectl apply -f [podnetwork] .yaml”:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
然后,您可以通过在每个节点上以root用户身份运行以下命令来加入任意数量的工作程序节点:
kubeadm join 10.22.76.244:6443 --token fa5ia8.oqs7jv9ii6wzex0w \
    --discovery-token-ca-cert-hash sha256:6680c99e6c49e0dce4522bc9768bfc2e7e2b38f5a10668d3a544554ab0d09ff1
我按照上述说明运行以下内容:
[root@lpdkubpoc01a ~]# mkdir -p $HOME/.kube
[root@lpdkubpoc01a ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
cp: overwrite ‘/root/.kube/config’? y
[root@lpdkubpoc01a ~]# chown $(id -u):$(id -g) $HOME/.kube/config
但是当我检查控制平面组件 pods 时,我看到它们全部用
  • 相同的IP地址
  • CIDR不正确=>似乎在主机网络中,这是一个很大的问题
    [root@lpdkubpoc01a ~]# kubectl get pods -n kube-system -owide
    NAME                                                READY   STATUS
    RESTARTS   AGE   IP             NODE                        NOMINATED NODE   READINESS GATES
    coredns-598947db54-dzrjk                            0/1     Pending   0          37s   <none>         <none>                      <none>           <none>
    coredns-598947db54-t2wch                            0/1     Pending   0          37s   <none>         <none>                      <none>           <none>
    etcd-lpdkubpoc01a.phx.aexp.com                      1/1     Running   0          50s   10.22.76.244   lpdkubpoc01a.phx.aexp.com   <none>           <none>
    kube-apiserver-lpdkubpoc01a.phx.aexp.com            1/1     Running   0          50s   10.22.76.244   lpdkubpoc01a.phx.aexp.com   <none>           <none>
    kube-controller-manager-lpdkubpoc01a.phx.aexp.com   1/1     Running   0          50s   10.22.76.244   lpdkubpoc01a.phx.aexp.com   <none>           <none>
    kube-proxy-8dbx2                                    1/1     Running   0          38s   10.22.76.244   lpdkubpoc01a.phx.aexp.com   <none>           <none>
    kube-scheduler-lpdkubpoc01a.phx.aexp.com            1/1     Running   0          50s   10.22.76.244   lpdkubpoc01a.phx.aexp.com   <none>           <none>
    

  • 有什么问题,我该如何解决? kube-system ns中的pod不应具有与主机相同的IP,并且绝对不能与主机位于同一网络中:
    [root@lpdkubpoc01a ~]# ifconfig
    docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet 172.17.0.1  netmask 255.255.0.0  broadcast 0.0.0.0
            ether 02:42:40:17:25:e4  txqueuelen 0  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    **eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 10.22.76.244  netmask 255.255.254.0  broadcast 10.22.77.255
            ether 00:50:56:b8:e1:84  txqueuelen 1000  (Ethernet)
            RX packets 73810789  bytes 8755922965 (8.1 GiB)
            RX errors 0  dropped 31388  overruns 0  frame 0
            TX packets 44487774  bytes 12389932340 (11.5 GiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0**
    
    eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9000
            inet 10.0.195.100  netmask 255.255.254.0  broadcast 10.0.195.255
            ether 00:50:56:b8:6c:23  txqueuelen 1000  (Ethernet)
            RX packets 3573616  bytes 708218742 (675.4 MiB)
            RX errors 0  dropped 50118  overruns 0  frame 0
            TX packets 830522  bytes 174979700 (166.8 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 263222455  bytes 44942504690 (41.8 GiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 263222455  bytes 44942504690 (41.8 GiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    谢谢!

    最佳答案

    它甚至看起来都不像您的Pod网络已配置。您可以安装CalicoWeave之类的东西。之后,您的coredns容器应该出现,其他的容器也应该获得不同的IP地址。
    过去,这些说明位于main kubeadm page上,但据我了解,实际上已经过时了,不赞成在CNI上进行更多的标准化,并让每个CNI提供程序提供自己的安装说明。
    ✌️

    关于docker - kubeadm init使用错误的IP地址启动集群,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63124537/

    10-09 06:51