<p>kubeadm 1.6.1์ด ์„ค์น˜๋œ CentOS 7.2์—์„œ ์ œ์–ด ํ‰๋ฉด์ด ์ค€๋น„๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” kubeadm init</p>

์— ๋งŒ๋“  2017๋…„ 04์›” 06์ผ  ยท  52์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: kubernetes/kubeadm

kubeadm 1.6.1์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  kubeadm init๋ฅผ ์‹œ์ž‘ํ•œ ํ›„ [apiclient] Created API ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ฉˆ์ถ”๊ณ  ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์ด ์ค€๋น„๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

kubeadm init --kubernetes-version v1.6.1 --apiserver-advertise-address=10.X.X.X
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[init] Using Kubernetes version: v1.6.1
[init] Using Authorization mode: RBAC
[preflight] Running pre-flight checks
[certificates] Generated CA certificate and key.
[certificates] Generated API server certificate and key.
[certificates] API Server serving cert is signed for DNS names [<hostname> kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 10.X.X.X]
[certificates] Generated API server kubelet client certificate and key.
[certificates] Generated service account token signing key and public key.
[certificates] Generated front-proxy CA certificate and key.
[certificates] Generated front-proxy client certificate and key.
[certificates] Valid certificates and keys now exist in "/etc/kubernetes/pki"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"
[apiclient] Created API client, waiting for the control plane to become ready

๋‹ค์Œ 10-kubeadm.conf๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--kubeconfig=/etc/kubernetes/kubelet.conf --require-kubeconfig=true"
Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true"
Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin"
Environment="KUBELET_DNS_ARGS=--cluster-dns=192.168.0.10 --cluster-domain=cluster.local"
Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt"
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_EXTRA_ARGS --cgroup-driver=systemd

๋”ฐ๋ผ์„œ ๋” ์ด์ƒ cgroup ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋˜ํ•œ iptables ๊ทœ์น™์„ ํ”Œ๋Ÿฌ์‹œํ•˜๊ณ  selinux๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‚ด ๋งˆ์Šคํ„ฐ์— ์‚ฌ์šฉํ•˜๋ ค๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ IP ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ํ†ต๊ณผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋กœ๊ทธ์—์„œ,

Apr 06 12:55:55 hostname kubelet[5174]: I0406 12:55:55.087703    5174 kubelet_node_status.go:230] Setting node annotation to enable volume controller attach/detach
Apr 06 12:55:55 hostname kubelet[5174]: I0406 12:55:55.146554    5174 kubelet_node_status.go:77] Attempting to register node hostname
Apr 06 12:55:55 hostname kubelet[5174]: E0406 12:55:55.147133    5174 kubelet_node_status.go:101] Unable to register node "hostname" with API server: Post https://10.X.X.X:6443/api/v1/nodes: dial tcp 10.X.X.X:6443: getsockopt: connection refused
Apr 06 12:55:55 hostname kubelet[5174]: E0406 12:55:55.553801    5174 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/kubelet.go:382: Failed to list *v1.Service: Get https://10.X.X.X:6443/api/v1/services?resourceVersion=0: dial tcp 10.X.X.X:6443: getsockopt: connection refused
Apr 06 12:55:55 hostname kubelet[5174]: E0406 12:55:55.555837    5174 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/kubelet.go:390: Failed to list *v1.Node: Get https://10.X.X.X:6443/api/v1/nodes?fieldSelector=metadata.name%3Dhostname&resourceVersion=0: dial tcp 10.X.X.X:6443: getsockopt: connection refused
Apr 06 12:55:55 hostname kubelet[5174]: E0406 12:55:55.556271    5174 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:46: Failed to list *v1.Pod: Get https://10.X.X.X:6443/api/v1/pods?fieldSelector=spec.nodeName%3Dhostname&resourceVersion=0: dial tcp 10.X.X.X:6443: getsockopt: connection refused
Apr 06 12:55:55 hostname kubelet[5174]: E0406 12:55:55.828198    5174 event.go:208] Unable to write event: 'Post https://10.X.X.X:6443/api/v1/namespaces/default/events: dial tcp 10.X.X.X:6443: getsockopt: connection refused' (may retry after sleeping)
Apr 06 12:55:56 hostname kubelet[5174]: E0406 12:55:56.555099    5174 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/kubelet.go:382: Failed to list *v1.Service: Get https://10.X.X.X:6443/api/v1/services?resourceVersion=0: dial tcp 10.X.X.X:6443: getsockopt: connection refused
Apr 06 12:55:56 hostname kubelet[5174]: E0406 12:55:56.556772    5174 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/kubelet.go:390: Failed to list *v1.Node: Get https://10.X.X.X:6443/api/v1/nodes?fieldSelector=metadata.name%3Dhostname&resourceVersion=0: dial tcp 10.X.X.X:6443: getsockopt: connection refused
Apr 06 12:55:56 hostname kubelet[5174]: E0406 12:55:56.557978    5174 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:46: Failed to list *v1.Pod: Get https://10.X.X.X:6443/api/v1/pods?fieldSelector=spec.nodeName%3Dhostname&resourceVersion=0: dial tcp 10.X.X.X:6443: getsockopt: connection refused
Apr 06 12:55:56 hostname kubelet[5174]: I0406 12:55:56.760733    5174 kubelet.go:1752] skipping pod synchronization - [Failed to start ContainerManager systemd version does not support ability to start a slice as transient unit]
Apr 06 12:55:56 hostname kubelet[5174]: W0406 12:55:56.858684    5174 cni.go:157] Unable to update cni config: No networks found in /etc/cni/net.d
Apr 06 12:55:56 hostname kubelet[5174]: E0406 12:55:56.858931    5174 kubelet.go:2067] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
Apr 06 12:55:57 hostname kubelet[5174]: E0406 12:55:57.556067    5174 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/kubelet.go:382: Failed to list *v1.Service: Get https://10.X.X.X:6443/api/v1/services?resourceVersion=0: dial tcp 10.X.X.X:6443: getsockopt: connection refused
Apr 06 12:55:57 hostname kubelet[5174]: E0406 12:55:57.557441    5174 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/kubelet.go:390: Failed to list *v1.Node: Get https://10.X.X.X:6443/api/v1/nodes?fieldSelector=metadata.name%3Dhostname&resourceVersion=0: dial tcp 10.X.X.X:6443: getsockopt: connection refused
Apr 06 12:55:57 hostname kubelet[5174]: E0406 12:55:57.558822    5174 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:46: Failed to list *v1.Pod: Get https://10.X.X.X:6443/api/v1/pods?fieldSelector=spec.nodeName%3Dhostname&resourceVersion=0: dial tcp 10.X.X.X:6443: getsockopt: connection refused
Apr 06 12:55:58 hostname kubelet[5174]: I0406 12:55:58.347460    5174 kubelet_node_status.go:230] Setting node annotation to enable volume controller attach/detach
Apr 06 12:55:58 hostname kubelet[5174]: I0406 12:55:58.405762    5174 kubelet_node_status.go:77] Attempting to register node hostname
Apr 06 12:55:58 hostname kubelet[5174]: E0406 12:55:58.406037    5174 kubelet_node_status.go:101] Unable to register node "hostname" with API server: Post https://10.X.X.X:6443/api/v1/nodes: dial tcp 10.X.X.X:6443: getsockopt: connection refused
Apr 06 12:55:58 hostname kubelet[5174]: E0406 12:55:58.556829    5174 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/kubelet.go:382: Failed to list *v1.Service: Get https://10.X.X.X:6443/api/v1/services?resourceVersion=0: dial tcp 10.X.X.X:6443: getsockopt: connection refused

๋ฒ„์ „

kubeadm ๋ฒ„์ „ ( kubeadm version ์‚ฌ์šฉ):
kubeadm ๋ฒ„์ „
kubeadm ๋ฒ„์ „: version.Info{์ฃผ์š”:"1", ๋ถ€:"6", GitVersion:"v1.6.1", GitCommit:"b0b7a323cc5a4a2019b2e9520c21c7830b7f708e", GitTreeState:-"clean"20, BuildDate:2 27Z", GoVersion:"go1.7.5", ์ปดํŒŒ์ผ๋Ÿฌ:"gc", ํ”Œ๋žซํผ:"linux/amd64"}

ํ™˜๊ฒฝ :

  • Kubernetes ๋ฒ„์ „ ( kubectl version ์‚ฌ์šฉ):
  • ํด๋ผ์šฐ๋“œ ์ œ๊ณต์ž ๋˜๋Š” ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ :
    ๋ฒ ์–ด๋ฉ”ํƒˆ ๋…ธ๋“œ
  • OS (์˜ˆ: /etc/os-release):
    ๊ณ ์–‘์ด /etc/redhat-release
    CentOS Linux ๋ฆด๋ฆฌ์Šค 7.2.1511(์ฝ”์–ด)
  • ์ปค๋„ (์˜ˆ: uname -a ):
    ์šฐ๋‚˜๋ฉ” -a
    Linux ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ 3.10.0-327.18.2.el7.x86_64 #1 SMP Thu May 12 11:03:55 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
  • ๊ธฐํƒ€ :
    ๋„์ปค -v
    Docker ๋ฒ„์ „ 1.12.6, ๋นŒ๋“œ 96d83a5/1.12.6
    rpm -qa | ๊ทธ๋ ™ ํ๋ธŒ
    kubelet-1.6.1-0.x86_64
    kubernetes-cni-0.5.1-0.x86_64
    kubeadm-1.6.1-0.x86_64
    kubectl-1.6.1-0.x86_64

๋ฌด์Šจ ์ผ์ด์—์š”?

์ œ์–ด ํ”Œ๋ ˆ์ธ์ด ์ค€๋น„๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ Kubeadm์ด ๋ฉˆ์ถค

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚  ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒํ–ˆ์Šต๋‹ˆ๊นŒ?

init๋ฅผ ๊ฑฐ์ณ ์™„๋ฃŒํ–ˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

kinsupport statneeds-more-information

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

CentOS Linux ๋ฆด๋ฆฌ์Šค 7.3.1611(Core)์ด ์žˆ๊ณ  KubeAdm 1.6.4๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
EOF

setenforce 0
# edit /etc/selinux/config and set SELINUX=disabled
yum install docker kubelet kubeadm kubectl kubernetes-cni
systemctl enable docker
systemctl start docker
systemctl enable kubelet
systemctl start kubelet
reboot
kubeadm init

์‚ฐ์ถœ:

kubeadm init
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[init] Using Kubernetes version: v1.6.4
[init] Using Authorization mode: RBAC
[preflight] Running pre-flight checks
[preflight] WARNING: hostname "kubernet01.localdomain" could not be reached
[preflight] WARNING: hostname "kubernet01.localdomain" lookup kubernet01.localdomain on XXXXXXX:53: read udp XXXXXXX:56624->XXXXXXX:53: i/o timeout
[preflight] Starting the kubelet service
[certificates] Generated CA certificate and key.
[certificates] Generated API server certificate and key.
[certificates] API Server serving cert is signed for DNS names [kubernet01.localdomain kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 10.11.112.51]
[certificates] Generated API server kubelet client certificate and key.
[certificates] Generated service account token signing key and public key.
[certificates] Generated front-proxy CA certificate and key.
[certificates] Generated front-proxy client certificate and key.
[certificates] Valid certificates and keys now exist in "/etc/kubernetes/pki"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[apiclient] Created API client, waiting for the control plane to become ready
Jun 06 17:13:12 kubernet01.localdomain kubelet[11429]: W0606 17:13:12.881451   11429 cni.go:157] Unable to update cni config: No networks found in /etc/cni/net.d
Jun 06 17:13:12 kubernet01.localdomain kubelet[11429]: E0606 17:13:12.882145   11429 kubelet.go:2067] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
Jun 06 17:13:13 kubernet01.localdomain kubelet[11429]: E0606 17:13:13.519992   11429 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:46: Failed to list *v1.Pod: Get https://10.11.112.51:6443/api/v1/pods?fieldSelector=spec.nodeName%3Dkubernet01.localdomain&resourceVersion=0: dial tcp 10.11.112.51:6443: getsockopt: connection refused
Jun 06 17:13:13 kubernet01.localdomain kubelet[11429]: E0606 17:13:13.520798   11429 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/kubelet.go:382: Failed to list *v1.Service: Get https://10.11.112.51:6443/api/v1/services?resourceVersion=0: dial tcp 10.11.112.51:6443: getsockopt: connection refused
Jun 06 17:13:13 kubernet01.localdomain kubelet[11429]: E0606 17:13:13.521493   11429 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/kubelet.go:390: Failed to list *v1.Node: Get https://10.11.112.51:6443/api/v1/nodes?fieldSelector=metadata.name%3Dkubernet01.localdomain&resourceVersion=0: dial tcp 10.11.112.51:6443: getsockopt: connection refused
Jun 06 17:13:14 kubernet01.localdomain kubelet[11429]: E0606 17:13:14.337588   11429 event.go:208] Unable to write event: 'dial tcp 10.11.112.51:6443: getsockopt: connection refused' (may retry after sleeping)

๋ชจ๋“  52 ๋Œ“๊ธ€

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‹ค๋ฅธ ๋ฌธ์ œ์—์„œ ์ œ์•ˆํ•œ ๋Œ€๋กœ ๋„คํŠธ์›Œํฌ ARGS๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ waiting for control plane to be ready ์—์„œ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ ํ›„ Daemon์„ ๋‹ค์‹œ ๋กœ๋“œํ•˜๊ณ  kubelet ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๊นŒ? ๋“œ๋ผ์ด๋ฒ„ ๋ฐ ์ฃผ์„ ๋„คํŠธ์›Œํฌ๋ฅผ ๋ณ€๊ฒฝํ•œ ํ›„์— ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์œผ๋กœ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ์ด ์ค€๋น„๋˜๋Š” ๋ฐ 10~11๋ถ„์ด ๊ฑธ๋ฆฌ๋ฏ€๋กœ ์ฒ˜์Œ์—๋Š” 15๋ถ„ ๋™์•ˆ ๊ทธ๋Œ€๋กœ ๋‘๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋ฐ๋ชฌ์„ ๋‹ค์‹œ ๋กœ๋“œํ•˜๊ณ  ๋งค๋ฒˆ kubelet ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฐค์ƒˆ๋„๋ก ์„ค์ •์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ๋‘์—ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ œ์–ด ํ‰๋ฉด์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ๋ชฌ( systemctl daemon-reload )์„ ๋‹ค์‹œ ๋กœ๋“œํ•˜๊ณ  kubelet๋„ ๋‹ค์‹œ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. kubeadm reset ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์„œ๋น„์Šค ๊ตฌ์„ฑ์„ ํŽธ์ง‘ํ•˜๊ณ  ๋ฐ๋ชฌ์„ ๋‹ค์‹œ ๋กœ๋“œํ•œ ๋‹ค์Œ kubeadm init ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Apiserver ๋ฐ etcd ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋Š” ๋„คํŠธ์›Œํ‚น ์˜ต์…˜์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ•œ ํ›„ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ cni config ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ฑ„์›Œ์ง€๋„๋ก weave-net์„ ์ˆ˜๋™์œผ๋กœ ์„ค์น˜ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋‘˜ ๋‹ค ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด weave๋ฅผ ์„ค์น˜ํ•˜๊ณ  weave setup ๋ฐ weave launch ๋ฅผ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. Kubeadm์ด CNI ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋„๋ก Docker๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ๋ชจ๋ฅด์ง€๋งŒ ์—ฌ๊ธฐ์— ๋ˆ„๋ฝ๋œ ๋‹จ๊ณ„๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubelet์ด kube api ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” etcd๊ฐ€ ํฌํŠธ 2380์—์„œ ์ˆ˜์‹  ๋Œ€๊ธฐํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„์ฐจ๋ ธ๊ณ , ์ด ๋‹จ๊ณ„๋ฅผ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ–ˆ๊ณ  ๋‚ด ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • kubeadm reset ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์„œ๋ฒ„์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๊ณ„๋ฅผ ์ดˆ๊ธฐ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฝ๋‹ˆ๋‹ค. kubeadm์„ ๋‹ค์‹œ ์„ค์น˜ํ•˜์—ฌ(์›๋ž˜ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋˜๋Œ๋ฆฌ๊ธฐ ์œ„ํ•ด).
  • kubernetes์™€ ๊ด€๋ จ๋œ docker ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
  • weave๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์‹คํ–‰ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.
  • ์„œ๋ฒ„๋ฅผ ์žฌ๋ถ€ํŒ…ํ•ฉ๋‹ˆ๋‹ค.
  • kubelet ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
  • weave setup ๋ฐ weave launch ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • kubeadm init ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์†์œผ๋กœ ์งœ๋Š” ์งœ์ž„์ƒˆ๋ฅผ ์—†์• ๊ณ  ์‹ถ๋‹ค๋ฉด...

  • weave reset ์‹คํ–‰
  • kubernetes 1.6์šฉ weave ์• ๋“œ์˜จ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„๋ฅผ ์žฌ๋ถ€ํŒ…ํ•ฉ๋‹ˆ๋‹ค.

Kubeadm ์กฐ์ธ์€ ๋‹ค๋ฅธ ์„œ๋ฒ„์—์„œ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@Yengas ์ง์กฐ ๋‹จ๊ณ„์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ๋ ค์ฃผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋งˆ์Šคํ„ฐ์—์„œ๋งŒ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๊นŒ?

@jruels ๋Š” ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. Weave๋Š” ๋‹จ์ผ ๋ฐ”์ด๋„ˆ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ธ์ˆ˜๊ฐ€ ์—†๋Š” setup ๋ช…๋ น์€ weave docker ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  CNI ๊ตฌ์„ฑ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ธ์ˆ˜ ์—†์ด ์‹คํ–‰ ๋ช…๋ น์€ ํ˜ธ์ŠคํŠธ์—์„œ๋งŒ weave ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

@Yengas ์•„์ง๋„ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. "weave๋ฅผ ๊ฐ€์ ธ์™€ ์„ค์น˜ํ•˜์„ธ์š”. ์‹คํ–‰ํ•˜์ง€ ๋งˆ์„ธ์š”." kubectl apply -f https://git.io/weave-kube-1.6 ์„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ weave๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค์น˜ํ•ฉ๋‹ˆ๊นŒ? ?

apiserver ๋กœ๊ทธ๋Š” ๋ฌด์—‡์„ ๋งํ•ฉ๋‹ˆ๊นŒ?

@rushabh268
weave๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด ๋งˆ์Šคํ„ฐ์—์„œ ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.
sudo curl -L git.io/weave -o /usr/local/bin/weave && chmod a+x /usr/local/bin/weave
๊ทธ๋Ÿฐ ๋‹ค์Œ ์‹คํ–‰
weave setup
์‹คํ–‰์ด ์™„๋ฃŒ๋˜๋ฉด
weave launch

๊ทธ๋ ‡๊ฒŒ ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. kubectl apply -f https://git.io/weave-kube-1.6 ์ด๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

API ์„œ๋ฒ„ ๋กœ๊ทธ๋Š” ๋ฒ„๊ทธ์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ๊ณผ ์ •ํ™•ํžˆ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Kubernetes๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์•„ kubectl์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@jruels ์‹œ๋„ํ•ด๋ณด๊ณ  ์ด ์Šค๋ ˆ๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

๋ฒ„๊ทธ ์„ค๋ช…์—๋Š” kubeadm ๋กœ๊ทธ์™€ kubelet ๋กœ๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. apiserver ๋กœ๊ทธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@mikedanese apiserver ๋กœ๊ทธ๋Š” ์–ด๋–ป๊ฒŒ ์–ป๋‚˜์š”?
@jruels ๋‚˜๋Š” ์ง์กฐ๋ฅผ ํ‚ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
@Yengas ๊ท€ํ•˜์˜ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅธ ํ›„์—๋„ kubelet ๋กœ๊ทธ์— ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
Apr 06 12:55:56 hostname kubelet[5174]: E0406 12:55:56.858931 5174 kubelet.go:2067] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized Apr 06 12:55:57 hostname kubelet[5174]: E0406 12:55:57.556067 5174 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/kubelet.go:382: Failed to list *v1.Service: Get https://10.X.X.X:6443/api/v1/services?resourceVersion=0: dial tcp 10.X.X.X:6443: getsockopt: connection refused Apr 06 12:55:57 hostname kubelet[5174]: E0406 12:55:57.557441 5174 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/kubelet.go:390: Failed to list *v1.Node: Get https://10.X.X.X:6443/api/v1/nodes?fieldSelector=metadata.name%3Dhostname&resourceVersion=0: dial tcp 10.X.X.X:6443: getsockopt: connection refused Apr 06 12:55:57 hostname kubelet[5174]: E0406 12:55:57.558822 5174 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:46: Failed to list *v1.Pod: Get https://10.X.X.X:6443/api/v1/pods?fieldSelector=spec.nodeName%3Dhostname&resourceVersion=0: dial tcp 10.X.X.X:6443: getsockopt: connection refused Apr 06 12:55:58 hostname kubelet[5174]: I0406 12:55:58.347460 5174 kubelet_node_status.go:230] Setting node annotation to enable volume controller attach/detach Apr 06 12:55:58 hostname kubelet[5174]: I0406 12:55:58.405762 5174 kubelet_node_status.go:77] Attempting to register node hostname1

๋˜ํ•œ ๋ฐฉํ™”๋ฒฝ์„ ์ค‘์ง€ํ•˜์—ฌ ์—ฐ๊ฒฐ์ด ๊ฑฐ๋ถ€๋˜๋Š” ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์—ฌ๊ธฐ์— ๋ณด๊ณ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์‹œ์Šคํ…œ ๋ฉ”์‹œ์ง€(๋งˆ์Šคํ„ฐ ๋…ธ๋“œ)๊ฐ€ ๋ฉˆ์ถ˜ ์ƒํƒœ์—์„œ ์Šคํฌ๋žฉํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์ผ์˜ ๊ฒฝ์šฐ์— ๋Œ€๋น„ํ•˜์—ฌ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. Btw, ๋‚˜๋Š” Linode์—์„œ ์ด๊ฒƒ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

4์›” 12์ผ 02:10:00 ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ๊ฐ์‚ฌ: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=kubelet comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? ์ฃผ์†Œ=? ํ„ฐ๋ฏธ๋„=? res=์„ฑ๊ณต'
4์›” 12์ผ 02:10:00 ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ๊ฐ์‚ฌ: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=kubelet comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? ์ฃผ์†Œ=? ํ„ฐ๋ฏธ๋„=? res=์„ฑ๊ณต'
4์›” 12์ผ 02:10:00 ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ๊ฐ์‚ฌ: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=kubelet comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? ์ฃผ์†Œ=? ํ„ฐ๋ฏธ๋„=? res=์„ฑ๊ณต'
Apr 12 02:10:00 localhost systemd: kubelet.service: ์„œ๋น„์Šค ๋ณด๋ฅ˜ ์‹œ๊ฐ„ ์ดˆ๊ณผ, ์˜ˆ์•ฝ ์žฌ์‹œ์ž‘.
4์›” 12์ผ 02:10:00 localhost systemd: ์ค‘์ง€๋œ kubelet: Kubernetes ๋…ธ๋“œ ์—์ด์ „ํŠธ.
4์›” 12์ผ 02:10:00 localhost systemd: kubelet ์‹œ์ž‘: Kubernetes ๋…ธ๋“œ ์—์ด์ „ํŠธ.
4์›” 12์ผ 02:10:00 localhost systemd: ์‹œ์Šคํ…œ ํ™œ๋™ ๊ณ„์ • ๋„๊ตฌ ์‹œ์ž‘ ์ค‘...
4์›” 12์ผ 02:10:00 ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ๊ฐ์‚ฌ: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=sysstat-collect comm="systemd" exe="/usr/lib/systemd/systemd" ํ˜ธ์ŠคํŠธ ์ด๋ฆ„= ? ์ฃผ์†Œ=? ํ„ฐ๋ฏธ๋„=? res=์„ฑ๊ณต'
4์›” 12์ผ 02:10:00 ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ๊ฐ์‚ฌ: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=sysstat-collect comm="systemd" exe="/usr/lib/systemd/systemd" ํ˜ธ์ŠคํŠธ ์ด๋ฆ„= ? ์ฃผ์†Œ=? ํ„ฐ๋ฏธ๋„=? res=์„ฑ๊ณต'
4์›” 12์ผ 02:10:00 localhost systemd: ์‹œ์Šคํ…œ ํ™œ๋™ ๊ณ„์ • ๋„๊ตฌ๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
4์›” 12์ผ 02:10:00 localhost kubelet: I0412 02:10:00.924529 3445 feature_gate.go:144] ๊ธฐ๋Šฅ ๊ฒŒ์ดํŠธ: ๋งต[]
Apr 12 02:10:00 localhost kubelet: I0412 02:10:00.928973 3445 docker.go:364] unix:///var/run/docker.sock์—์„œ ๋„์ปค์— ์—ฐ๊ฒฐ ์ค‘
Apr 12 02:10:00 localhost kubelet: I0412 02:10:00.929201 3445 docker.go:384] ์š”์ฒญ ์‹œ๊ฐ„ ์ œํ•œ์ด 2m0s์ธ ๋„์ปค ํด๋ผ์ด์–ธํŠธ ์‹œ์ž‘
Apr 12 02:10:00 localhost kubelet: W0412 02:10:00.941088 3445 cni.go:157] cni ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Œ: /etc/cni/net.d์— ๋„คํŠธ์›Œํฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
Apr 12 02:10:00 localhost kubelet: I0412 02:10:00.948892 3445 manager.go:143] ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰ ์ค‘์ธ cAdvisor: "/system.slice"
Apr 12 02:10:00 localhost kubelet: W0412 02:10:00.974540 3445 manager.go:151] Rkt api ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Œ: rkt: tcp ๋‹ค์ด์–ผ rkt api ์„œ๋น„์Šค: ๋‹ค์ด์–ผ tcp [::1]:15441 getsockopt: ์—ฐ๊ฒฐ์ด ๊ฑฐ๋ถ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
Apr 12 02:10:00 localhost kubelet: I0412 02:10:00.997599 3445 fs.go:117] ํŒŒ์ผ ์‹œ์Šคํ…œ ํŒŒํ‹ฐ์…˜: map[/dev/root:{mountpoint:/var/lib/docker/devicemapper major:8 minor:0 fsType:ext4 ๋ธ”๋ก ํฌ๊ธฐ:0 }]
์‚ฌ์›” 12 2์‹œ 10๋ถ„ 1์ดˆ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ kubelet : I0412 02 : 10 : 01.001662 manager.go 3445 : 198] ๊ธฐ๊ณ„ { NumCores๋Š” 1 ๊ฐœ CPU ์ฃผํŒŒ์ˆ˜ : 2,799,998 ๋กœ๋Š” ๋ฉ”๋ชจ๋ฆฌ yCapacity : 1037021184 MachineID : 5e9a9a0b58984bfb8766dba9afa8a191 S ystemUUID๋Š” : 5e9a9a0b58984bfb8766dba9afa8a191 BootID : 7ed1a6ff-9848- 437b-9460-981eeefdfe5a ํŒŒ์ผ ์‹œ์Šคํ…œ:[{์žฅ์น˜:/dev/root ์šฉ๋Ÿ‰:15447539712 ์œ ํ˜•:vfs Inodes:962880 HasInodes:true }] DiskMap:map [43:0:{ ์ด๋ฆ„:nbd0 ๋ฉ”์ด์ €:43 ๋งˆ์ด๋„ˆ:0 ํฌ๊ธฐ:0 ์Šค์ผ€์ค„๋Ÿฌ:์—†์Œ } 43:11:{ ์ด๋ฆ„:nbd11 ๋ฉ”์ด์ €:43 ๋งˆ์ด๋„ˆ:11 ํฌ๊ธฐ:0 ์Šค์ผ€์ค„๋Ÿฌ:์—†์Œ } 43:12:{ ์ด๋ฆ„:nbd12 ๋ฉ”์ด์ €:43 ๋งˆ์ด๋„ˆ:12 ํฌ๊ธฐ:0 ์Šค์ผ€์ค„๋Ÿฌ:์—†์Œ } 43:15: { ์ด๋ฆ„:nbd15 ๋ฉ”์ด์ €:43 ๋งˆ์ด๋„ˆ:15 ํฌ๊ธฐ:0 ์Šค์ผ€์ค„๋Ÿฌ:์—†์Œ } 43:7:{ ์ด๋ฆ„:nbd7 ๋ฉ”์ด์ €:43 ๋งˆ์ด๋„ˆ:7 ํฌ๊ธฐ:0 ์Šค์ผ€์ค„๋Ÿฌ:์—†์Œ } 8:0:{ ์ด๋ฆ„:sda ๋ฉ”์ด์ €:8 ๋งˆ์ด๋„ˆ :0 ํฌ๊ธฐ:15728640000 ์Šค์ผ€์ค„๋Ÿฌ:cfq } 252:0:{ ์ด๋ฆ„:dm-0 ๋ฉ”์ด์ €:252 ๋งˆ์ด๋„ˆ:0 ํฌ๊ธฐ:107374182400 ์Šค์ผ€์ค„๋Ÿฌ:์—†์Œ } 43:1:{ ์ด๋ฆ„:nbd1 ๋ฉ”์ด์ €:43 ๋งˆ์ด๋„ˆ:1 ํฌ๊ธฐ:0 ์Šค์ผ€์ค„๋Ÿฌ :์—†์Œ } 43:13:{ ์ด๋ฆ„:nbd13 ๋ฉ”์ด์ €:43 ๋งˆ์ด๋„ˆ:13 ํฌ๊ธฐ:0 ์Šค์ผ€์ค„๋Ÿฌ:์—†์Œ } 43:8:{ ์ด๋ฆ„:nbd8 ๋ฉ”์ด์ €:43 ๋งˆ์ด๋„ˆ:8 ํฌ๊ธฐ:0 ์Šค์ผ€์ค„๋Ÿฌ:์—†์Œ } 8: 16:{ ์ด๋ฆ„:sdb ๋ฉ”์ด์ €:8 ๋งˆ์ด๋„ˆ:16 ํฌ๊ธฐ:536870912 ์Šค์ผ€์ค„๋Ÿฌ:cfq } 9:0:{ ์ด๋ฆ„:md0 ๋ฉ”์ด์ €:9 ๋งˆ์ด๋„ˆ:0 ํฌ๊ธฐ:0 ์Šค์ผ€์ค„๋Ÿฌ:์—†์Œ } 43:3:{ ์ด๋ฆ„:nbd3 ๋ฉ”์ด์ €: 43 ๋งˆ์ด๋„ˆ:3 ํฌ๊ธฐ:0 ์Šค์ผ€์ค„๋Ÿฌ:์—†์Œ } 43:9:{ ์ด๋ฆ„:nbd9 ๋ฉ”์ด์ €:43 ๋งˆ์ด๋„ˆ:9 ํฌ๊ธฐ:0 ์Šค์ผ€์ค„๋Ÿฌ:์—†์Œ } 43:10:{ ์ด๋ฆ„:nbd10 ๋ฉ”์ด์ €:43 ๋งˆ์ด๋„ˆ:10 ํฌ๊ธฐ:0 ์Šค์ผ€์ค„๋Ÿฌ :์—†์Œ } 43:14:{ ์ด๋ฆ„:nbd14 ๋ฉ”์ด์ €:43 ๋งˆ์ด๋„ˆ:14 ํฌ๊ธฐ:0 ์Šค์ผ€์ค„๋Ÿฌ:์—†์Œ } 43:2:{ ์ด๋ฆ„:nbd2 ๋ฉ”์ด์ €:43 ๋งˆ์ด๋„ˆ:2 ํฌ๊ธฐ:0 ์Šค์ผ€์ค„๋Ÿฌ:์—†์Œ } 43:4:{ ์ด๋ฆ„:nbd4 ๋ฉ”์ด์ €:43 ๋งˆ์ด๋„ˆ:4 ํฌ๊ธฐ:0 ์Šค์ผ€์ค„๋Ÿฌ:์—†์Œ } 43:5:{ ์ด๋ฆ„:nbd5 ๋ฉ”์ด์ €:43 ๋งˆ์ด๋„ˆ:5 ํฌ๊ธฐ:0 ์Šค์ผ€์ค„๋Ÿฌ:์—†์Œ } 43:6:{ ์ด๋ฆ„:nbd6 ๋ฉ”์ด์ €:43 ๋งˆ์ด๋„ˆ: 6 Size:0 Scheduler:none }] NetworkDevices:[{ Name:dummy0 M acAddress:5a :34:bf:e4:23:cc Speed:0 Mtu:1500 } { Name:eth0 M acAddress:f2 :3c:91: 1f:cd:c3 ์†๋„:-1 Mtu:1500 } { Name:gre0 M acAddress:00 :00:00:00 Speed:0 Mtu:1476 } { Name:gretap0 M acAddress:00 :00:00:00:00 :00 ์†๋„:0 Mtu:1462 } { ์ด๋ฆ„:ip6_vti0 M acAddress:00 :00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 ์†๋„:0 Mtu:1500 } { ์ด๋ฆ„:ip6gre0 M acAddress:00 :00:00:00:00:00:00:00: 00:00:00:00:00:00:00:00 ์†๋„:0 Mtu:1448 } { ์ด๋ฆ„:ip6tnl0 M acAddress:00 :00:00:00:00:00:00:00:00:00:00 :00:00:00:00:00 ์†๋„:0 Mtu:1452 } { ์ด๋ฆ„:ip_vti0 ๋งˆ
Apr 12 02:10:01 localhost kubelet: cAddress:00 :00:00:00 Speed:0 Mtu:1428 } { Name:sit0 M acAddress:00 :00:00:00 Speed:0 Mtu:1480 } { Name: teql0 MacAddress: Speed:0 Mtu:1500 } { Name:tunl0 M acAddress:00 :00:00:00 Speed:0 Mtu:1480 }] ํ† ํด๋กœ์ง€:[{Id:0 ๋ฉ”๋ชจ๋ฆฌ:1037021184 ์ฝ”์–ด:[{Id:0 ์Šค๋ ˆ๋“œ] :[0] ์บ์‹œ:[{ ํฌ๊ธฐ:32768 ์œ ํ˜•:๋ฐ์ดํ„ฐ ์ˆ˜์ค€:1 } { ํฌ๊ธฐ:32768 ์œ ํ˜•:๋ช…๋ น ์ˆ˜์ค€:1 } { ํฌ๊ธฐ:4194304 ์œ ํ˜•:ํ†ตํ•ฉ ์ˆ˜์ค€:2 }]}] ์บ์‹œ:[]}] Clou dProvider:Unknown ์ธ์Šคํ„ด์Šค ์œ ํ˜•:์•Œ ์ˆ˜ ์—†์Œ I nstanceID:์—†์Œ }
Apr 12 02:10:01 localhost kubelet: I0412 02:10:01.013353 3445 manager.go:204] ๋ฒ„์ „: {Kern elVersion:4.9.15-x86_64-linode81 Container OsVersion: Fedora2 6 CadvisorVersion: CadvisorRevision:}
Apr 12 02:10:01 localhost kubelet: I0412 02:10:01.014086 3445 server.go:509] --cgroups-per-qos๊ฐ€ ํ™œ์„ฑํ™”๋˜์—ˆ์ง€๋งŒ --cgroup-root๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. /๋กœ ๊ธฐ๋ณธ ์„ค์ •
Apr 12 02:10:01 localhost kubelet: W0412 02:10:01.016562 3445 container_manager_linux.go:218] ์Šค์™‘ ์‹คํ–‰์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์Šค์™‘์„ ๋น„ํ™œ์„ฑํ™”ํ•˜์‹ญ์‹œ์˜ค! ์ด๊ฒƒ์€ K8s v1.6๋ถ€ํ„ฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค! ๊ทธ ๋™์•ˆ --experimental-fail-swap-on์„ ํ™œ์„ฑํ™”ํ•˜์—ฌ ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋„๋ก ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Apr 12 02:10:01 localhost kubelet: I0412 02:10:01.016688 3445 container_manager_linux.go:245] ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ์ž ํ™•์ธ ์‚ฌ์šฉ์ž ์ง€์ • cgroup-root ์กด์žฌ: /
Apr 12 02:10:01 localhost kubelet: I0412 02:10:01.016717 3445 container_manager_linux.go:250] ๋…ธ๋“œ ๊ตฌ์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ์ž ๊ฐ์ฒด ์ƒ์„ฑ: {RuntimeCgroupsName: SystemCgroupsName: KubeletCgroupsRuntime:: PerdogroupQKubeletCgroupsRuntime : PerdogroupQ Cgr oupDriver:cgroupfs ProtectKerne lDefaults:false EnableCRI:true NodeAllocateableConfig:{KubeReservedCgroupName: SystemReservedCgroupName: EnforceNodeAl locatable :map [pods:{}] Kub eReserved:map [] Syste mReserved:map [] Syste mReserved :map [] HardEviction :LessThan ๊ฐ’:{ ์ˆ˜๋Ÿ‰:100Mi ๋น„์œจ:0 } Gr acePeriod:0s MinReclaim:}]} ExperimentalQO SReserved:map []}
Apr 12 02:10:01 localhost kubelet: I0412 02:10:01.016943 3445 kubelet.go:255] ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ ์ถ”๊ฐ€ ์ค‘: /etc/kubernetes/manifests
Apr 12 02:10:01 localhost kubelet: I0412 02:10:01.016966 3445 kubelet.go:265] apiserver ๋ณด๊ธฐ
4์›” 12์ผ 02:10:01 localhost kubelet: E0412 02:10:01.025058 3445 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/kubelet.go:390: *v1.Node๋ฅผ ๋‚˜์—ดํ•˜์ง€ ๋ชปํ•จ: https ๊ฐ€์ ธ์˜ค๊ธฐ: //50.116.13.214 :6443/api/v1/nodes?fieldSelector=metadata.name%3Dli471-214.members.linode.com&resourceVersion=0: ๋‹ค์ด์–ผ tcp 50.116.13.214:6443: getsockopt: ์—ฐ๊ฒฐ ๊ฑฐ๋ถ€
Apr 12 02:10:01 localhost kubelet: E0412 02:10:01.025342 3445 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/kubelet.go:382: *v1.Service: Get https: //50.116.13.214 :6443/api/v1/services?resourceVersion=0: ๋‹ค์ด์–ผ tcp 50.116.13.214:6443: getsockopt: ์—ฐ๊ฒฐ ๊ฑฐ๋ถ€
4์›” 12์ผ 02:10:01 localhost kubelet: E0412 02:10:01.025397 3445 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:46: *v1.Pod ๋‚˜์—ด ์‹คํŒจ: ๊ฐ€์ ธ์˜ค๊ธฐ https://50.116.13.214 :6443/api/v1/pods?fieldSelector=spec.nodeName%3Dli471-214.members.linode.com&resourceVersion=0: ๋‹ค์ด์–ผ tcp 50.116.13.214:6443: getsockopt: ์—ฐ๊ฒฐ ๊ฑฐ๋ถ€
Apr 12 02:10:01 localhost kubelet: W0412 02:10:01.026574 3445 kubelet_network.go:70] ๋จธ๋ฆฌํ•€ ๋ชจ๋“œ๊ฐ€ "promiscuous-bridge"๋กœ ์„ค์ •๋˜์—ˆ์ง€๋งŒ kubenet์ด ํ™œ์„ฑํ™”๋˜์ง€ ์•Š๊ณ  "hairpin-veth"๋กœ ๋Œ์•„๊ฐ
Apr 12 02:10:01 localhost kubelet: I0412 02:10:01.026599 3445 kubelet.go:494] ๋จธ๋ฆฌํ•€ ๋ชจ๋“œ๊ฐ€ "hairpin-veth"๋กœ ์„ค์ •๋จ
Apr 12 02:10:01 localhost kubelet: W0412 02:10:01.026661 3445 cni.go:157] cni ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Œ: /etc/cni/net.d์— ๋„คํŠธ์›Œํฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
Apr 12 02:10:01 localhost kubelet: W0412 02:10:01.034194 3445 cni.go:157] cni ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Œ: /etc/cni/net.d์— ๋„คํŠธ์›Œํฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
Apr 12 02:10:01 localhost kubelet: W0412 02:10:01.043157 3445 cni.go:157] cni ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Œ: /etc/cni/net.d์— ๋„คํŠธ์›Œํฌ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
Apr 12 02:10:01 localhost kubelet: I0412 02:10:01.043183 3445 docker_service.go:187] cni์—์„œ ๊ด€๋ฆฌํ•˜๋Š” Docker cri ๋„คํŠธ์›Œํ‚น
Apr 12 02:10:01 localhost kubelet: ์˜ค๋ฅ˜: Kubelet ์‹คํ–‰ ์‹คํŒจ: kubelet ์ƒ์„ฑ ์‹คํŒจ: ์ž˜๋ชป๋œ ๊ตฌ์„ฑ: kubelet cgroup ๋“œ๋ผ์ด๋ฒ„: "cgroupfs"๊ฐ€ docker cgroup ๋“œ๋ผ์ด๋ฒ„์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค: "systemd"
4์›” 12์ผ 02:10:01 ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ๊ฐ์‚ฌ: SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=kubelet comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? ์ฃผ์†Œ=? ํ„ฐ๋ฏธ๋„=? res=์‹คํŒจ'
4์›” 12์ผ 02:10:01 localhost systemd: kubelet.service: ์ฃผ ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ, ์ฝ”๋“œ=์ข…๋ฃŒ, ์ƒํƒœ=1/FAILURE
4์›” 12์ผ 02:10:01 localhost systemd: kubelet.service: ์žฅ์น˜๊ฐ€ ์‹คํŒจ ์ƒํƒœ๋กœ ๋“ค์–ด๊ฐ”์Šต๋‹ˆ๋‹ค.
Apr 12 02:10:01 localhost systemd: kubelet.service: 'exit-code' ๊ฒฐ๊ณผ๋กœ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

@acloudiator kubeadm ๊ตฌ์„ฑ์—์„œ cgroup-driver๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Environment="KUBELET_EXTRA_ARGS=--cgroup-driver=systemd"

๊ทธ๋Ÿฐ ๋‹ค์Œ kubelet ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค.

kubeadm์ด cgroup ๊ตฌ์„ฑ ๋ฌธ์ œ๋ฅผ ์–ด๋–ค ์‹์œผ๋กœ๋“  ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์•„์ด๋””์–ด:

  • ๊ตฌ์„ฑ์ด ์ž˜๋ชป๋œ ๊ฒฝ์šฐ ์ดˆ๊ธฐํ™” ์ค‘๋‹จ
  • ์‚ฌ์ „์— Docker์˜ ์„ค์ •์„ ํ™•์ธํ•˜๊ณ  Docker๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค(์—ฌ๊ธฐ์— ์–ด๋–ค ์˜๋ฏธ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Œ).

๋‚ด๊ฐ€ ์‹œ๋„ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ๋ฌด์—‡์ด๋“  ์—…๋ฐ์ดํŠธ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š” ๋งˆ์Šคํ„ฐ์šฉ์œผ๋กœ CentOS 7.3์œผ๋กœ ์˜ฎ๊ฒผ๊ณ , ์ •๋ง ๋งค๋ ฅ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค! ๋‚˜๋Š” CentOS 7.2์—์„œ ๋ฏธ๋‹ˆ์–ธ์„ ์œ ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค.

@rushabh268 ์•ˆ๋…•ํ•˜์„ธ์š”, Redhat Linux 7.2์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. systemd๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์„ค์น˜ ์ „์— systemd ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
yum update -y systemd
kubelet์˜ ์˜ค๋ฅ˜ ๋กœ๊ทธ:
kubelet.go:1752] skipping pod synchronization - [Failed to start ContainerManager systemd version does not support ability to start a slice as transient unit]

CentOS 7.3์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. docker-ce๋ฅผ ์ œ๊ฑฐํ•œ ๋‹ค์Œ docker-io๋ฅผ ์„ค์น˜ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์ด ๊ทผ๋ณธ ์›์ธ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์œ„์˜ ๋ฐฉ๋ฒ•์ด ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ZongqiangZhang ๋‚ด ๋…ธ๋“œ์— ๋„์ปค 1.12.6์ด ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. @juntaoXie ์‹œ์Šคํ…œ ์—…๋ฐ์ดํŠธ๋„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ฉˆ์ท„์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ €๋Š” Centos 7.3 w/1.6.4๋ฅผ ์—ฌ๋Ÿฌ ์ปดํ“จํ„ฐ์—์„œ ๋ฌธ์ œ ์—†์ด ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

selinux๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ–ˆ๋Š”์ง€ ํ™•์ธ ํ–ˆ์Šต๋‹ˆ๊นŒ?

@timothysc CentOS 7.3์ด ์•„๋‹Œ CentOS 7.2๊ฐ€ ์žˆ๊ณ  selinux๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

CentOS Linux ๋ฆด๋ฆฌ์Šค 7.3.1611(Core)์ด ์žˆ๊ณ  KubeAdm 1.6.4๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
EOF

setenforce 0
# edit /etc/selinux/config and set SELINUX=disabled
yum install docker kubelet kubeadm kubectl kubernetes-cni
systemctl enable docker
systemctl start docker
systemctl enable kubelet
systemctl start kubelet
reboot
kubeadm init

์‚ฐ์ถœ:

kubeadm init
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[init] Using Kubernetes version: v1.6.4
[init] Using Authorization mode: RBAC
[preflight] Running pre-flight checks
[preflight] WARNING: hostname "kubernet01.localdomain" could not be reached
[preflight] WARNING: hostname "kubernet01.localdomain" lookup kubernet01.localdomain on XXXXXXX:53: read udp XXXXXXX:56624->XXXXXXX:53: i/o timeout
[preflight] Starting the kubelet service
[certificates] Generated CA certificate and key.
[certificates] Generated API server certificate and key.
[certificates] API Server serving cert is signed for DNS names [kubernet01.localdomain kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 10.11.112.51]
[certificates] Generated API server kubelet client certificate and key.
[certificates] Generated service account token signing key and public key.
[certificates] Generated front-proxy CA certificate and key.
[certificates] Generated front-proxy client certificate and key.
[certificates] Valid certificates and keys now exist in "/etc/kubernetes/pki"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"
[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
[apiclient] Created API client, waiting for the control plane to become ready
Jun 06 17:13:12 kubernet01.localdomain kubelet[11429]: W0606 17:13:12.881451   11429 cni.go:157] Unable to update cni config: No networks found in /etc/cni/net.d
Jun 06 17:13:12 kubernet01.localdomain kubelet[11429]: E0606 17:13:12.882145   11429 kubelet.go:2067] Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
Jun 06 17:13:13 kubernet01.localdomain kubelet[11429]: E0606 17:13:13.519992   11429 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:46: Failed to list *v1.Pod: Get https://10.11.112.51:6443/api/v1/pods?fieldSelector=spec.nodeName%3Dkubernet01.localdomain&resourceVersion=0: dial tcp 10.11.112.51:6443: getsockopt: connection refused
Jun 06 17:13:13 kubernet01.localdomain kubelet[11429]: E0606 17:13:13.520798   11429 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/kubelet.go:382: Failed to list *v1.Service: Get https://10.11.112.51:6443/api/v1/services?resourceVersion=0: dial tcp 10.11.112.51:6443: getsockopt: connection refused
Jun 06 17:13:13 kubernet01.localdomain kubelet[11429]: E0606 17:13:13.521493   11429 reflector.go:190] k8s.io/kubernetes/pkg/kubelet/kubelet.go:390: Failed to list *v1.Node: Get https://10.11.112.51:6443/api/v1/nodes?fieldSelector=metadata.name%3Dkubernet01.localdomain&resourceVersion=0: dial tcp 10.11.112.51:6443: getsockopt: connection refused
Jun 06 17:13:14 kubernet01.localdomain kubelet[11429]: E0606 17:13:14.337588   11429 event.go:208] Unable to write event: 'dial tcp 10.11.112.51:6443: getsockopt: connection refused' (may retry after sleeping)

@paulobezerr kube-apiserver ๋กœ๊ทธ๋ฅผ ์กฐ๊ธˆ ๋” ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? (๋Œ“๊ธ€ ๋์— ์žˆ๋Š” ๊ฒƒ๋“ค)

์ด๋ฏธ ํฌํ•จ๋œ ํ–‰ ์œ„์˜ ํ–‰์— ๋™์ผํ•œ IP ์ฃผ์†Œ๊ฐ€ ์–ธ๊ธ‰๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ตœ๊ทผ์— Ubuntu 16.04์™€ CentOS 7.3์˜ ๋‘ ๊ฐœ์˜ ์ƒˆ๋กœ์šด KVM์—์„œ k8์„ ์‹คํ–‰ํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์ด๊ฒƒ์„ ์ฃผ์—ˆ๋‹ค:

โ€‹[restful] 2017/05/30 19:31:38 log.go:30: [restful/swagger] listing is available at https://x.x.x.x:6443/swaggerapi/
[restful] 2017/05/30 19:31:38 log.go:30: [restful/swagger] https://x.x.x.x:6443/swaggerui/ is mapped to folder /swagger-ui/
โ€‹E0530 19:31:38.313090 1 reflector.go:201] k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/factory.go:70: Failed to list *rbac.RoleBinding: Get https://localhost:6443/apis/rbac.authorization.k8s.io/v1beta1/rolebindings?resourceVersion=0: dial tcp y.y.y.y:6443: getsockopt: connection refused

์ฒ˜์Œ์— ์–ธ๊ธ‰๋œ IP ์ฃผ์†Œ๋Š” x.x.x.x ์ด์ง€๋งŒ localhost ๋Š” y.y.y.y ๋กœ ํ™•์ธ๋ฉ๋‹ˆ๋‹ค(์ œ ๊ฒฝ์šฐ์—๋Š” ๋™์ผํ•œ ๋ฌผ๋ฆฌ์  ์„œ๋ฒ„์— ์žˆ๋Š” ๋‹ค๋ฅธ KVM์˜ ๊ณต๊ฐœ IP์˜€์Šต๋‹ˆ๋‹ค). ๊ฒฐ๊ตญ Ubuntu์—์„œ kubeadm์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ https://github.com/kubernetes/kubeadm/issues/113#issuecomment -273115861๊ณผ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ dnsmasq๋ฅผ ์„ค์น˜ํ•œ ํ›„์—๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. CentOS์—์„œ ๋™์ผํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ๋„์›€์ด ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด kubedns ๋˜๋Š” ๊ธฐํƒ€์˜ ๋ฒ„๊ทธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ํฅ๋ฏธ๋กญ๊ฒŒ๋„ AWS VM์˜ ๋™์ผํ•œ ๋‹จ๊ณ„์—์„œ kubeadm์ด ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ EC2 ์ธ์Šคํ„ด์Šค๋Š” ๋‚ด ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์— ๋„ˆ๋ฌด ๋น„์Œ‰๋‹ˆ๋‹ค.

@paulobezerr๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

## ๋ฒ„์ „ :
kubelet-1.6.4-0.x86_64
kubernetes-cni-0.5.1-0.x86_64
kubectl-1.6.4-0.x86_64
kubeadm-1.6.4-0.x86_64
๋„์ปค ํด๋ผ์ด์–ธํŠธ-1.12.6-28.git1398f24.el7.centos.x86_64
docker-common-1.12.6-28.git1398f24.el7.centos.x86_64
๋„์ปค-1.12.6-28.git1398f24.el7.centos.x86_64

๊ทธ๋ž˜์„œ
์šฐ๋‚˜๋ฉ” -r > 3.10.0-229.1.2.el7.x86_64
cat /etc/redhat-release > CentOS Linux ๋ฆด๋ฆฌ์Šค 7.3.1611(์ฝ”์–ด)

## ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

    1. sudo yum install -y docker
2. sudo groupadd docker
3. sudo usermod -aG docker $(whoami)
4. curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
5. chmod +x ./kubectl
6. sudo mv ./kubectl /usr/local/bin/kubectl
7. echo "source <(kubectl completion bash)" >> ~/.bashrc
8. sudo -i
9. cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
10. setenforce 0
11. yum install -y docker kubelet kubeadm kubectl kubernetes-cni
12. systemctl enable docker && systemctl start docker
13. systemctl enable kubelet && systemctl start kubelet
    14. echo -e "net.bridge.bridge-nf-call-ip6tables = 1\nnet.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.d/99-sysctl.conf && sudo service network restart
    15. firewall-cmd --zone=public --add-port=6443/tcp --permanent && sudo firewall-cmd --zone=public --add-port=10250/tcp --permanent  && sudo systemctl restart firewalld
    16. firewall-cmd --permanent --zone=trusted --change-interface=docker0

## API ์„œ๋ฒ„ ๋กœ๊ทธ:
--> 37.247.XX.XXX๋Š” ๊ณต๊ฐœ IP์ž…๋‹ˆ๋‹ค.

[restful] 2017/06/08 10:45:19 log.go:30: [restful/swagger] ๋ชฉ๋ก์€ https://37.247.XX.XXX :6443/swaggerapi/์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
[restful] 2017/06/08 10:45:19 log.go:30: [restful/swagger] https://37.247.XX.XXX :6443/swaggerui/๊ฐ€ /swagger-ui/ ํด๋”์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.
E0608 10:45:19.429839 1 reflector.go:201] k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/factory.go:70: *api.Secret: https://localhost ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ๋‚˜์—ดํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. 6443/api/v1/secrets?resourceVersion=0: ๋‹ค์ด์–ผ tcp 108.59.253.109:6443: getsockopt: ์—ฐ๊ฒฐ ๊ฑฐ๋ถ€
E0608 10:45:19.430419 1 reflector.go:201] k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/factory.go:70: *api.ResourceQuota ๋‚˜์—ด ์‹คํŒจ: https://localhost ๊ฐ€์ ธ์˜ค๊ธฐ: 6443/api/v1/resourcequotas?resourceVersion=0: ๋‹ค์ด์–ผ tcp 108.59.253.109:6443: getsockopt: ์—ฐ๊ฒฐ์ด ๊ฑฐ๋ถ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
E0608 10:45:19.430743 1 reflector.go:201] k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/factory.go:70: *api.ServiceAccount๋ฅผ ๋‚˜์—ดํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค: https://localhost ๊ฐ€์ ธ์˜ค๊ธฐ: 6443/api/v1/serviceaccounts?resourceVersion=0: ๋‹ค์ด์–ผ tcp 108.59.253.109:6443: getsockopt: ์—ฐ๊ฒฐ ๊ฑฐ๋ถ€
E0608 10:45:19.431076 1 reflector.go:201] k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/factory.go:70: *storage.StorageClass๋ฅผ ๋‚˜์—ดํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค: https://localhost ๊ฐ€์ ธ์˜ค๊ธฐ: 6443/apis/storage.k8s.io/v1beta1/storageclasses?resourceVersion=0: ๋‹ค์ด์–ผ tcp 108.59.253.109:6443: getsockopt: ์—ฐ๊ฒฐ ๊ฑฐ๋ถ€
E0608 10:45:19.431377 1 reflector.go:201] k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/factory.go:70: *api.LimitRange๋ฅผ ๋‚˜์—ดํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค: https://localhost ๊ฐ€์ ธ์˜ค๊ธฐ: 6443/api/v1/limitranges?resourceVersion=0: ๋‹ค์ด์–ผ tcp 108.59.253.109:6443: getsockopt: ์—ฐ๊ฒฐ ๊ฑฐ๋ถ€
E0608 10:45:19.431678 1 reflector.go:201] k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/factory.go:70: *rbac.RoleBinding์„ ๋‚˜์—ดํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค: https://localhost ๊ฐ€์ ธ์˜ค๊ธฐ: 6443/apis/rbac.authorization.k8s.io/v1beta1/rolebindings?resourceVersion=0: ๋‹ค์ด์–ผ tcp 108.59.253.109:6443: getsockopt: ์—ฐ๊ฒฐ ๊ฑฐ๋ถ€
E0608 10:45:19.431967 1 reflector.go:201] k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/factory.go:70: *rbac.ClusterRoleBinding์„ ๋‚˜์—ดํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค: https://localhost ๊ฐ€์ ธ์˜ค๊ธฐ: 6443/apis/rbac.authorization.k8s.io/v1beta1/clusterrolebindings?resourceVersion=0: ๋‹ค์ด์–ผ tcp 108.59.253.109:6443: getsockopt: ์—ฐ๊ฒฐ ๊ฑฐ๋ถ€
E0608 10:45:19.432165 1 reflector.go:201] k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/factory.go:70: *api.Namespace๋ฅผ ๋‚˜์—ดํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค: https://localhost ๊ฐ€์ ธ์˜ค๊ธฐ: 6443/api/v1/namespaces?resourceVersion=0: ๋‹ค์ด์–ผ tcp 108.59.253.109:6443: getsockopt: ์—ฐ๊ฒฐ ๊ฑฐ๋ถ€
E0608 10:45:19.432386 1 reflector.go:201] k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/factory.go:70: *rbac.ClusterRole์„ ๋‚˜์—ดํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค: https://localhost ๊ฐ€์ ธ์˜ค๊ธฐ: 6443/apis/rbac.authorization.k8s.io/v1beta1/clusterroles?resourceVersion=0: ๋‹ค์ด์–ผ tcp 108.59.253.109:6443: getsockopt: ์—ฐ๊ฒฐ ๊ฑฐ๋ถ€
E0608 10:45:19.432619 1 reflector.go:201] k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/factory.go:70: *rbac.Role์„ ๋‚˜์—ดํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค: https://localhost ๊ฐ€์ ธ์˜ค๊ธฐ: 6443/apis/rbac.authorization.k8s.io/v1beta1/roles?resourceVersion=0: ๋‹ค์ด์–ผ tcp 108.59.253.109:6443: getsockopt: ์—ฐ๊ฒฐ ๊ฑฐ๋ถ€
I0608 10:45:19.481612 1 Serve.go:79] 0.0.0.0:6443์— ์•ˆ์ „ํ•˜๊ฒŒ ์„œ๋น™
W0608 10:45:19.596770 1 storage_extensions.go:127] ํƒ€์‚ฌ ๋ฆฌ์†Œ์Šค ๋™๊ธฐํ™” ์‹คํŒจ: https://localhost :6443/apis/extensions/v1beta1/thirdpartyresources ๊ฐ€์ ธ์˜ค๊ธฐ: ๋‹ค์ด์–ผ tcp 108.59.253.109:6444 ์—ฐ๊ฒฐ ๊ฑฐ๋ถ€: ๊ฐ€์ ธ์˜ค๊ธฐ
E0608 10:45:19.596945 1 client_ca_hook.go:58] ๊ฒŒ์‹œ๋ฌผ https://localhost :6443/api/v1/namespaces: ๋‹ค์ด์–ผ tcp 108.59.253.109:6443: getsockopt: ์—ฐ๊ฒฐ์ด ๊ฑฐ๋ถ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
F0608 10:45:19.597174 1 controller.go:128] ์ดˆ๊ธฐ IP ํ• ๋‹น ํ™•์ธ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Œ: ์„œ๋น„์Šค IP ๋ธ”๋ก์„ ์ƒˆ๋กœ ๊ณ ์น  ์ˆ˜ ์—†์Œ: Get https://localhost :6443/api/v1/services: dial tcp 108.59.253.109: 6443: getsockopt: ์—ฐ๊ฒฐ์ด ๊ฑฐ๋ถ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@albpal ์ผ์ฃผ์ผ ์ „์— ์ •ํ™•ํžˆ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. dial tcp X.X.X.X ์— ์ด์ƒํ•œ IP ์ฃผ์†Œ๊ฐ€ ํ‘œ์‹œ๋˜์—ˆ๊ณ  dnsmasq๋ฅผ ์„ค์น˜ํ•˜๊ณ  ํ˜ธ์ŠคํŒ… ์ œ๊ณต์—…์ฒด์˜ DNS ๋Œ€์‹  Google DNS ์„œ๋ฒ„๋กœ ์ „ํ™˜ํ•œ ํ›„์—๋„ CentOS์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜ธ๊ธฐ์‹ฌ์„ ์œ„ํ•ด: ๋ณด๊ณ  ์žˆ๋Š” ์ž˜๋ชป๋œ IP ์ฃผ์†Œ๊ฐ€ VM๊ณผ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? http://ipinfo.io ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋Š ์ •๋„ ํ™•์‹คํ•˜๊ฒŒ ์ถ”์ •ํ•˜๊ฑฐ๋‚˜ ๊ฒฝ๋กœ๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ์—๋Š” ์ž˜๋ชป๋œ IP ์ฃผ์†Œ๊ฐ€ ๋™์ผํ•œ ๋ฌผ๋ฆฌ์  ์„œ๋ฒ„์˜ ๋‹ค๋ฅธ KVM์„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ฆฌ์  ์‹œ์Šคํ…œ์˜ DNS์™€ ๊ด€๋ จ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ kube api ๋˜๋Š” kube dns ๋‚ด๋ถ€์—์„œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๋งŽ์€ ์‹ ๊ทœ ์‚ฌ์šฉ์ž์—๊ฒŒ ํฐ ๊ณ ํ†ต์ด ๋ฉ๋‹ˆ๋‹ค! ๋‚˜๋Š” ๋กœ๊ทธ์—์„œ ์ž˜๋ชป๋œ IP๋กœ dial tcp ๋ฅผ ์•Œ์•„์ฐจ๋ฆฌ๊ธฐ ์ „์— ๋ช‡ ์ €๋…์„ ๋‚ญ๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฝค ์Šฌํ”ˆ ์ฒซ k8 ๊ฒฝํ—˜์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ํ˜ธ์ŠคํŒ… ์ œ๊ณต์—…์ฒด( firstvds.ru )์— CentOS KVM์„ ์œ„ํ•œ ์ข‹์€ ๊ธฐ๋ณธ ์†”๋ฃจ์…˜์ด ์•„์ง ์—†์Šต๋‹ˆ๋‹ค.

IP ์ฃผ์†Œ์—์„œ ์ด ๋งค์šฐ ์ด์ƒํ•œ ๋ถˆ์ผ์น˜์˜ ์›์ธ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@albpal ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ด์–ด์ฃผ์„ธ์š”. ์„ค๋ช…ํ•˜์‹  ๋‚ด์šฉ๊ณผ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ๋ณ„๊ฐœ์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค(ํ•ด๋‹น ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค).

@kachkaev ๋ฐฉ๊ธˆ ์ œ์•ˆํ•˜์‹  ๋‚ด์šฉ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ IP๊ฐ€ CPANEL์—์„œ ๋๋‚˜๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค: vps-1054290-4055.manage.myhosting.com.

๋ฐ˜๋ฉด์— ๋‚ด VPS์˜ ๊ณต์šฉ IP๋Š” ์ดํƒˆ๋ฆฌ์•„์—์„œ ์™”๊ณ  ์ด ์ž˜๋ชป๋œ IP๋Š” ๋ฏธ๊ตญ์—์„œ ์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค... ๊ทธ๋ž˜์„œ ์ž˜๋ชป๋œ IP์— ํ˜ธ์ŠคํŒ…(CPANEL)๊ณผ ๊ด€๋ จ๋œ ๊ฒƒ์ด ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋‹ค๋ฅธ KVM์„ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ๋ฌผ๋ฆฌ์  ์„œ๋ฒ„.

k8์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ?

@luxas ๋‚˜๋Š” ๊ฐ™์€ ๋™์ž‘์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ๋„์ปค ๋กœ๊ทธ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.์ถœ๋ ฅ๋„.

/var/log/messages ๋ฐ kubeadm init์˜ ์ถœ๋ ฅ์€ ๋ชจ๋‘ ์›๋ž˜ ๋ฌธ์ œ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

@albpal ๊ทธ๋ž˜์„œ VM๊ณผ ๋‘ ๋ฒˆ์งธ ์ปดํ“จํ„ฐ๊ฐ€ ๋ชจ๋‘ CPANEL์— ์žˆ์Šต๋‹ˆ๊นŒ? ์ข‹์€ ์ง•์กฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‚ด ๊ฒฝ์šฐ๊ฐ€ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค! ๋™์ผํ•œ ๋ฌผ๋ฆฌ์  ๊ธฐ๊ณ„๋ผ๋Š” ์‚ฌ์‹ค์€ ์šฐ์—ฐ์˜ ์ผ์น˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹คํ—˜์—์„œ ๋‘ ๊ฐœ์˜ KVM์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ํ•˜๋‚˜๋Š” Ubuntu 16.04์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” CentOS 7.3์ž…๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ๋™์ผํ•œ dial tcp IP ์ฃผ์†Œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๋‚ด ๊ณต๊ธ‰์ž์˜ DNS ์„œ๋ฒ„๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ Ubuntu์—์„œ kubeadm์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์†”๋ฃจ์…˜์€ crilozs์˜ ์กฐ์–ธ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

โ€‹apt-get install dnsmasq

rm -rf /etc/resolv.conf
echo "nameserver 127.0.0.1" > /etc/resolv.conf
chmod 444 /etc/resolv.conf
chattr +i /etc/resolv.conf

echo "server=8.8.8.8
server=8.8.4.4" > /etc/dnsmasq.conf

service dnsmasq restart
โ€‹# reboot just in case

์ด๊ฒƒ์€ Ubuntu์˜ ๋กœ๊ทธ์—์„œ dial tcp ๋‹ค์Œ์— ์˜ฌ๋ฐ”๋ฅธ IP ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์™”๊ณ  ๋ช‡ ๋ถ„ ํ›„์— kubeadm์ด ์ดˆ๊ธฐํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค! CentOS์—์„œ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ dnsmasq๋ฅผ ์„ค์ •ํ•ด ๋ณด์•˜์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ €๋Š” ์ด OS์˜ ์™„์ „ํ•œ ์ดˆ๋ณด์ž์ด๋ฏ€๋กœ ์ผ๋ถ€ ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์ผ๋ถ€ ์บ์‹œ๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์•„์ด๋””์–ด๋ฅผ ์‹œ๋„ํ•ด๋ณด์„ธ์š”!

์–ด์จŒ๋“  DNS๋ฅผ ๋‹ค์‹œ ๊ตฌ์„ฑํ•˜๋Š” ์ถ”๊ฐ€ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ธฐ ๋•Œ๋ฌธ์— ์ž˜๋ชป๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. kubeadm์ด ๊ณต๊ธ‰์ž์˜ DNS ์„œ๋ฒ„๊ฐ€ ์ด์ƒํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฐ์ง€ํ•˜๊ณ  ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์ž๋™์œผ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

k8s ํŒ€์˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ๋ณด๊ณ  ์‹ถ์–ดํ•œ๋‹ค๋ฉด ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด FirstVDS KVM์— ๋Œ€ํ•œ ๋ฃจํŠธ ์•ก์„ธ์Šค๋ฅผ ๊ณต์œ ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์ด๋ฉ”์ผ์ด๋‚˜ ํŠธ์œ„ํ„ฐ DM๋งŒ ์ฃผ์„ธ์š”!

@kachkaev ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋‚˜๋Š” ๋‚ด์ผ ๊ทธ๊ฒƒ์„ ์‹œ๋„ ํ•  ๊ฒƒ์ด๋‹ค

cc @kubernetes/sig-network-bugs ์œ„์—์„œ DNS ํ™•์ธ์ด ์‹คํŒจํ•œ ์ด์œ ๋ฅผ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

@kachkaev ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์กฐ์‚ฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์‹ค์ œ๋กœ kubeadm ์ž์ฒด์˜ ์ž˜๋ชป์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์ง€๋งŒ ๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์ผํ•œ ์ž˜๋ชป๋œ ๊ตฌ์„ฑ์— ๊ฐ‡ํ˜€ ์žˆ์œผ๋ฉด ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฌธ์„œ ๋“ฑ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ๋กœ๊ทธ๋Š” @albpal ๋กœ๊ทธ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋†’์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” dnsmasq๋ฅผ ์‹œ๋„ํ•  ๊ฒƒ์ด๋‹ค. ๋‹ค๋“ค ๊ฐ์‚ฌ ํ•ด์š”!

@kachkaev , ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ๋ฌธ์ œ ๐Ÿ˜ข
์ „์ฒด ๋กœ๊ทธ๊ฐ€ ์ฒจ๋ถ€๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ๊ทธ.txt

๊ณ ์น  ์ˆ˜ ์žˆ์—ˆ์–ด์š”!! ํžŒํŠธ๋ฅผ ์ฃผ์‹  @kachkaev ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

์ œ ์ƒ๊ฐ์— ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

### ์‹œ๋‚˜๋ฆฌ์˜ค:
๋‹ค์Œ ๊ตฌ์„ฑ ์Šคํ‚ค๋งˆ๊ฐ€ ์žˆ๋Š” VPS:

resolv.conf
[ root@apalau ~]# ๊ณ ์–‘์ด resolv.conf
๋„ค์ž„์„œ๋ฒ„ 8.8.8.8
๋„ค์ž„์„œ๋ฒ„ 8.8.4.4
๋„ค์ž„์„œ๋ฒ„ 2001:4860:4860::8888
๋„ค์ž„์„œ๋ฒ„ 2001:4860:4860::8844

๊ฒ€์ƒ‰ ๋„๋ฉ”์ธ์ด ์—†์Šต๋‹ˆ๋‹ค!

ํ˜ธ์ŠคํŠธ
[ root@apalau ~]# ๊ณ ์–‘์ด /etc/hosts
127.0.0.1 localhost.local๋„๋ฉ”์ธ localhost
37.XXX.XX.XXX ์ด๋ฆ„.vpshosting.com

๋กœ๊ทธ์— ๋”ฐ๋ผ kubernetes ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‹ค์Œ์— ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

https://localhost :6443/api/v1/secrets?resourceVersion=0 ๊ฐ€์ ธ์˜ค๊ธฐ

๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ์š”์ฒญํ•  ๋•Œ :
$ nslookup "localhost.$(ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ -d)"
๋‚ด๊ฐ€ ์–ป์€ IP๋Š” ์ž˜๋ชป๋œ ๊ฒƒ, ์ฆ‰ 108.59.253.109์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ localhost(๋„๋ฉ”์ธ ์—†์Œ)๋ฅผ ํ™•์ธํ•˜๋ ค๊ณ  ํ•˜๊ณ  ์ž˜๋ชป๋œ IP๋ฅผ ๋ฐ›๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ "localhost.$(hostname -d)"๊ฐ€ ๊ฑฐ์˜ ๋ชจ๋“  VPS ์„œ๋น„์Šค์—์„œ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ํ•ด๋‹น IP๋กœ ํ•ด์„๋˜๊ธฐ ๋•Œ๋ฌธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

## VPS CentOS 7.3์—์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•œ ์ž‘์—…(ํ•ด๋‹น ๋‹จ๊ณ„๋Š” https://kubernetes.io/docs/setup/independent/install-kubeadm/#installing-kubelet-and-kubeadm์— ํ‘œ์‹œ๋จ):

๋ฃจํŠธ๋กœ:

  1. kubeadm ์žฌ์„ค์ •
  2. yum ์„ค์น˜ dnsmasq
  3. cp /etc/resolv.conf ~/resolv.conf_bck
  4. rm -rf /etc/resolv.conf
  5. echo -e "์ด๋ฆ„ ์„œ๋ฒ„ 127.0.0.1\n์ด๋ฆ„ ์„œ๋ฒ„ $(ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ -i)" >> /etc/resolv.conf
  6. chmod 444 /etc/resolv.conf
  7. chattr +i /etc/resolv.conf
  8. echo -e "์„œ๋ฒ„=8.8.8.8\n์„œ๋ฒ„=8.8.4.4" > /etc/dnsmasq.conf
  9. echo -e "$(ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ -i)\tlocalhost.$(ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ -d)" >> /etc/hosts
  10. ์„œ๋น„์Šค dnsmasq ๋‹ค์‹œ ์‹œ์ž‘
  11. firewall-cmd --zone=public --add-port=6443/tcp --permanent && sudo firewall-cmd --zone=public --add-port=10250/tcp --permanent && sudo systemctl ๋ฐฉํ™”๋ฒฝ ๋‹ค์‹œ ์‹œ์ž‘
  12. kubeadm ์ดˆ๊ธฐํ™”

5๋‹จ๊ณ„์—์„œ hostname -i๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด docker๊ฐ€ ์ปจํ…Œ์ด๋„ˆ์˜ resolv.conf์— 8.8.8.8์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋„ ๋„์›€์ด๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”!!

@albpal์ด๋ผ๋Š” ์†Œ์‹์„ ๋“ฃ๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค! kubeadm init ์ „์— ๊ท€ํ•˜์˜ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณค๊ณ  ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ CentOS 7.3์ด ํฌํ•จ๋œ ํ…Œ์ŠคํŠธ FirstVDS KVM ๋‚ด์—์„œ ๋งˆ์นจ๋‚ด ์ดˆ๊ธฐํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๋‚ด๊ฐ€ ํ•ด์•ผ ํ•  ์œ ์ผํ•œ ์ถ”๊ฐ€ ์ž‘์—…์€ ํฌํŠธ 6443์— ๋Œ€ํ•œ ์™ธ๋ถ€ ์—ฐ๊ฒฐ์„ ์ฐจ๋‹จํ•˜๋Š” ๋ฐฉํ™”๋ฒฝ์„ ์ค‘์ง€ํ•˜๊ณ  ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

systemctl disable firewalld
systemctl stop firewalld

_๊ฒฐ๊ณผ๋ฅผ ์•Œ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” OS์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค._

์ด์ œ ์ €์™€ ๊ฐ™์€ ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ์„ค์น˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. Created API client, waiting for the control plane to become ready ์—์„œ ๋ฉˆ์ถ˜ ๊ฒƒ๊ณผ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ ์‚ฌ์ด์˜ ๊ฒฝ๋กœ๋Š” ์—ฌ์ „ํžˆ ๊ฑฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์ด ๋ฌธ์ œ๋ฅผ ํŒŒํ—ค์น˜๊ณ  ๋ชจ๋“  ์ฃผ์„์„ ์ฝ๋Š” ๋ฐ ํ•„์š”ํ•œ ์‹œ๊ฐ„์„ ๊ณ ๋ คํ•˜๋ฉด ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. __๋ฌด์—‡์„ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?__

์ฒจ๋ถ€ ํŒŒ์ผ์—์„œ ๋ณธ @paulobezerr ๊ท€ํ•˜์˜ ๋ฌธ์ œ๊ฐ€ ์•ฝ๊ฐ„ ๋‹ค๋ฅด๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚ด apiserver ๋กœ๊ทธ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

reflector.go:190] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:46: Failed to list *v1.Pod:
Get https://localhost:6443/api/v1/pods?fieldSelector=spec.nodeName%3Dhostname&resourceVersion=0:
dial tcp RANDOM_IP:6443: getsockopt: connection refused

๋‹น์‹ ์ด ๋งํ•˜๋Š” ๋™์•ˆ :

reflector.go:190] k8s.io/kubernetes/pkg/kubelet/config/apiserver.go:46: Failed to list *v1.Pod:
Get https://10.X.X.X:6443/api/v1/pods?fieldSelector=spec.nodeName%3Dhostname&resourceVersion=0:
dial tcp 10.X.X.X:6443: getsockopt: connection refused

(์ฒซ ๋ฒˆ์งธ ๊ฒฝ์šฐ์—๋Š” localhost / RANDOM_IP ์ด๊ณ  ๋‘ ๋ฒˆ์งธ ๊ฒฝ์šฐ์—๋Š” ํ•ญ์ƒ 10.X.X.X ์ž…๋‹ˆ๋‹ค)

๋ถˆํ–‰ํžˆ๋„ kubeadm init ๋•Œ ๋‹ค์–‘ํ•œ --apiserver-advertise-address=??? ๋ฅผ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ์กฐ์–ธํ•ด์•ผ ํ•  ๊ฒƒ์ด ์—†์Šต๋‹ˆ๋‹ค( ๋ฌธ์„œ ์ฐธ์กฐ). ์ €์˜ k8s ์‹ค์Šต ๊ฒฝํ—˜์€ ๋ง‰ 10์ผ์— ์ด๋ฅด๋ €์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ๋Œ€๋ถ€๋ถ„์€ FirstVDS์—์„œ ๋‹จ์ผ ๋…ธ๋“œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋Š” ํ—›๋œ ์‹œ๋„์˜€์Šต๋‹ˆ๋‹ค :-)

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ์†”๋ฃจ์…˜์„ ๊ณต์œ ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

@kachkaev ๋‹ค์Œ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์ ์šฉํ–ˆ๋‹ค๊ณ  ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค.

$ firewall-cmd --zone=public --add-port=6443/tcp --permanent && sudo firewall-cmd --zone=public --add-port=10250/tcp --permanent && sudo systemctl ๋ฐฉํ™”๋ฒฝ ๋‹ค์‹œ ์‹œ์ž‘

๋ฐฉํ™”๋ฒฝ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š๊ณ  ์ด ๊ทœ์น™์„ ์ ์šฉํ•˜๋ฉด ๋‚ด ํ™˜๊ฒฝ์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ์ˆ˜์ง‘ํ•˜๊ธฐ ์œ„ํ•ด ์ด์ „ ๋Œ“๊ธ€์— ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@juntaoXie ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์˜๊ฒฌ ์— ๋”ฐ๋ผ systemd ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ดํ‹€ ๋™์•ˆ ์—ฌ์ „ํžˆ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด ๋ชจ๋“  ๊ฒƒ์„ ํ”„๋ก์‹œ ๋’ค์—์„œ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
kubeadm init๋Š” ์ œ์–ด ํ‰๋ฉด์ด ์ค€๋น„๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•ฉ๋‹ˆ๋‹ค. docker ps๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋‹น๊ฒจ์ง€๊ณ  ์‹คํ–‰๋˜์ง€๋งŒ ํ• ๋‹น๋œ ํฌํŠธ๊ฐ€ ๋’ค์— ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. etcd๋„ ์ž˜ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด kubelet ์„œ๋น„์Šค๋ฅผ ๋ณด๋ฉด Unable to update cni config: No network found in /etc/cni/net.d(https://github.com/kubernetes/kubernetes/issues/43815 )๊ฐ€ ๊ดœ์ฐฎ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. cni ๋„คํŠธ์›Œํฌ๋ฅผ ์ ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
https://www.weave.works/docs/net/latest/kubernetes/kube-addon/์— ๋”ฐ๋ผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ kubectl์€ 8080์ด ๊ฑฐ๋ถ€๋˜์—ˆ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ํ˜ธ์ŠคํŠธ ๋˜๋Š” ํฌํŠธ๋ฅผ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๊นŒ? ๋‹ญ๊ณ ๊ธฐ์™€ ๊ณ„๋ž€ ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๋‚ด kubeadm ์ดˆ๊ธฐํ™”๊ฐ€ ์ค‘๋‹จ๋  ๋•Œ cni ๋„คํŠธ์›Œํฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์ ์šฉํ•ฉ๋‹ˆ๊นŒ??? ๋„ˆ๋ฌด ํ˜ผ๋ž€์Šค๋Ÿฝ๋‹ค

์ด๊ฒƒ์€ ๋˜ํ•œ cgroup ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ฉฐ docker์™€ ๋‚ด kubelet ์„œ๋น„์Šค ๋ชจ๋‘ systemd๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

FWIW, GCP์—์„œ ์ด์™€ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊นจ๋—ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ Ubuntu 16.04 ๋ฐ CentOS๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

$ gcloud compute instance create test-api-01 --zone us-west1-a --image-family ubuntu-1604-lts --image-project ubuntu-os-cloud --machine-type f1-micro --description ' API ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋…ธ๋“œ 1'

$ gcloud compute instance create test-api-02 --zone us-west1-b --image-family ubuntu-1604-lts --image-project ubuntu-os-cloud --machine-type f1-micro --description ' API ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋…ธ๋“œ 2'

$ gcloud compute instance create test-api-03 --zone us-west1-c --image-family ubuntu-1604-lts --image-project ubuntu-os-cloud --machine-type f1-micro --description ' API ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋…ธ๋“œ 3'

$ apt-get ์—…๋ฐ์ดํŠธ

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key ์ถ”๊ฐ€ -

$ apt-get ์—…๋ฐ์ดํŠธ && apt-get install -qy docker.io && apt-get install -y apt-transport-https

$ echo "deb http://apt.kubernetes.io/ kubernetes-xenial ๋ฉ”์ธ" > /etc/apt/sources.list.d/kubernetes.list

$ apt-get ์—…๋ฐ์ดํŠธ && apt-get ์„ค์น˜ -y kubelet kubeadm kubernetes-cni

$ systemctl kubelet ์žฌ์‹œ์ž‘

$ kubeadm ์ดˆ๊ธฐํ™”

๊ทธ๋ž˜์„œ ๋ช‡ ์‹œ๊ฐ„ ๋™์•ˆ ๋จธ๋ฆฌ๋ฅผ ๋งž๋Œ€๊ณ  ๋‚˜์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฒฐ๋ก ์„ ๋‚ด๋ ธ์Šต๋‹ˆ๋‹ค.

$ gcloud beta container --project "weather-177507" ํด๋Ÿฌ์Šคํ„ฐ ์ƒ์„ฑ "weather-api-cluster-1" --zone "us-west1-a" --username="admin" --cluster-version "1.6.7" --machine-type "f1-micro" --image-type "COS" --disk-size "100" --scopes " https://www.googleapis.com/auth/compute "," https:// www.googleapis.com/auth/devstorage.read_only "," https://www.googleapis.com/auth/logging.write "," https://www.googleapis.com/auth/monitoring.write "," https://www.googleapis.com/auth/servicecontrol "," https://www.googleapis.com/auth/service.management.readonly "," https://www.googleapis.com/auth/trace. ์ถ”๊ฐ€ " --num-nodes "3" --network "default" --enable-cloud-logging --no-enable-cloud-monitoring --enable-legacy-authorization

๋นˆ ์ด๋ฏธ์ง€์—์„œ ํ•  ์ˆ˜ ์—†๋Š” ๊ณณ์—์„œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ฐ€๋™ํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

Kubeadm ๋ฒ„์ „์—์„œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
image
์— ๊ฐ‡ํžˆ๋‹ค
[apiclient] Created API client, waiting for the control plane to become ready
image

@paulobezerr ์™€ ๋™์ผํ•œ ๋ฌธ์ œ - ๋‚ด ํ™˜๊ฒฝ: CentOS 7.4.1708 kubeadm ๋ฒ„์ „: &version.Info{์ฃผ์š”:"1", ๋ถ€:"8", GitVersion:"v1.8.0", GitCommit:"6e937839ac04a38cac63e6a7a30",fec63e6a7a30" ", BuildDate:"2017-09-28T22:46:41Z", GoVersion:"go1.8.3", ์ปดํŒŒ์ผ๋Ÿฌ:"gc", ํ”Œ๋žซํผ:"linux/amd64"}

๋‚˜์—๊ฒŒ ์ด ๋ฌธ์ œ๋Š” SELinux๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋œ ์ƒํƒœ์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‹จ์„œ๋Š” ๊ทธ์˜ ๊ฑธ์Œ๊ฑธ์ด์˜€๋‹ค.

/etc/selinux/config๋ฅผ ํŽธ์ง‘ํ•˜๊ณ  SELINUX=disabled๋กœ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.

CentOS์šฉ ์„ค์น˜ ๋‹จ๊ณ„(https://kubernetes.io/docs/setup/independent/install-kubeadm/)๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
"์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ˜ธ์ŠคํŠธ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ ค๋ฉด setenforce 0์„ ์‹คํ–‰ํ•˜์—ฌ SELinux๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค."
๊ทธ๋Ÿฌ๋‚˜ (์ ์–ด๋„ CentOS/RHEL/Fedora ํƒญ์—์„œ๋Š”) /etc/selinux/config๋ฅผ ํŽธ์ง‘ํ•˜๊ณ  SELINUX=disabled๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ €์—๊ฒŒ๋Š” setenforce 0์„ ์‹คํ–‰ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. /etc/selinux/config๋ฅผ ํŽธ์ง‘ํ•˜๊ณ  SELINUX=disabled๋กœ ์„ค์ •ํ•œ ๋‹ค์Œ ์žฌ๋ถ€ํŒ…ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

(์ž ์žฌ์ ์œผ๋กœ ์ง๊ตํ•  ์ˆ˜ ์žˆ๋Š”) ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ์—ฌ๊ธฐ์— ์žˆ๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฏ€๋กœ ์ƒํ™ฉ์ด ๋ถ„์‚ฐ๋˜์ง€ ์•Š๋„๋ก ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ๋Š” 3๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ์ •ํ™•ํžˆ ์ง€์ ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. DNS๊ฐ€ ์ผ๋ถ€ ์ปดํ“จํ„ฐ์—์„œ localhost๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ™•์ธํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. @kachkaev @paulobezerr ํ•ด๊ฒฐํ•˜์…จ๋‚˜์š”? ์šฐ๋ฆฌ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์—์„œ ์ด๊ฒƒ์„ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

  2. kubelet๊ณผ Docker ๊ฐ„์˜ ์ž˜๋ชป๋œ cgroup-driver ์ผ์น˜์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์š”๊ตฌ ์‚ฌํ•ญ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  3. SELinux๋Š” ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์š”๊ตฌ ์‚ฌํ•ญ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

3๊ฐ€์ง€ ๋ชจ๋‘๊ฐ€ PR๋กœ ํ•ด๊ฒฐ๋˜๋ฉด ์•„๋งˆ๋„ ์ด๊ฒƒ์„ ๋‹ซ์•„์•ผ ํ•˜๊ณ  ๋ฏธ๋ž˜์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์Šค์Šค๋กœ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ์—์„œ ๋งŽ์€ ๊ฒƒ์„ ์ €๊ธ€๋งํ•˜๋Š” ๊ฒƒ๊ณผ๋Š” ๋Œ€์กฐ์ ์œผ๋กœ ๋ณด๋‹ค ๊ตฌ์กฐํ™”๋œ ์ •๋ณด๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ๋ณด๋‹ค ์„ธ๋ถ„ํ™”๋œ ์ง€์›์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. @luxas๋Š” ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”?

๋‚˜๋ฅผ ์œ„ํ•ด ๋‚˜๋Š” docker 17.06(17.03์ด ๊ถŒ์žฅ๋˜์ง€๋งŒ docker.io์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ๋ฌธ์ œ์—์„œ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. 17.09๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋งˆ์ˆ ์ฒ˜๋Ÿผ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด์ง€๊ณ  ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ๋งŽ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ @jamiehannaford ์˜ ํ›Œ๋ฅญํ•œ ์˜๊ฒฌ ์™ธ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ƒ์‚ฐ์ ์ธ ๊ฒƒ์€ ๋ชจ๋“  ๊ด€๋ จ ๋กœ๊ทธ/์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ์ƒˆ๋กœ์šด ๋Œ€์ƒ ๋ฌธ์ œ๋ฅผ ์—ฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋‚˜์€ ๊ฒฐํ•จ ์ƒํƒœ๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๋Š” _์ตœ์‹  kubeadm v1.8_์—์„œ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ์‚ฌ๋žŒ๋“ค์˜ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋Š” ์š”๊ตฌ ์‚ฌํ•ญ ๋ฐ ์—ฃ์ง€ ์ผ€์ด์Šค์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋‘ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

1.8์ด ์„ค์น˜๋œ CENTOS 7์—์„œ 1.8๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๊นŒ? ๋ˆ„๊ตฌ๋“ ์ง€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@rushins ๋ณด๊ณ  ์žˆ๋Š” ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋„์›€์„ ๋ฐ›์œผ๋ ค๋ฉด ์—ฌ๊ธฐ์—์„œ ์ถฉ๋ถ„ํ•œ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ฌ์‹ญ์‹œ์˜ค.

connection refused localhost:6443/api ๊ฐ€ ์•„๋‹Œ @rushabh268 ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๋งˆ์ง€๋ง‰์œผ๋กœ search xxx.xx.xxxx.org ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋„๋ฉ”์ธ์„ ํ‘œ์‹œํ•˜์—ฌ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

vi /etc/resolv.congf

------ resolv.congf -----
# Generated by NetworkManager
#search xxx.xx.xxxx.org
nameserver 10.x.xxx.xx
nameserver 10.x.xxx.xx
nameserver 10.x.xxx.xx
--------------------------

ํ™˜๊ฒฝ:
-> CentOS-7-x86_64-Minimal-1708
-> K8s v1.9.2
-> ๋„์ปค v17.12.0.ce
-> ๊ฐœ์ธ ๋„คํŠธ์›Œํฌ xxx.xx.xxxx.org์—์„œ

์‹ ์˜ ์‚ฌ๋ž‘์„ ์œ„ํ•ด ์ด๊ฒƒ์„ ๋ฌธ์„œ์— ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. ๋‚˜๋Š” nslookup localhost๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์˜ฌ๋ฐ”๋ฅธ IP๋ฅผ ์–ป์ง€ ๋ชปํ•˜๋Š” ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์— ์˜ํ•ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜์— ๋Œ€ํ•ด @kachkaev ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰