Kubernetes 入门(4)集群配置 | 小册免费学

547 阅读3分钟

1. 集群配置

报错: message: 'runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized'

原因:cni未被初始化(CNI 是 Container Network Interface 的缩写,是 K8S 用于配置 Linux 容器网络的接口规范。)

[root@slave zkpk]# kubectl get nodes -o yaml
apiVersion: v1
items:
- apiVersion: v1
  kind: Node
  metadata:
    annotations:
      kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
      node.alpha.kubernetes.io/ttl: "0"
      volumes.kubernetes.io/controller-managed-attach-detach: "true"
    creationTimestamp: "2021-04-27T13:36:43Z"
    labels:
      beta.kubernetes.io/arch: amd64
      beta.kubernetes.io/os: linux
      kubernetes.io/arch: amd64
      kubernetes.io/hostname: slave
      kubernetes.io/os: linux
      node-role.kubernetes.io/master: ""
    name: slave
    resourceVersion: "5420"
    selfLink: /api/v1/nodes/slave
    uid: 77ec909a-04d8-4f87-9f2a-8cfb3d48b9bc
  spec:
    podCIDR: 10.244.0.0/24
    taints:
    - effect: NoSchedule
      key: node-role.kubernetes.io/master
    - effect: NoSchedule
      key: node.kubernetes.io/not-ready
  status:
    addresses:
    - address: 192.168.211.130
      type: InternalIP
    - address: slave
      type: Hostname
    allocatable:
      cpu: "2"
      ephemeral-storage: "27037535802"
      hugepages-1Gi: "0"
      hugepages-2Mi: "0"
      memory: 893524Ki
      pods: "110"
    capacity:
      cpu: "2"
      ephemeral-storage: 29337604Ki
      hugepages-1Gi: "0"
      hugepages-2Mi: "0"
      memory: 995924Ki
      pods: "110"
    conditions:
    - lastHeartbeatTime: "2021-04-27T14:44:55Z"
      lastTransitionTime: "2021-04-27T13:36:37Z"
      message: kubelet has sufficient memory available
      reason: KubeletHasSufficientMemory
      status: "False"
      type: MemoryPressure
    - lastHeartbeatTime: "2021-04-27T14:44:55Z"
      lastTransitionTime: "2021-04-27T13:36:37Z"
      message: kubelet has no disk pressure
      reason: KubeletHasNoDiskPressure
      status: "False"
      type: DiskPressure
    - lastHeartbeatTime: "2021-04-27T14:44:55Z"
      lastTransitionTime: "2021-04-27T13:36:37Z"
      message: kubelet has sufficient PID available
      reason: KubeletHasSufficientPID
      status: "False"
      type: PIDPressure
    - lastHeartbeatTime: "2021-04-27T14:44:55Z"
      lastTransitionTime: "2021-04-27T13:36:37Z"
      message: 'runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady
        message:docker: network plugin is not ready: cni config uninitialized'
      reason: KubeletNotReady

安装网络插件cni

kubectl apply -fhttps://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

启动成功,状态变为ready了

[root@slave zkpk]# kubectl get nodes
NAME    STATUS   ROLES    AGE    VERSION
slave   Ready    master   158m   v1.15.0

现在可以查看所有pod的状态了

[root@slave zkpk]# kubectl get pods --all-namespaces
NAMESPACE     NAME                            READY   STATUS             RESTARTS   AGE
kube-system   coredns-bccdc95cf-lpbg6         1/1     Running            0          3h21m
kube-system   coredns-bccdc95cf-m5dnz         1/1     Running            0          3h21m
kube-system   etcd-slave                      1/1     Running            0          3h20m
kube-system   kube-apiserver-slave            1/1     Running            0          3h20m
kube-system   kube-controller-manager-slave   0/1     CrashLoopBackOff   23         3h20m
kube-system   kube-flannel-ds-amd64-zcsn9     1/1     Running            0          139m
kube-system   kube-proxy-tl4xq                1/1     Running            0          3h21m
kube-system   kube-scheduler-slave            1/1     Running            22         3h20m

2. 加入node

  1. 先按在master节点上那样,安装docker等软件

  2. 在matser上生成token

[root@slave zkpk]# kubeadm token create 
vxx3mh.i7voxmkglvli99dt
[root@slave zkpk]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
5168f393e212678c9954bbf8f5003df29d11fe41dbeca240dca90d7bc3cb77df

  1. 在node节点上运行如下命令(token那些使用刚刚在master上生成的)

[root@slave1 zkpk]# kubeadm join 192.168.211.130:6443 --token vxx3mh.i7voxmkglvli99dt  --discovery-token-ca-cert-hash sha256:5168f393e212678c9954bbf8f5003df29d11fe41dbeca240dca90d7bc3cb77df

  1. 测试节点是否已经加入集群
[root@slave1 zkpk]# kubectl get node
NAME     STATUS   ROLES    AGE   VERSION
slave    Ready    master   45h   v1.15.0
slave1   Ready    <none>   23m   v1.15.0