--- html: toc: true offline: true export_on_save: html: true --- # kubernetes 1.13 upgrade --- 3대 서버에 마스터 1개, 노드1, 노도2의 쿠버네티스 클러스터를 구성하기 위한 설치 방법을 설명합니다. 각 서버의 호스트 이름 및 IP 는 아래와 같이 가정합니다. 사용자의 클러스터 환경에 맞게 IP를 수정하시기 바랍니다. csle1 : 192.168.0.5 (master) csle2 : 192.168.0.6 (node1) csle3 : 192.168.0.7 (node2) ## 모든 서버에 공통으로 설치하기 ### [모든 서버 공통] 기존 k8s 삭제 ``` sudo su - kubeadm reset ``` ``` systemctl stop kubelet systemctl stop docker rm -rf /var/lib/cni/ rm -rf /var/lib/kubelet/* # rm -rf /etc/cni/ rm -rf /run/flannel ifconfig cni0 down ifconfig flannel.1 down ifconfig docker0 down ip link delete cni0 ip link delete flannel.1 apt-get purge -y kubeadm kubectl kubelet kubernetes-cni kube* apt-get autoremove sudo rm -rf ~/.kube systemctl start docker ``` ### [모든 서버 공통] kubernetes 최신 버전 install (2019.03.10일 기준 1.13.4) ``` curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - cat << EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list deb https://apt.kubernetes.io/ kubernetes-xenial main EOF sudo apt-get update && \ sudo apt-get install -y kubelet=1.13.4-00 kubeadm=1.13.4-00 kubectl=1.13.4-00 kubernetes-cni=0.6.0-00 ``` ### [모든 서버 공통] docker daemon.json 파일 수정 https://kubernetes.io/docs/setup/cri/ ``` cat > /etc/docker/daemon.json < 3m20s v1.13.4 csle3 Ready 3m10s v1.13.4 csle4 Ready 2m17s v1.13.4 ``` ``` kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard kubectl proxy --port=9999 --address='192.168.0.5' --accept-hosts="^*$" & ``` ### [Master: csle1] Dashboard URL에 접속하기 http://192.168.0.5:9999/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/ # FAQ ## [ERROR] coredns stuck at ContainerCreating ### kubernetes 홈페이지의 FAQ 참조 https://kubernetes.io/docs/setup/independent/troubleshooting-kubeadm/ 업그레드를 하고 coredns가 ContainerCreating되는 경우, ``` csle@csle1:~/ksb-csle/kubernetes/env_set$ kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-86c58d9df4-8vtpz 0/1 ContainerCreating 0 23m kube-system coredns-86c58d9df4-w46t5 1/1 Running 0 23m kube-system etcd-csle1 1/1 Running 0 22m kube-system heapster-6cc9489ff-nfw2g 1/1 Running 0 119s kube-system kube-apiserver-csle1 1/1 Running 0 22m kube-system kube-controller-manager-csle1 1/1 Running 0 22m kube-system kube-flannel-ds-amd64-htfdm 1/1 Running 0 2m3s kube-system kube-flannel-ds-amd64-hwt4q 1/1 Running 0 2m3s kube-system kube-flannel-ds-amd64-m74ll 1/1 Running 0 2m3s kube-system kube-flannel-ds-amd64-p7lds 1/1 Running 0 2m3s kube-system kube-proxy-bzjvj 1/1 Running 0 9m21s kube-system kube-proxy-gskr7 1/1 Running 0 22m kube-system kube-proxy-np85l 1/1 Running 0 9m11s kube-system kube-proxy-zvnf4 1/1 Running 0 23m kube-system kube-scheduler-csle1 1/1 Running 0 22m kube-system kubernetes-dashboard-79ff88449c-x6vn7 1/1 Running 0 2m3s kube-system monitoring-grafana-b575bb8ff-zv6bm 1/1 Running 0 2m kube-system monitoring-influxdb-6d65f866f5-hrbg7 1/1 Running 0 2m ``` kubectl describe po coredns-86c58d9df4-8vtpz -n kube-system ``` Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 35m (x2 over 35m) default-scheduler 0/1 nodes are available: 1 node(s) had taints that the pod didn't tolerate. Warning FailedScheduling 22m (x17 over 35m) default-scheduler 0/2 nodes are available: 2 node(s) had taints that the pod didn't tolerate. Warning FailedScheduling 21m (x4 over 21m) default-scheduler 0/3 nodes are available: 3 node(s) had taints that the pod didn't tolerate. Warning FailedScheduling 15m (x18 over 21m) default-scheduler 0/4 nodes are available: 4 node(s) had taints that the pod didn't tolerate. Warning FailedCreatePodSandBox 14m kubelet, csle4 Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "e3d5c11d149862e9363fe99f6e9c13437940b9e5b3ec7b2f067217703ec25667" network for pod "coredns-86c58d9df4-8vtpz": NetworkPlugin cni failed to set up pod "coredns-86c58d9df4-8vtpz_kube-system" network: failed to set bridge addr: could not add IP address to "cni0": file exists Warning FailedCreatePodSandBox 14m kubelet, csle4 Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "6acb551f701e76652d6d1e4fdb061ba9e28daaa7f079d3c88c318487463d4ac8" network for pod "coredns-86c58d9df4-8vtpz": NetworkPlugin cni failed to set up pod "coredns-86c58d9df4-8vtpz_kube-system" network: failed to set bridge addr: "cni0" already has an IP address different from 10.244.3.1/24 Warning FailedCreatePodSandBox 14m kubelet, csle4 Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "b260044185b610f182bd124fa09e280b75ba3bd7ca2b0bcfb312f85c4b0aab9c" network for pod "coredns-86c58d9df4-8vtpz": NetworkPlugin cni failed to set up pod "coredns-86c58d9df4-8vtpz_kube-system" network: failed to set bridge addr: "cni0" already has an IP address different from 10.244.3.1/24 Warning FailedCreatePodSandBox 14m kubelet, csle4 Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "398151b2054f7568246fad677992018367d086e192ff5418aacffa34bf242b04" network for pod "coredns-86c58d9df4-8vtpz": NetworkPlugin cni failed to set up pod "coredns-86c58d9df4-8vtpz_kube-system" network: failed to set bridge addr: "cni0" already has an IP address different from 10.244.3.1/24 Warning FailedCreatePodSandBox 14m kubelet, csle4 Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "bdb5f14dd25285df5e59d0eebb9784952fbf3d776d2c8050ee72344a0028259c" network for pod "coredns-86c58d9df4-8vtpz": NetworkPlugin cni failed to set up pod "coredns-86c58d9df4-8vtpz_kube-system" network: failed to set bridge addr: "cni0" already has an IP address different from 10.244.3.1/24 Warning FailedCreatePodSandBox 14m kubelet, csle4 Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "f65c994064131557062e70b17569f51aebb5494d97002281ddbf5296e5f543cd" network for pod "coredns-86c58d9df4-8vtpz": NetworkPlugin cni failed to set up pod "coredns-86c58d9df4-8vtpz_kube-system" network: failed to set bridge addr: "cni0" already has an IP address different from 10.244.3.1/24 Warning FailedCreatePodSandBox 14m kubelet, csle4 Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "b65fd62d9544d5f713f98d40d5089421e7c206eba1ed5e19c8e56cb65e32a74d" network for pod "coredns-86c58d9df4-8vtpz": NetworkPlugin cni failed to set up pod "coredns-86c58d9df4-8vtpz_kube-system" network: failed to set bridge addr: "cni0" already has an IP address different from 10.244.3.1/24 Warning FailedCreatePodSandBox 14m kubelet, csle4 Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "caf0985a7467322508e3447f35a02985692e944969cbfe082899cfa0ea0c8cae" network for pod "coredns-86c58d9df4-8vtpz": NetworkPlugin cni failed to set up pod "coredns-86c58d9df4-8vtpz_kube-system" network: failed to set bridge addr: "cni0" already has an IP address different from 10.244.3.1/24 Warning FailedCreatePodSandBox 14m kubelet, csle4 Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "4c771f07e241ae1564854c65f48c53afa6166e3231fbc4c356b70753cba33585" network for pod "coredns-86c58d9df4-8vtpz": NetworkPlugin cni failed to set up pod "coredns-86c58d9df4-8vtpz_kube-system" network: failed to set bridge addr: "cni0" already has an IP address different from 10.244.3.1/24 Normal SandboxChanged 14m (x12 over 14m) kubelet, csle4 Pod sandbox changed, it will be killed and re-created. Warning FailedCreatePodSandBox 4m28s (x266 over 14m) kubelet, csle4 (combined from similar events): Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "01c5bc76700598fb67bd2fda4694f1992556b73afb9389955639ec1b2c08dda7" network for pod "coredns-86c58d9df4-8vtpz": NetworkPlugin cni failed to set up pod "coredns-86c58d9df4-8vtpz_kube-system" network: failed to set bridge addr: "cni0" already has an IP address different from 10.244.3.1/24 ``` ### [해결방법] https://kubernetes.io/docs/setup/independent/troubleshooting-kubeadm/#coredns-pods-have-crashloopbackoff-or-error-state https://coredns.io/plugins/loop/#troubleshooting /etc/resolv.conf 파일내에 nameserver 127.0.1.1 만 존재하는 경우 발생한다. 따라서, 아래와 같이 실행하여야 함. ``` vi /etc/resolvconf/resolv.conf.d/tail nameserver 8.8.8.8 ``` ``` sudo service resolvconf restart ``` vi /etc/resolv.conf ``` # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 127.0.1.1 nameserver 8.8.8.8 ```