Kubeadm導入Kubernetes 1.13で発生した問題解決レコード

19192 ワード

kubeadmは、Kubernetesクラスタの構築を支援し、導入時の問題と解決方法を記録します.
目次
  • 1.googleネットワークは
  • に達しない
  • 2.公式文書
  • 参照
  • 3.Swap
  • を閉じる
  • 4.設定マスターエラー
  • 5.Kubeadm initインストールミラーカード
  • 6.network構成
  • 7.ノード加入後NotReady
  • 8.再開回復master
  • 9.DNS解析kubernetes.default失敗
  • 10.tokenが期限切れになった後に
  • を再生成する.
    1.googleネットワークは達成できない
    https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64/repodata/repomd.xml: [Errno 14] curl#7 - "Failed to connect to 2404:6800:4005:809::200e:      "
    

    定番の問題は、梯子を持参する必要がありますよ!CentOSでyumを設定するproxy
    vi /etc/yum.conf
    #       :
    proxy=http://xxx.xx.x.xx:xxx #    
    

    はしごのない交換アリ源
    cat > /etc/yum.repos.d/kubernetes.repo <<EOF 
    [kubernetes] 
    name=Kubernetes 
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 
    enabled=1 
    gpgcheck=0 
    repo_gpgcheck=0 
    EOF
    

    2.公式文書参照
    インストールリファレンス
       :
      kubeadm.x86_64 0:1.13.0-0               kubectl.x86_64 0:1.13.0-0               kubelet.x86_64 0:1.13.0-0
           :
      cri-tools.x86_64 0:1.12.0-0           kubernetes-cni.x86_64 0:0.6.0-0           socat.x86_64 0:1.7.3.2-2.el7
      !
    

    3.Swapを閉じる
    F1213 10:20:53.304755    2266 server.go:261] failed to run Kubelet: Running with swap on is not supported, please disable swap! or set --fail-swap-on flag to false. /proc/swaps contained:
    

    実行swapoff -a4.マスターエラーの設定
     [ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1      
     [ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1
    [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`
    
    

    ヒントを1に設定
    echo "1" >/proc/sys/net/ipv4/ip_forward
    echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
    

    5.Kubeadm initインストールミラーが詰まっている
    また国家万里の長城で、これは解決が面倒で、直接代理店を設置する場所がないので、以下のスクリプトを採用してミラーを引き取ります.他に方法がない場合、問題を解決できる方法が一番いい方法です.
    # kubeadm config images list --kubernetes-version v1.13.0 #           
    #     
    docker pull mirrorgooglecontainers/kube-apiserver:v1.13.0
    docker pull mirrorgooglecontainers/kube-controller-manager:v1.13.0
    docker pull mirrorgooglecontainers/kube-scheduler:v1.13.0
    docker pull mirrorgooglecontainers/kube-proxy:v1.13.0
    docker pull mirrorgooglecontainers/pause:3.1
    docker pull mirrorgooglecontainers/etcd:3.2.24
    docker pull coredns/coredns:1.2.6
    
    #        
    docker tag docker.io/mirrorgooglecontainers/kube-proxy:v1.13.0 k8s.gcr.io/kube-proxy:v1.13.0
    docker tag docker.io/mirrorgooglecontainers/kube-scheduler:v1.13.0 k8s.gcr.io/kube-scheduler:v1.13.0
    docker tag docker.io/mirrorgooglecontainers/kube-apiserver:v1.13.0 k8s.gcr.io/kube-apiserver:v1.13.0
    docker tag docker.io/mirrorgooglecontainers/kube-controller-manager:v1.13.0 k8s.gcr.io/kube-controller-manager:v1.13.0
    docker tag docker.io/mirrorgooglecontainers/etcd:3.2.24  k8s.gcr.io/etcd:3.2.24
    docker tag docker.io/mirrorgooglecontainers/pause:3.1  k8s.gcr.io/pause:3.1
    docker tag docker.io/coredns/coredns:1.2.6  k8s.gcr.io/coredns:1.2.6
    
    #      
    docker rmi docker.io/mirrorgooglecontainers/kube-proxy:v1.13.0 
    docker rmi docker.io/mirrorgooglecontainers/kube-scheduler:v1.13.0 
    docker rmi docker.io/mirrorgooglecontainers/kube-apiserver:v1.13.0 
    docker rmi docker.io/mirrorgooglecontainers/kube-controller-manager:v1.13.0 
    docker rmi docker.io/mirrorgooglecontainers/etcd:3.2.24  
    docker rmi docker.io/mirrorgooglecontainers/pause:3.1 
    docker rmi docker.io/coredns/coredns:1.2.6  
    

    ooop、やっと見えました
    Your Kubernetes master 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/
    
    You can now join any number of machines by running the following on each node
    as root:
    
      kubeadm join 192.168.232.204:6443 --token m2hxkd.scxjrxgew6pyhvmb --discovery-token-ca-cert-hash sha256:8b94cefbe54ae4b3d7201012db30966c53870aad55be80a2888ec0da178c3610
    
    

    6.network構成
  • 各ホストのetchostsを構成し、各ホストのhostnameとipを共に組み込む.
  • #       /etc/hosts   
    192.168.232.204   k8a204
    192.168.232.203 k8a203
    192.168.232.202 k8a202
    
  • マニュアルに従って選択したネットワークをインストールし、dnsインストールOKを待ってnodeを追加します.
  • NAME     STATUS   ROLES    AGE    VERSION
    k8a204   Ready    master   6m6s   v1.13.0
    [root@localhost .kube]# kubectl get nodes
    NAME     STATUS     ROLES    AGE     VERSION
    k8a203   NotReady   <none>   4s      v1.13.0
    k8a204   Ready      master   6m19s   v1.13.0
    

    注意、配置が遅く、辛抱強く待つ
    kubectl get pods --all-namespaces
    ===============     ===============
    NAMESPACE     NAME                             READY   STATUS              RESTARTS   AGE
    kube-system   coredns-86c58d9df4-2vdvx         1/1     Running             0          7m32s
    kube-system   coredns-86c58d9df4-88fjk         1/1     Running             0          7m32s
    kube-system   etcd-k8a204                      1/1     Running             0          6m39s
    kube-system   kube-apiserver-k8a204            1/1     Running             0          6m30s
    kube-system   kube-controller-manager-k8a204   1/1     Running             0          6m30s
    kube-system   kube-proxy-tl7g5                 1/1     Running             0          7m32s
    kube-system   kube-proxy-w2jgl                 0/1     ContainerCreating   0          95s
    kube-system   kube-scheduler-k8a204            1/1     Running             0          6m49s
    

    7.ノード加入後NotReady
    前の質問に続きます:**ContainerCreating**状態の場合、辛抱強く待ってください.しかし、10分を超えても応答がない場合は、間違いに違いありません.最も主要な問題:ノードのミラーが引き下がらない.次の方法で行います.
  • マスターホスト内にミラーをファイルとして保存する:
  • docker save -o /opt/kube-pause.tar k8s.gcr.io/pause:3.1
    docker save -o /opt/kube-proxy.tar k8s.gcr.io/kube-proxy:v1.13.0
    docker save -o /opt/kube-flannel1.tar quay.io/coreos/flannel:v0.9.1
    docker save -o /opt/kube-flannel2.tar quay.io/coreos/flannel:v0.10.0-amd64
    docker save -o /opt/kube-calico1.tar quay.io/calico/cni:v3.3.2
    docker save -o /opt/kube-calico2.tar quay.io/calico/node:v3.3.2
    
  • nodeコンピュータ
  • にファイルをコピー
     scp /opt/*.tar [email protected]:/opt/
    
  • nodeノードでdockerインポート
  • を実行する
    docker load -i /opt/kube-flannel1.tar
    docker load -i /opt/kube-flannel2.tar
    docker load -i /opt/kube-proxy.tar
    docker load -i /opt/kube-pause.tar
    docker load -i /opt/kube-calico1.tar
    docker load -i /opt/kube-calico2.tar
    
  • nodeノードミラーファイル
  • を確認する
    docker images
    ==============================================     ======================================
    REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
    k8s.gcr.io/kube-proxy    v1.13.0             8fa56d18961f        9 days ago          80.2 MB
    quay.io/calico/node      v3.3.2              4e9be81e3a59        9 days ago          75.3 MB
    quay.io/calico/cni       v3.3.2              490d921fa49c        9 days ago          75.4 MB
    quay.io/coreos/flannel   v0.10.0-amd64       f0fad859c909        10 months ago       44.6 MB
    k8s.gcr.io/pause         3.1                 da86e6ba6ca1        11 months ago       742 kB
    quay.io/coreos/flannel   v0.9.1              2b736d06ca4c        13 months ago       51.3 MB
    

    OK、できました.すべてのサービスはrunningです.
    [root@localhost .kube]# kubectl get pods --all-namespaces
    ====================================     ========================================
    NAMESPACE     NAME                             READY   STATUS    RESTARTS   AGE
    kube-system   calico-node-4dsg5                1/2     Running   0          42m
    kube-system   calico-node-5dtk2                1/2     Running   0          41m
    kube-system   calico-node-78qvp                1/2     Running   0          41m
    kube-system   coredns-86c58d9df4-26vr7         1/1     Running   0          43m
    kube-system   coredns-86c58d9df4-s5ljf         1/1     Running   0          43m
    kube-system   etcd-k8a204                      1/1     Running   0          42m
    kube-system   kube-apiserver-k8a204            1/1     Running   0          42m
    kube-system   kube-controller-manager-k8a204   1/1     Running   0          42m
    kube-system   kube-proxy-8c7hs                 1/1     Running   0          41m
    kube-system   kube-proxy-dls8l                 1/1     Running   0          41m
    kube-system   kube-proxy-t65tc                 1/1     Running   0          43m
    kube-system   kube-scheduler-k8a204            1/1     Running   0          42m
    

    8.リカバリマスターの再起動
    swapoff -a
    #       
    #       : docker start $(docker ps -aq)  
    docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
    systemctl start kubelet
    #       
    journalctl -xefu kubelet
    # docker     
    docker run --restart=always
    

    9.DNS解析kubernetes.default失敗
    busyboxをインストールしてdns検出を行い、次のエラーが発生しています.
    kubectl exec -ti  busybox -- nslookup kubernetes.default
    =============================     ============================
    Server:         10.96.0.10
    Address:        10.96.0.10:53
    ** server can't find kubernetes.default: NXDOMAIN
    *** Can't find kubernetes.default: No answer
    

    調べたところ、新版busyboxのdns解析に変化やbugがあり、旧バージョンbusybox images<=1.28.4を採用した後、テストOK.
    10.token期限切れ後に再生成
     kubeadm token list
    =============================     ============================
    TOKEN                     TTL         EXPIRES                     USAGES                 DESCRIPTION    EXTRA GROUPS
    85iiq4.3y8s1ri8erb7ah6b   <invalid>   2018-12-22T16:40:49+08:00   authentication,signing   The default bootstrap token generated by 'kubeadm init'.   system:bootstrappers:kubeadm:default-node-token
    

    次のコマンドで新しいtokenを生成します.
    #     token
    kubeadm token create
    #     token hash 
    openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
    #     token hash     
    # master  ,token,hash     
    kubeadm join 192.168.232.204:6443 --token m87q91.gbcqhfx9ansvaf3o --discovery-token-ca-cert-hash sha256:fdd34ef6c801e382f3fb5b87bc9912a120bf82029893db121b9c8eae29e91c62