zoukankan      html  css  js  c++  java
  • 安装k8s遇到的问题

    最大的教训是:遇到问题先看一下视频,是不是跟自己操作的不一样,如果没发现问题,再去网上查询。

    1、对master节点:系统初始化,包括修改主机名,配置yum源,安装依赖包,设置防火墙,关闭selinux,调整内核参数,升级内核等。

    2、对master节点:部署K8s,包括配置kube-proxy,安装docker,配置docker镜像源,安装kubeadm,配置各个虚拟机的静态ip,

    3、把master节点拷贝为node1和node2

    初始化主节点,加入主节点以及其余节点,部署网络

    其中遇到的问题是:初始化kubeadm

    kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log

    1、kubeadm在k8s.gcr.io网站中,但是网络长城拦截无法访问。

    2、因此配置docker的代理,因为docker实际是demon进程在拉取,所以要配置docker的全局代理,之后再重启docker

    #!/bin/bash
    cat >> /etc/systemd/system/docker.service.d/http-proxy.conf <<EOF
    [Service]
    Environment="HTTP_PROXY=http://192.168.1.8:1082"
    Environment="HTTPS_PROXY=http://192.168.1.8:1082"
    EOF
    systemctl daemon-reload
    systemctl restart docker

    3、最后,即使代理配置成功了,但是网速太慢,还是从其他地方拷贝的镜像,再load进docker里面

    参考 https://github.com/cookcodeblog/k8s-deploy/blob/master/kubeadm/04_pull_kubernetes_images_from_aliyun.sh

    我的代码如下:

    #!/bin/bash
    
    cd /root/kubeadm-basic.images
    for i in $( ls /root/kubeadm-basic.images )
    do
        docker load -i $i
    done

    4、初始化错误

    此时需要删除镜像,参考:https://blog.csdn.net/lansye/article/details/79984077

    #重置kubeadm

    kubeadm reset

    # 停止相关服务
    systemctl stop docker kubelet etcd
    #删除所有容器
    docker rm -f $(sudo docker ps -qa)

    5、初始化错误解决:查看日志

    [root@k8s-master01 ~]# journalctl -xeu kubelet
    6月 26 10:47:00 k8s-master01 kubelet[29773]: E0626 10:47:00.237357   29773 kubelet.go:2169] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:d
    6月 26 10:47:02 k8s-master01 kubelet[29773]: W0626 10:47:02.862214   29773 cni.go:213] Unable to update cni config: No networks found in /etc/cni/net.d

    根据google搜索,是flannel没配置好。

    参考:https://github.com/kubernetes/kubeadm/issues/292

    https://blog.csdn.net/qq_34857250/article/details/82562514

    根据网上的解决方案,没有解决,遇到问题如下:

    [root@k8s-master01 ~]# kubectl apply -f kube-flannel.yaml
    unable to recognize "kube-flannel.yaml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
    unable to recognize "kube-flannel.yaml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused

    继续查找到这个帖子https://github.com/kubernetes/kubeadm/issues/1031

    https://github.com/kubernetes/website/pull/16575/files

    没法现问题。

    最后升级为1.18.4,翻墙翻不过去,无法安装,降级会1.15.1时,发现了 kubernetes-cni-0.8.6这个依赖。

    感觉这个依赖的版本可能有问题,查找原视频,发现视频里当时依赖的是kubernetes-cni-0.7.5,于是改为如下:

    yum -y  install  kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1 kubernetes-cni-0.7.5

    启动成功,打印如下:

    Your Kubernetes control-plane has initialized successfully!
    
    To start using your cluster, you need to run the following as a regular user:
    
      mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    You should now deploy a pod network to the cluster.
    Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
      https://kubernetes.io/docs/concepts/cluster-administration/addons/
    
    Then you can join any number of worker nodes by running the following on each as root:

    kubeadm join 192.168.1.10:6443 --token abcdef.0123456789abcdef

        --discovery-token-ca-cert-hash sha256:494d4e8d714a490d2dd160686b023fed4766b44289e30f1c5b2b20dde21a85bb 

     

    按照提示执行命令如下:

    [root@k8s-master01 ~]# mkdir -p $HOME/.kube

    [root@k8s-master01 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

    [root@k8s-master01 ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

    [root@k8s-master01 ~]# export KUBECONFIG=$HOME/.kube/config

    添加网络遇到错误:

    [root@k8s-master01 ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    The connection to the server raw.githubusercontent.com was refused - did you specify the right host or port?

    解决如下:

    wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

    kubectl create -f kube-flannel.yml

    验证如下:

    [root@k8s-master01 ~]# kubectl create -f kube-flannel.yml
    podsecuritypolicy.policy/psp.flannel.unprivileged created
    clusterrole.rbac.authorization.k8s.io/flannel created
    clusterrolebinding.rbac.authorization.k8s.io/flannel created
    serviceaccount/flannel created
    configmap/kube-flannel-cfg created
    daemonset.apps/kube-flannel-ds-amd64 created
    daemonset.apps/kube-flannel-ds-arm64 created
    daemonset.apps/kube-flannel-ds-arm created
    daemonset.apps/kube-flannel-ds-ppc64le created
    daemonset.apps/kube-flannel-ds-s390x created
    [root@k8s-master01 ~]# kubectl get pod  -n kube-system
    NAME                                   READY   STATUS    RESTARTS   AGE
    coredns-5c98db65d4-czm6h               1/1     Running   0          5h19m
    coredns-5c98db65d4-wnwx5               1/1     Running   0          5h19m
    etcd-k8s-master01                      1/1     Running   0          5h18m
    kube-apiserver-k8s-master01            1/1     Running   0          5h18m
    kube-controller-manager-k8s-master01   1/1     Running   0          5h18m
    kube-flannel-ds-amd64-b5xmn            1/1     Running   0          9m26s
    kube-proxy-xg8ch                       1/1     Running   0          5h19m
    kube-scheduler-k8s-master01            1/1     Running   0          5h18m
    [root@k8s-master01 ~]# kubectl get node
    NAME           STATUS   ROLES    AGE     VERSION
    k8s-master01   Ready    master   5h20m   v1.15.1

    在两个node节点分别执行

    kubeadm join 192.168.1.10:6443 --token abcdef.0123456789abcdef     --discovery-token-ca-cert-hash sha256:494d4e8d714a490d2dd160686b023fed4766b44289e30f1c5b2b20dde21a85bb

    [root@k8s-node01 ~]# kubeadm join 192.168.1.10:6443 --token abcdef.0123456789abcdef 
    >     --discovery-token-ca-cert-hash sha256:494d4e8d714a490d2dd160686b023fed4766b44289e30f1c5b2b20dde21a85bb
    [preflight] Running pre-flight checks
        [WARNING SystemVerification]: this Docker version is not on the list of validated versions: 19.03.12. Latest validated version: 18.09
    [preflight] Reading configuration from the cluster...
    [preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
    [kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.15" ConfigMap in the kube-system namespace
    [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
    [kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
    [kubelet-start] Activating the kubelet service
    [kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
    
    This node has joined the cluster:
    * Certificate signing request was sent to apiserver and a response was received.
    * The Kubelet was informed of the new secure connection details.
    
    Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
    [root@k8s-master01 ~]# kubectl get node
    NAME           STATUS   ROLES    AGE    VERSION
    k8s-master01   Ready    master   8h     v1.15.1
    k8s-node01     Ready    <none>   120m   v1.15.1
    k8s-node02     Ready    <none>   120m   v1.15.1

     

     

     

  • 相关阅读:
    如何在Ubuntu Server 18.04上安装Microsoft的Procmon
    如何在Ubuntu 20.04上安装Wine 5.0
    如何在Kali Linux 2020中启用SSH服务
    如何在Ubuntu 20.04 LTS Focal Fossa上安装Apache Groovy
    如何使用命令在Ubuntu 20.04 Linux上安装Vmware Tools
    在Ubuntu 20.04 LTS Focal Fossa上安装Zabbix Agent
    hdu 2089 不要62
    hdu 2093 成绩排名
    hdu 2104 hide handkerchief
    leetcode147对链表进行插入排序
  • 原文地址:https://www.cnblogs.com/lakeslove/p/13196609.html
Copyright © 2011-2022 走看看