Kubeadm: ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ : kubelet cgroup ๋“œ๋ผ์ด๋ฒ„

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

๋ฒ„๊ทธ ๋ณด๊ณ ์„œ

๋ฒ„์ „

kubeadm ๋ฒ„์ „ : 1.9.0-00 amd64
kubelet ๋ฒ„์ „ : 1.9.0-00 amd64
kubernetes- cni : 0.6.0-00 amd64
docker-ce ๋ฒ„์ „ : 17.12.0 ~ ce-0 ~ ubuntu amd64
์‹œ์Šคํ…œ ๋ฒ„์ „ : Ubuntu 16.04.3 LTS
๋ฌผ๋ฆฌ์  ๊ธฐ๊ณ„

๋ฌธ์ œ์ 

์šฐ๋ถ„ํˆฌ 16.04์— kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค. kubeadm init๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
[init] ์ œ์–ด ํ”Œ๋ ˆ์ธ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์™€์•ผํ•˜๋Š” ๊ฒฝ์šฐ 1 ๋ถ„ ์ด์ƒ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
[kubelet-check] kubelet์ด ์‹คํ–‰๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ •์ƒ์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
[kubelet-check] kubelet์ด ์‹คํ–‰๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ •์ƒ์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
[kubelet-check] kubelet์ด ์‹คํ–‰๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ •์ƒ์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
[kubelet-check] kubelet์ด ์‹คํ–‰๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ •์ƒ์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
[kubelet-check] kubelet์ด ์‹คํ–‰๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ •์ƒ์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
[kubelet-check] kubelet์ด ์‹คํ–‰๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ •์ƒ์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
[kubelet-check] kubelet์ด ์‹คํ–‰๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ •์ƒ์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

syslog / var / log / syslog๋ฅผ ๋ณธ ํ›„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
1 ์›” 4 ์ผ 16:20:58 master03 kubelet [10360] : W0104 16 : 20 : 58.268285 10360 cni.go : 171] cni ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์—†์Œ : /etc/cni/net.d์—์„œ ๋„คํŠธ์›Œํฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ
1 ์›” 4 ์ผ 16:20:58 master03 kubelet [10360] : W0104 16 : 20 : 58.269487 10360 cni.go : 171] cni ๊ตฌ์„ฑ์„ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์—†์Œ : /etc/cni/net.d์—์„œ ๋„คํŠธ์›Œํฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ
Jan 04 16:20:58 master03 kubelet [10360] : I0104 16 : 20 : 58.269527 10360 docker_service.go : 232] cni์—์„œ ๊ด€๋ฆฌํ•˜๋Š” Docker cri ๋„คํŠธ์›Œํ‚น
1 ์›” 4 ์ผ 16:20:58 master03 kubelet [10360] : I0104 16 : 20 : 58.274386 10360 docker_service.go : 237] Docker ์ •๋ณด : & {ID : 3 XXZ : XEDW : ZDQS : A2MI : 5 AEN : CFEP : 44AQ : YDS4 : CRME : UBRS : 46LI : MXNS C ontainers : 0 Containe rsRunning : 0 Cont
1 ์›” 4 ์ผ 16:20:58 master03 kubelet [10360] : ์˜ค๋ฅ˜ : Kubelet ์‹คํ–‰ ์‹คํŒจ : kubelet ์ƒ์„ฑ ์‹คํŒจ : ์ž˜๋ชป๋œ ๊ตฌ์„ฑ : kubelet cgroup ๋“œ๋ผ์ด๋ฒ„ : "cgroupfs"๊ฐ€ docker cgroup ๋“œ๋ผ์ด๋ฒ„์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค : "systemd"

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” docker cgroup ๋“œ๋ผ์ด๋ฒ„๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. docker info | grep -i cgroup
Cgroup ๋“œ๋ผ์ด๋ฒ„ : systemd

๋ฒ„์ „

kubeadm ๋ฒ„์ „ ( kubeadm version ) :

ํ™˜๊ฒฝ :

  • Kubernetes ๋ฒ„์ „ ( kubectl version ) :
  • ํด๋ผ์šฐ๋“œ ์ œ๊ณต ์—…์ฒด ๋˜๋Š” ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ :
  • OS (์˜ˆ : / etc / os-release) :
  • ์ปค๋„ (์˜ˆ : uname -a ) :
  • ๊ธฐํƒ€ :

์–ด๋–ป๊ฒŒ ๋œ ๊ฑฐ์˜ˆ์š”?

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ ํ–ˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๊ฒƒ์„ ์žฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• (๊ฐ€๋Šฅํ•œ ํ•œ ์ตœ์†Œํ•œ์œผ๋กœ ์ •ํ™•ํ•˜๊ฒŒ)?

์šฐ๋ฆฌ๊ฐ€ ์•Œ์•„์•ผ ํ•  ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

kinbug lifecyclactive prioritimportant-soon

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

kubeadm v1.9.2 ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์ง€๋งŒ kubelet์ด systemd cgroup ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubelet์€ --cgroup-driver = systemd๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
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=10.96.0.10 --cluster-domain=cluster.local"
Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt"
Environment="KUBELET_CADVISOR_ARGS=--cadvisor-port=0"
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"
Environment="KUBELET_CERTIFICATE_ARGS=--rotate-certificates=true --cert-dir=/var/lib/kubelet/pki"
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CGROUP_ARGS $KUBELET_CERTIFICATE_ARGS $KUBELET_EXTRA_ARGS

๋„์ปค ์ •๋ณด |

 WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
Cgroup Driver: systemd

kubelet ๋กœ๊ทธ

I0206 16:20:40.010949    5712 feature_gate.go:220] feature gates: &{{} map[]}
I0206 16:20:40.011054    5712 controller.go:114] kubelet config controller: starting controller
I0206 16:20:40.011061    5712 controller.go:118] kubelet config controller: validating combination of defaults and flags
W0206 16:20:40.015566    5712 cni.go:171] Unable to update cni config: No networks found in /etc/cni/net.d
I0206 16:20:40.019079    5712 server.go:182] Version: v1.9.2
I0206 16:20:40.019136    5712 feature_gate.go:220] feature gates: &{{} map[]}
I0206 16:20:40.019240    5712 plugins.go:101] No cloud provider specified.
W0206 16:20:40.019273    5712 server.go:328] standalone mode, no API client
W0206 16:20:40.041031    5712 server.go:236] No api server defined - no events will be sent to API server.
I0206 16:20:40.041058    5712 server.go:428] --cgroups-per-qos enabled, but --cgroup-root was not specified.  defaulting to /
I0206 16:20:40.041295    5712 container_manager_linux.go:242] container manager verified user specified cgroup-root exists: /
I0206 16:20:40.041308    5712 container_manager_linux.go:247] Creating Container Manager object based on Node Config: {RuntimeCgroupsName: SystemCgroupsName: KubeletCgroupsName: ContainerRuntime:docker CgroupsPerQOS:true CgroupRoot:/ CgroupDriver:cgroupfs KubeletRootDir:/var/lib/kubelet ProtectKernelDefaults:false NodeAllocatableConfig:{KubeReservedCgroupName: SystemReservedCgroupName: EnforceNodeAllocatable:map[pods:{}] KubeReserved:map[] SystemReserved:map[] HardEvictionThresholds:[{Signal:memory.available Operator:LessThan Value:{Quantity:100Mi Percentage:0} GracePeriod:0s MinReclaim:<nil>} {Signal:nodefs.available Operator:LessThan Value:{Quantity:<nil> Percentage:0.1} GracePeriod:0s MinReclaim:<nil>} {Signal:nodefs.inodesFree Operator:LessThan Value:{Quantity:<nil> Percentage:0.05} GracePeriod:0s MinReclaim:<nil>} {Signal:imagefs.available Operator:LessThan Value:{Quantity:<nil> Percentage:0.15} GracePeriod:0s MinReclaim:<nil>}]} ExperimentalQOSReserved:map[] ExperimentalCPUManagerPolicy:none ExperimentalCPUManagerReconcilePeriod:10s}
I0206 16:20:40.041412    5712 container_manager_linux.go:266] Creating device plugin manager: false
W0206 16:20:40.043521    5712 kubelet_network.go:139] Hairpin mode set to "promiscuous-bridge" but kubenet is not enabled, falling back to "hairpin-veth"
I0206 16:20:40.043541    5712 kubelet.go:571] Hairpin mode set to "hairpin-veth"
I0206 16:20:40.044909    5712 client.go:80] Connecting to docker on unix:///var/run/docker.sock
I0206 16:20:40.044937    5712 client.go:109] Start docker client with request timeout=2m0s
W0206 16:20:40.046785    5712 cni.go:171] Unable to update cni config: No networks found in /etc/cni/net.d
I0206 16:20:40.049953    5712 docker_service.go:232] Docker cri networking managed by kubernetes.io/no-op
I0206 16:20:40.055138    5712 docker_service.go:237] Docker Info: &{ID:ZXWO:G2FL:QM3S:IAWM:ITQL:XHRH:ZA3T:FJMV:5JDW:IMKI:NIFS:2Z4M Containers:8 ContainersRunning:0 ContainersPaused:0 ContainersStopped:8 Images:11 Driver:devicemapper DriverStatus:[[Pool Name docker-253:0-33593794-pool] [Pool Blocksize 65.54 kB] [Base Device Size 10.74 GB] [Backing Filesystem xfs] [Data file /dev/loop0] [Metadata file /dev/loop1] [Data Space Used 1.775 GB] [Data Space Total 107.4 GB] [Data Space Available 14.72 GB] [Metadata Space Used 2.093 MB] [Metadata Space Total 2.147 GB] [Metadata Space Available 2.145 GB] [Thin Pool Minimum Free Space 10.74 GB] [Udev Sync Supported true] [Deferred Removal Enabled true] [Deferred Deletion Enabled true] [Deferred Deleted Device Count 0] [Data loop file /var/lib/docker/devicemapper/devicemapper/data] [Metadata loop file /var/lib/docker/devicemapper/devicemapper/metadata] [Library Version 1.02.140-RHEL7 (2017-05-03)]] SystemStatus:[] Plugins:{Volume:[local] Network:[overlay host null bridge] Authorization:[] Log:[]} MemoryLimit:true SwapLimit:true KernelMemory:true CPUCfsPeriod:true CPUCfsQuota:true CPUShares:true CPUSet:true IPv4Forwarding:true BridgeNfIptables:true BridgeNfIP6tables:true Debug:true NFd:16 OomKillDisable:true NGoroutines:25 SystemTime:2018-02-06T16:20:40.054685386Z LoggingDriver:journald CgroupDriver:systemd NEventsListener:0 KernelVersion:3.10.0-693.el7.x86_64 OperatingSystem:CentOS Linux 7 (Core) OSType:linux Architecture:x86_64 IndexServerAddress:https://index.docker.io/v1/ RegistryConfig:0xc42021a380 NCPU:2 MemTotal:2097782784 GenericResources:[] DockerRootDir:/var/lib/docker HTTPProxy: HTTPSProxy: NoProxy: Name:master1 Labels:[] ExperimentalBuild:false ServerVersion:1.12.6 ClusterStore: ClusterAdvertise: Runtimes:map[docker-runc:{Path:/usr/libexec/docker/docker-runc-current Args:[]} runc:{Path:docker-runc Args:[]}] DefaultRuntime:docker-runc Swarm:{NodeID: NodeAddr: LocalNodeState:inactive ControlAvailable:false Error: RemoteManagers:[] Nodes:0 Managers:0 Cluster:0xc420472640} LiveRestoreEnabled:false Isolation: InitBinary: ContainerdCommit:{ID: Expected:} RuncCommit:{ID: Expected:} InitCommit:{ID: Expected:} SecurityOptions:[seccomp]}
error: failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd"

๋ฒ„์ „ ์ •๋ณด :

 kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.2", GitCommit:"5fa2db2bd46ac79e5e00a4e6ed24191080aa463b", GitTreeState:"clean", BuildDate:"2018-01-18T09:42:01Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
kubelet --version
Kubernetes v1.9.2
docker version
Client:
 Version:         1.12.6
 API version:     1.24
 Package version: docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64
 Go version:      go1.8.3
 Git commit:      3e8e77d/1.12.6
 Built:           Tue Jan 30 09:17:00 2018
 OS/Arch:         linux/amd64

Server:
 Version:         1.12.6
 API version:     1.24
 Package version: docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64
 Go version:      go1.8.3
 Git commit:      3e8e77d/1.12.6
 Built:           Tue Jan 30 09:17:00 2018
 OS/Arch:         linux/amd64

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

์˜ค๋ฅ˜ : Kubelet ์‹คํ–‰ ์‹คํŒจ : kubelet ์ƒ์„ฑ ์‹คํŒจ : ์ž˜๋ชป๋œ ๊ตฌ์„ฑ : kubelet cgroup ๋“œ๋ผ์ด๋ฒ„ : "cgroupfs"๊ฐ€ docker cgroup ๋“œ๋ผ์ด๋ฒ„์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค : "systemd"

๋„์ปค ์ •๋ณด | grep -i cgroup
Cgroup ๋“œ๋ผ์ด๋ฒ„ : systemd

ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ lavender2020 --cgroup-driver=systemd ๋ฅผ kubelet ์‹œ์ž‘ ์ธ์ˆ˜์— ์ˆ˜๋™์œผ๋กœ ์ถ”๊ฐ€ํ•˜๊ณ  kubelet ์œ ๋‹› ํŒŒ์ผ์„ ๋‹ค์‹œ๋กœ๋“œํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

kubelet ๊ฐ€ ํ˜ธ์ŠคํŠธ์—์„œ cgroup์„ ์กฐ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ๋“œ๋ผ์ด๋ฒ„๋Š” cgroupfs ์ž…๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค kubeadm ์ฃผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด

@luxas ๋” ๋ช…ํ™•ํ•œ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด docker ์™€ kubelet ์‚ฌ์ด์˜ cgroup ๋“œ๋ผ์ด๋ฒ„ ์ผ๊ด€์„ฑ์— ๋Œ€ํ•œ ์‚ฌ์ „ ํ•„ํ„ฐ ๊ฒ€์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ• ๊นŒ์š”? ๋˜๋Š” kubelet.service ์— ๋‹ค๋ฅธ ๋“œ๋กญ ์ธ์„ ์ถ”๊ฐ€ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๊ทธ๋ƒฅ /etc/systemd/system/kubelet.service.d/10-kubeadm.conf ๋ฅผ ์ˆ˜์ • ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๋ ค๋ฉด ๋ฃจํŠธ ๊ถŒํ•œ์„ ์–ป์–ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubeadm v1.9.2 ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์ง€๋งŒ kubelet์ด systemd cgroup ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubelet์€ --cgroup-driver = systemd๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
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=10.96.0.10 --cluster-domain=cluster.local"
Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt"
Environment="KUBELET_CADVISOR_ARGS=--cadvisor-port=0"
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"
Environment="KUBELET_CERTIFICATE_ARGS=--rotate-certificates=true --cert-dir=/var/lib/kubelet/pki"
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CGROUP_ARGS $KUBELET_CERTIFICATE_ARGS $KUBELET_EXTRA_ARGS

๋„์ปค ์ •๋ณด |

 WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
Cgroup Driver: systemd

kubelet ๋กœ๊ทธ

I0206 16:20:40.010949    5712 feature_gate.go:220] feature gates: &{{} map[]}
I0206 16:20:40.011054    5712 controller.go:114] kubelet config controller: starting controller
I0206 16:20:40.011061    5712 controller.go:118] kubelet config controller: validating combination of defaults and flags
W0206 16:20:40.015566    5712 cni.go:171] Unable to update cni config: No networks found in /etc/cni/net.d
I0206 16:20:40.019079    5712 server.go:182] Version: v1.9.2
I0206 16:20:40.019136    5712 feature_gate.go:220] feature gates: &{{} map[]}
I0206 16:20:40.019240    5712 plugins.go:101] No cloud provider specified.
W0206 16:20:40.019273    5712 server.go:328] standalone mode, no API client
W0206 16:20:40.041031    5712 server.go:236] No api server defined - no events will be sent to API server.
I0206 16:20:40.041058    5712 server.go:428] --cgroups-per-qos enabled, but --cgroup-root was not specified.  defaulting to /
I0206 16:20:40.041295    5712 container_manager_linux.go:242] container manager verified user specified cgroup-root exists: /
I0206 16:20:40.041308    5712 container_manager_linux.go:247] Creating Container Manager object based on Node Config: {RuntimeCgroupsName: SystemCgroupsName: KubeletCgroupsName: ContainerRuntime:docker CgroupsPerQOS:true CgroupRoot:/ CgroupDriver:cgroupfs KubeletRootDir:/var/lib/kubelet ProtectKernelDefaults:false NodeAllocatableConfig:{KubeReservedCgroupName: SystemReservedCgroupName: EnforceNodeAllocatable:map[pods:{}] KubeReserved:map[] SystemReserved:map[] HardEvictionThresholds:[{Signal:memory.available Operator:LessThan Value:{Quantity:100Mi Percentage:0} GracePeriod:0s MinReclaim:<nil>} {Signal:nodefs.available Operator:LessThan Value:{Quantity:<nil> Percentage:0.1} GracePeriod:0s MinReclaim:<nil>} {Signal:nodefs.inodesFree Operator:LessThan Value:{Quantity:<nil> Percentage:0.05} GracePeriod:0s MinReclaim:<nil>} {Signal:imagefs.available Operator:LessThan Value:{Quantity:<nil> Percentage:0.15} GracePeriod:0s MinReclaim:<nil>}]} ExperimentalQOSReserved:map[] ExperimentalCPUManagerPolicy:none ExperimentalCPUManagerReconcilePeriod:10s}
I0206 16:20:40.041412    5712 container_manager_linux.go:266] Creating device plugin manager: false
W0206 16:20:40.043521    5712 kubelet_network.go:139] Hairpin mode set to "promiscuous-bridge" but kubenet is not enabled, falling back to "hairpin-veth"
I0206 16:20:40.043541    5712 kubelet.go:571] Hairpin mode set to "hairpin-veth"
I0206 16:20:40.044909    5712 client.go:80] Connecting to docker on unix:///var/run/docker.sock
I0206 16:20:40.044937    5712 client.go:109] Start docker client with request timeout=2m0s
W0206 16:20:40.046785    5712 cni.go:171] Unable to update cni config: No networks found in /etc/cni/net.d
I0206 16:20:40.049953    5712 docker_service.go:232] Docker cri networking managed by kubernetes.io/no-op
I0206 16:20:40.055138    5712 docker_service.go:237] Docker Info: &{ID:ZXWO:G2FL:QM3S:IAWM:ITQL:XHRH:ZA3T:FJMV:5JDW:IMKI:NIFS:2Z4M Containers:8 ContainersRunning:0 ContainersPaused:0 ContainersStopped:8 Images:11 Driver:devicemapper DriverStatus:[[Pool Name docker-253:0-33593794-pool] [Pool Blocksize 65.54 kB] [Base Device Size 10.74 GB] [Backing Filesystem xfs] [Data file /dev/loop0] [Metadata file /dev/loop1] [Data Space Used 1.775 GB] [Data Space Total 107.4 GB] [Data Space Available 14.72 GB] [Metadata Space Used 2.093 MB] [Metadata Space Total 2.147 GB] [Metadata Space Available 2.145 GB] [Thin Pool Minimum Free Space 10.74 GB] [Udev Sync Supported true] [Deferred Removal Enabled true] [Deferred Deletion Enabled true] [Deferred Deleted Device Count 0] [Data loop file /var/lib/docker/devicemapper/devicemapper/data] [Metadata loop file /var/lib/docker/devicemapper/devicemapper/metadata] [Library Version 1.02.140-RHEL7 (2017-05-03)]] SystemStatus:[] Plugins:{Volume:[local] Network:[overlay host null bridge] Authorization:[] Log:[]} MemoryLimit:true SwapLimit:true KernelMemory:true CPUCfsPeriod:true CPUCfsQuota:true CPUShares:true CPUSet:true IPv4Forwarding:true BridgeNfIptables:true BridgeNfIP6tables:true Debug:true NFd:16 OomKillDisable:true NGoroutines:25 SystemTime:2018-02-06T16:20:40.054685386Z LoggingDriver:journald CgroupDriver:systemd NEventsListener:0 KernelVersion:3.10.0-693.el7.x86_64 OperatingSystem:CentOS Linux 7 (Core) OSType:linux Architecture:x86_64 IndexServerAddress:https://index.docker.io/v1/ RegistryConfig:0xc42021a380 NCPU:2 MemTotal:2097782784 GenericResources:[] DockerRootDir:/var/lib/docker HTTPProxy: HTTPSProxy: NoProxy: Name:master1 Labels:[] ExperimentalBuild:false ServerVersion:1.12.6 ClusterStore: ClusterAdvertise: Runtimes:map[docker-runc:{Path:/usr/libexec/docker/docker-runc-current Args:[]} runc:{Path:docker-runc Args:[]}] DefaultRuntime:docker-runc Swarm:{NodeID: NodeAddr: LocalNodeState:inactive ControlAvailable:false Error: RemoteManagers:[] Nodes:0 Managers:0 Cluster:0xc420472640} LiveRestoreEnabled:false Isolation: InitBinary: ContainerdCommit:{ID: Expected:} RuncCommit:{ID: Expected:} InitCommit:{ID: Expected:} SecurityOptions:[seccomp]}
error: failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd"

๋ฒ„์ „ ์ •๋ณด :

 kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.2", GitCommit:"5fa2db2bd46ac79e5e00a4e6ed24191080aa463b", GitTreeState:"clean", BuildDate:"2018-01-18T09:42:01Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
kubelet --version
Kubernetes v1.9.2
docker version
Client:
 Version:         1.12.6
 API version:     1.24
 Package version: docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64
 Go version:      go1.8.3
 Git commit:      3e8e77d/1.12.6
 Built:           Tue Jan 30 09:17:00 2018
 OS/Arch:         linux/amd64

Server:
 Version:         1.12.6
 API version:     1.24
 Package version: docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64
 Go version:      go1.8.3
 Git commit:      3e8e77d/1.12.6
 Built:           Tue Jan 30 09:17:00 2018
 OS/Arch:         linux/amd64

@dkirrane kubelet.service ๋‹จ์œ„ ํŒŒ์ผ์„ ๋‹ค์‹œ๋กœ๋“œ ํ–ˆ์Šต๋‹ˆ๊นŒ?

systemctl daemon-reload ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  systemctl restart kubelet .

์ด ๋ฌธ์ œ๋Š” 1.9.3์—์„œ ์ˆ˜์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „ ์ •๋ณด :

kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.3", GitCommit:"d2835416544f298c919e2ead3be3d0864b52323b", GitTreeState:"clean", BuildDate:"2018-02-07T11:55:20Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
kubelet --version
Kubernetes v1.9.3
 docker version
Client:
 Version:      1.13.1
 API version:  1.26
 Go version:   go1.6.2
 Git commit:   092cba3
 Built:        Thu Nov  2 20:40:23 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.13.1
 API version:  1.26 (minimum version 1.12)
 Go version:   go1.6.2
 Git commit:   092cba3
 Built:        Thu Nov  2 20:40:23 2017
 OS/Arch:      linux/amd64
 Experimental: false

@gades cgroup ๋“œ๋ผ์ด๋ฒ„๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

$ docker info | grep -i cgroup

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

docker info | grep -i cgroup
Cgroup Driver: systemd
cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
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=10.96.0.10 --cluster-domain=cluster.local"
Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt"
Environment="KUBELET_CADVISOR_ARGS=--cadvisor-port=0"
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"
Environment="KUBELET_CERTIFICATE_ARGS=--rotate-certificates=true --cert-dir=/var/lib/kubelet/pki"
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CGROUP_ARGS $KUBELET_CERTIFICATE_ARGS $KUBELET_EXTRA_ARGS
I0227 13:17:43.802942    3493 docker_service.go:237] Docker Info: &{ID:RJUG:6DLB:A4JM:4T6H:JYKO:7JUC:NQCI:SLI2:DC64:ZXOT:DIX6:ASJY Containers:0 ContainersRunning:0 ContainersPaused:0 ContainersStopped:0 Images:0 Driver:overlay DriverStatus:[[Backing Filesystem extfs]] SystemStatus:[] Plugins:{Volume:[local] Network:[bridge overlay null host] Authorization:[] Log:[]} MemoryLimit:true SwapLimit:true KernelMemory:true CPUCfsPeriod:true CPUCfsQuota:true CPUShares:true CPUSet:true IPv4Forwarding:true BridgeNfIptables:true BridgeNfIP6tables:true Debug:false NFd:26 OomKillDisable:true NGoroutines:47 SystemTime:2018-02-27T13:17:43.802488651-08:00 LoggingDriver:journald CgroupDriver:systemd NEventsListener:0 KernelVersion:3.10.0-693.11.6.el7.x86_64 OperatingSystem:CentOS Linux 7 (Core) OSType:linux Architecture:x86_64 IndexServerAddress:https://index.docker.io/v1/ RegistryConfig:0xc42033d7a0 NCPU:64 MemTotal:270186274816 GenericResources:[] DockerRootDir:/var/lib/docker HTTPProxy: HTTPSProxy: NoProxy: Name:param03.lancelot.cluster.bds Labels:[] ExperimentalBuild:false ServerVersion:1.12.6 ClusterStore: ClusterAdvertise: Runtimes:map[docker-runc:{Path:/usr/libexec/docker/docker-runc-current Args:[]} runc:{Path:docker-runc Args:[]}] DefaultRuntime:docker-runc Swarm:{NodeID: NodeAddr: LocalNodeState:inactive ControlAvailable:false Error: RemoteManagers:[] Nodes:0 Managers:0 Cluster:0xc420360640} LiveRestoreEnabled:false Isolation: InitBinary: ContainerdCommit:{ID: Expected:} RuncCommit:{ID: Expected:} InitCommit:{ID: Expected:} SecurityOptions:[seccomp]}
error: failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd"

Kubelet์ด cgroupfs ๋“œ๋ผ์ด๋ฒ„ ์ง€์‹œ๋ฌธ์„ ์–ป๋Š” ๋‹ค๋ฅธ ๊ณณ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@ mas-dse-greina ๋‚ด ์˜๊ฒฌ ์˜ ์†”๋ฃจ์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

@dixudx --cgroup-driver=systemd ๋ฅผ /etc/systemd/system/kubelet.service.d/10-kubeadm.conf ํ•œ ํ›„์—๋„ ๋ฌธ์ œ๋Š” ๊ณ„์†๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ตœ์‹  ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.
[Service] Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf" 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=10.96.0.10 --cluster-domain=cluster.local" Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt" Environment="KUBELET_CADVISOR_ARGS=--cadvisor-port=0" Environment="KUBELET_CERTIFICATE_ARGS=--rotate-certificates=true --cert-dir=/var/lib/kubelet/pki" ExecStart= ExecStart=/usr/bin/kubelet --cgroup-driver=systemd $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CERTIFICATE_ARGS $KUBELET_EXTRA_ARGS

์ถ”์‹  : ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ๋ชฌ๊ณผ kubelet์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ ํ›„ kubeadm init --pod-network-cidr = 10.244.0.0 / 16์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ. ๋‚˜๋Š” ๋˜‘๊ฐ™์€ ๊ฒƒ์„ ์ฐพ๊ณ ์žˆ๋‹ค. --cgroup-driver = systemd ์ถ”๊ฐ€
ํšจ๊ณผ๊ฐ€์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ–ˆ์œผ๋ฉฐ
์ปดํ“จํ„ฐ๋ฅผ ์žฌ๋ถ€ํŒ…ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ํ•œ ๋Œ€์˜ ์ปดํ“จํ„ฐ์—์„œ๋งŒ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š”
๋‹ค๋ฅธ 4 ๋Œ€์˜ ๊ธฐ๊ณ„์—์„œ ์„ฑ๊ณตํ–ˆ์ง€๋งŒ์ด ๊ธฐ๊ณ„๋Š”
ํด๋Ÿฌ์Šคํ„ฐ์— ๊ฐ€์ž…ํ•˜์‹ญ์‹œ์˜ค.

-ํ† ๋‹ˆ

2018 ๋…„ 3 ์›” 1 ์ผ ๋ชฉ์š”์ผ ์˜ค์ „ 11:44, srinivas491-oneconvergence <
[email protected]> ์ž‘์„ฑ :

@dixudx https://github.com/dixudx
--cgroup-driver = systemd์—์„œ / etc / systemd / system / kubelet์œผ๋กœ.
service.d / 10-kubeadm.conf ๋ฌธ์ œ๊ฐ€ ์—ฌ์ „ํžˆ ์ง€์†๋ฉ๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/kubernetes/kubeadm/issues/639#issuecomment-369707723 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AVReEuQHJR80-8J4VLvACnGt1lTjEbYrks5taE-BgaJpZM4RSs0P
.

๋‹จ์œ„ ํŒŒ์ผ์„ ๋ณ€๊ฒฝ ํ•œ ํ›„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•˜๋ ค๋ฉด systemdctl daemon-reload ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

FWIW ์ด๊ฒƒ์€ RPM์—์„œ ๊ธฐ๋ณธ๊ฐ’์ด์ง€๋งŒ .debs์—์„œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ง€์›์— ํ˜„์žฌ systemd๋กœ ๊ธฐ๋ณธ ์„ค์ •๋˜์ง€ ์•Š์€ ๋ฐฐํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

/ ํ• ๋‹น @detiber

kubeadm v1.9.3 ๋ฐ v1.9.4์—์„œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

--cgroup-driver = systemd๋กœ kubelet ์‹œ์ž‘

$ cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
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=10.96.0.10 --cluster-domain=cluster.local"
Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt"
Environment="KUBELET_CADVISOR_ARGS=--cadvisor-port=0"
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"
Environment="KUBELET_CERTIFICATE_ARGS=--rotate-certificates=true --cert-dir=/var/lib/kubelet/pki"
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CGROUP_ARGS $KUBELET_CERTIFICATE_ARGS $KUBELET_EXTRA_ARGS

์„œ๋น„์Šค ์ƒˆ๋กœ ๊ณ ์นจ

$ systemctl daemon-reload
$ systemctl restart kubelet

Docker ์ •๋ณด ํ™•์ธ

$ docker info |grep -i cgroup
 WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
Cgroup Driver: systemd

kubelet ๋กœ๊ทธ

$ kubelet logs
error: failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd"

๋ฒ„์ „ ์ •๋ณด

$ kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.3", GitCommit:"d2835416544f298c919e2ead3be3d0864b52323b", GitTreeState:"clean", BuildDate:"2018-02-07T11:55:20Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
$ kubelet --version
Kubernetes v1.9.3
$ docker version
Client:
 Version:         1.12.6
 API version:     1.24
 Package version: docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64
 Go version:      go1.8.3
 Git commit:      3e8e77d/1.12.6
 Built:           Tue Jan 30 09:17:00 2018
 OS/Arch:         linux/amd64

Server:
 Version:         1.12.6
 API version:     1.24
 Package version: docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64
 Go version:      go1.8.3
 Git commit:      3e8e77d/1.12.6
 Built:           Tue Jan 30 09:17:00 2018
 OS/Arch:         linux/amd64
$ cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 

@FrostyLeaf kubelet ์„ ์‹คํ–‰ํ•˜๋Š” ๋ช…๋ น ์ค„์—์„œ cgroup ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ง€์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ps aux |grep kubelet ๋˜๋Š” cat /proc/<kubelet pid>/cmdline ๊ฒƒ์ด์ด๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ bart0sh ์ด๊ฒƒ์ž…๋‹ˆ๋‹ค :

$  ps aux |grep /bin/kubelet
root     13025  0.0  0.0 112672   980 pts/4    S+   01:49   0:00 grep --color=auto /bin/kubelet
root     30495  4.5  0.6 546152 76924 ?        Ssl  00:14   4:22 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --cluster-dns=10.96.0.10 --cluster-domain=cluster.local --authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt --cadvisor-port=0 --cgroup-driver=systemd --rotate-certificates=true --cert-dir=/var/lib/kubelet/pki --fail-swap-on=false

@FrostyLeaf ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋‚˜๋Š” ์ด๊ฒƒ๋„ ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋ฒ„๊ทธ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ž„์‹œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ docker ๋ฐ kubelet์„ cgroupfs ๋“œ๋ผ์ด๋ฒ„๋กœ ์ „ํ™˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@ bart0sh ์ข‹์•„. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์‹œ๋„ํ•ด ๋ณผ๊ฒŒ์š”.

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

์ปจํ…์ŠคํŠธ ํ˜ธ์ŠคํŠธ = CentOS 7.4, ๊ฒŒ์ŠคํŠธ = VirtualBox = ๋ฒ„์ „ 5.2.8 r121009 (Qt5.6.1)

[root<strong i="7">@kubernetes</strong> ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 

```bash
[ root @ kubernetes ~] # kubelet --version
Kubernetes v1.9.4

```bash
[root<strong i="14">@kubernetes</strong> ~]# docker version
Client:
 Version:         1.13.1
 API version:     1.26
 Package version: <unknown>
 Go version:      go1.8.3
 Git commit:      774336d/1.13.1
 Built:           Wed Mar  7 17:06:16 2018
 OS/Arch:         linux/amd64

Server:
 Version:         1.13.1
 API version:     1.26 (minimum version 1.12)
 Package version: <unknown>
 Go version:      go1.8.3
 Git commit:      774336d/1.13.1
 Built:           Wed Mar  7 17:06:16 2018
 OS/Arch:         linux/amd64
 Experimental:    false

```bash
[ root @ kubernetes ~] # kubeadm ๋ฒ„์ „
kubeadm ๋ฒ„์ „ : & version.Info {Major : "1", Minor : "9", GitVersion : "v1.9.4", GitCommit : "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546", GitTreeState : "clean", BuildDate : "2018-03-12T16 : 21 : 35Z ", GoVersion :"go1.9.3 ", ์ปดํŒŒ์ผ๋Ÿฌ :"gc ", ํ”Œ๋žซํผ :"linux / amd64 "}

### docker Cgroup is systemd
```bash
 [root<strong i="21">@kubernetes</strong> ~]# docker info | grep Cgroup
  WARNING: You're not using the default seccomp profile
Cgroup Driver: systemd

kubelet.service๊ฐ€ Cgroup = systemd๋กœ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

[root<strong i="25">@kubernetes</strong> ~]# grep cgroup /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd --runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice"

systemctl ๋‹ค์‹œ๋กœ๋“œ ๋ฐ kubelet ์„œ๋น„์Šค ๋‹ค์‹œ ์‹œ์ž‘

[root<strong i="29">@kubernetes</strong> ~]# systemctl daemon-reload
[root<strong i="30">@kubernetes</strong> ~]# systemctl stop kubelet.service
[root<strong i="31">@kubernetes</strong> ~]# systemctl start kubelet.service

kubelet ๋กœ๊ทธ

[root<strong i="6">@kubernetes</strong> ~]# kubelet logs
I0318 02:07:10.006151   29652 feature_gate.go:226] feature gates: &{{} map[]}
I0318 02:07:10.006310   29652 controller.go:114] kubelet config controller: starting controller
I0318 02:07:10.006315   29652 controller.go:118] kubelet config controller: validating combination of defaults and flags
I0318 02:07:10.018880   29652 server.go:182] Version: v1.9.4
I0318 02:07:10.018986   29652 feature_gate.go:226] feature gates: &{{} map[]}
I0318 02:07:10.019118   29652 plugins.go:101] No cloud provider specified.
W0318 02:07:10.019239   29652 server.go:328] standalone mode, no API client
W0318 02:07:10.068650   29652 **server.go:236] No api server defined - no events will be sent to API server.**
I0318 02:07:10.068670   29652 **server.go:428] --cgroups-per-qos enabled, but --cgroup-root was not specified.  defaulting to /**
I0318 02:07:10.069130   29652 container_manager_linux.go:242] container manager verified user specified cgroup-root exists: /
I0318 02:07:10.069306   29652 container_manager_linux.go:247] Creating Container Manager object based on Node Config: {RuntimeCgroupsName: SystemCgroupsName: KubeletCgroupsName: ContainerRuntime:docker CgroupsPerQOS:true CgroupRoot:/ CgroupDriver:cgroupfs KubeletRootDir:/var/lib/kubelet ProtectKernelDefaults:false NodeAllocatableConfig:{KubeReservedCgroupName: SystemReservedCgroupName: EnforceNodeAllocatable:map[pods:{}] KubeReserved:map[] SystemReserved:map[] HardEvictionThresholds:[{Signal:nodefs.inodesFree Operator:LessThan Value:{Quantity:<nil> Percentage:0.05} GracePeriod:0s MinReclaim:<nil>} {Signal:imagefs.available Operator:LessThan Value:{Quantity:<nil> Percentage:0.15} GracePeriod:0s MinReclaim:<nil>} {Signal:memory.available Operator:LessThan Value:{Quantity:100Mi Percentage:0} GracePeriod:0s MinReclaim:<nil>} {Signal:nodefs.available Operator:LessThan Value:{Quantity:<nil> Percentage:0.1} GracePeriod:0s MinReclaim:<nil>}]} ExperimentalQOSReserved:map[] ExperimentalCPUManagerPolicy:none ExperimentalCPUManagerReconcilePeriod:10s}
I0318 02:07:10.069404   29652 container_manager_linux.go:266] Creating device plugin manager: false
W0318 02:07:10.072836   29652 kubelet_network.go:139] Hairpin mode set to "promiscuous-bridge" but kubenet is not enabled, falling back to "hairpin-veth"
I0318 02:07:10.072860   29652 kubelet.go:576] Hairpin mode set to "hairpin-veth"
I0318 02:07:10.075139   29652 client.go:80] Connecting to docker on unix:///var/run/docker.sock
I0318 02:07:10.075156   29652 client.go:109] Start docker client with request timeout=2m0s
I0318 02:07:10.080336   29652 docker_service.go:232] Docker cri networking managed by kubernetes.io/no-op
I0318 02:07:10.090943   29652 docker_service.go:237] Docker Info: &{ID:DUEI:P7Y3:JKGP:XJDI:UFXG:NAOX:K7ID:KHCF:PCGW:46QA:TQZB:WEXF Containers:18 ContainersRunning:17 ContainersPaused:0 ContainersStopped:1 Images:11 Driver:overlay2 DriverStatus:[[Backing Filesystem xfs] [Supports d_type true] [Native Overlay Diff true]] SystemStatus:[] Plugins:{Volume:[local] Network:[bridge host macvlan null overlay] Authorization:[] Log:[]} MemoryLimit:true SwapLimit:true KernelMemory:true CPUCfsPeriod:true CPUCfsQuota:true CPUShares:true CPUSet:true IPv4Forwarding:true BridgeNfIptables:true BridgeNfIP6tables:true Debug:false NFd:89 OomKillDisable:true NGoroutines:98 SystemTime:2018-03-18T02:07:10.083543475+01:00 LoggingDriver:journald CgroupDriver:systemd NEventsListener:0 KernelVersion:3.10.0-693.21.1.el7.x86_64 OperatingSystem:CentOS Linux 7 (Core) OSType:linux Architecture:x86_64 IndexServerAddress:https://index.docker.io/v1/ RegistryConfig:0xc42027b810 NCPU:2 MemTotal:2097364992 GenericResources:[] DockerRootDir:/var/lib/docker HTTPProxy: HTTPSProxy: NoProxy: Name:kubernetes.master Labels:[] ExperimentalBuild:false ServerVersion:1.13.1 ClusterStore: ClusterAdvertise: Runtimes:map[runc:{Path:docker-runc Args:[]} docker-runc:{Path:/usr/libexec/docker/docker-runc-current Args:[]}] DefaultRuntime:docker-runc Swarm:{NodeID: NodeAddr: LocalNodeState:inactive ControlAvailable:false Error: RemoteManagers:[] Nodes:0 Managers:0 Cluster:0xc4202a8f00} LiveRestoreEnabled:false Isolation: InitBinary:docker-init ContainerdCommit:{ID: Expected:aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1} RuncCommit:{ID:N/A Expected:9df8b306d01f59d3a8029be411de015b7304dd8f} InitCommit:{ID:N/A Expected:949e6facb77383876aeff8a6944dde66b3089574} SecurityOptions:[name=seccomp,profile=/etc/docker/seccomp.json name=selinux]}
**error: failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd"**

์‹คํ–‰์ค‘์ธ kube ํ”„๋กœ์„ธ์Šค

[root<strong i="6">@kubernetes</strong> ~]# ps aux | grep -i kube
root     10182  0.4  1.2  54512 25544 ?        Ssl  mars17   1:10 kube-scheduler --leader-elect=true --kubeconfig=/etc/kubernetes/scheduler.conf --address=127.0.0.1
root     10235  1.8 12.7 438004 261948 ?       Ssl  mars17   4:44 kube-apiserver --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt --admission-control=Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,ResourceQuota --allow-privileged=true --requestheader-group-headers=X-Remote-Group --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-allowed-names=front-proxy-client --service-account-key-file=/etc/kubernetes/pki/sa.pub --client-ca-file=/etc/kubernetes/pki/ca.crt --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key --requestheader-username-headers=X-Remote-User --tls-private-key-file=/etc/kubernetes/pki/apiserver.key --insecure-port=0 --enable-bootstrap-token-auth=true --tls-cert-file=/etc/kubernetes/pki/apiserver.crt --secure-port=6443 --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --advertise-address=192.168.1.70 --service-cluster-ip-range=10.96.0.0/12 --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt --authorization-mode=Node,RBAC --etcd-servers=http://127.0.0.1:2379
root     10421  0.1  1.0  52464 22052 ?        Ssl  mars17   0:20 /usr/local/bin/kube-proxy --config=/var/lib/kube-proxy/config.conf
root     12199  1.7  8.5 326552 174108 ?       Ssl  mars17   4:11 kube-controller-manager --address=127.0.0.1 --leader-elect=true --controllers=*,bootstrapsigner,tokencleaner --cluster-signing-key-file=/etc/kubernetes/pki/ca.key --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt --use-service-account-credentials=true --kubeconfig=/etc/kubernetes/controller-manager.conf --root-ca-file=/etc/kubernetes/pki/ca.crt --service-account-private-key-file=/etc/kubernetes/pki/sa.key
root     22928  0.0  1.0 279884 20752 ?        Sl   01:10   0:00 /home/weave/weaver --port=6783 --datapath=datapath --name=fe:9b:da:25:e2:b2 --host-root=/host --http-addr=127.0.0.1:6784 --status-addr=0.0.0.0:6782 --docker-api= --no-dns --db-prefix=/weavedb/weave-net --ipalloc-range=10.32.0.0/12 --nickname=kubernetes.master --ipalloc-init consensus=1 --conn-limit=30 --expect-npc 192.168.1.70
root     23308  0.0  0.7  38936 15340 ?        Ssl  01:10   0:01 /kube-dns --domain=cluster.local. --dns-port=10053 --config-dir=/kube-dns-config --v=2
65534    23443  0.0  0.8  37120 18028 ?        Ssl  01:10   0:03 /sidecar --v=2 --logtostderr --probe=kubedns,127.0.0.1:10053,kubernetes.default.svc.cluster.local,5,SRV --probe=dnsmasq,127.0.0.1:53,kubernetes.default.svc.cluster.local,5,SRV
root     29547  1.6  2.9 819012 61196 ?        Ssl  02:07   0:22 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --cluster-dns=10.96.0.10 --cluster-domain=cluster.local --authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt --cadvisor-port=0 --cgroup-driver=systemd --runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice --rotate-certificates=true --cert-dir=/var/lib/kubelet/pki

v1.9.5๊ฐ€์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. awesome! @ bart0sh

@FrostyLeaf ๋‚˜๋Š” ์—ฌ์ „ํžˆ 1.9.5๋กœ ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ rpm -qa | grep kube
kubeadm-1.9.5-0.x86_64
kubelet-1.9.5-0.x86_64
kubernetes-cni-0.6.0-0.x86_64
kubectl-1.9.5-0.x86_64

$ docker ์ •๋ณด 2> / dev / null | grep -i cgroup
Cgroup ๋“œ๋ผ์ด๋ฒ„ : systemd

$ ps aux | grep cgroup-driver
๋ฃจํŠธ 29078 1.9 0.1 1222632 91824? SSL 13:45 0:04 / usr / bin / kubelet --bootstrap-kubeconfig = / etc / kubernetes / bootstrap-kubelet.conf --kubeconfig = / etc / kubernetes / kubelet.conf --pod-manifest-path = / etc / kubernetes / manifests --allow-privileged = true --network-plugin = cni --cni-conf-dir = / etc / cni / net.d --cni-bin-dir = / opt / cni / bin- -cluster-DNS = 10.96.0.10 --cluster ๋„๋ฉ”์ธ = cluster.local --authorization ๋ชจ๋“œ =์œผ๋กœ webhook --client-CA ํŒŒ์ผ = / ๊ธฐํƒ€ /๋Š” Kubernetes / PKI / ca.crt --cadvisor ํฌํŠธ = 0 - -cgroup-driver = systemd --rotate-certificates = true --cert-dir = / var / lib / kubelet / pki

I0321 13 : 50 : 29.901008 30817 container_manager_linux.go : 247] ๋…ธ๋“œ ๊ตฌ์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ์ž ๊ฐœ์ฒด ์ƒ์„ฑ : {RuntimeCgroupsName : SystemCgroupsName : KubeletCgroupsName : Contain erRuntime : docker Cgro upsPerQOS : true CgroupRoot : / Cgr oupDriver : cgroupfs KubeletRootDir : / var / lib / kubelet ProtectKerne lDefaults : false NodeAllocatableConfig : {KubeReservedCgroupName : SystemReservedCgroupName : EnforceNodeAl locatable : map [pods : {}] Kub eReserved : map [] Syste mReserved : map [] HardEvictionThresholds : [{ Signal : memory.available ์—ฐ์‚ฐ์ž : LessThan ์ˆ˜๋Ÿ‰ : 100Mi P : 0 } Gr acePeriod : 0s MinReclaim :} { ์‹ ํ˜ธ : nodefs.available ์—ฐ์‚ฐ์ž :๋ณด๋‹ค ์ž‘์Œ ๊ฐ’ : {์ˆ˜๋Ÿ‰ :P ercentage : 0.1 } Gr acePeriod : 0s MinReclaim :} { Signal : nodefs.inodesFree ์—ฐ์‚ฐ์ž : LessThan ๊ฐ’ : {์ˆ˜๋Ÿ‰ :P ercentage : 0.05 } Gr acePeriod : 0s MinReclaim :} { ์‹ ํ˜ธ : imagefs.available ์—ฐ์‚ฐ์ž :๋ณด๋‹ค ์ž‘์Œ ๊ฐ’ : {์ˆ˜๋Ÿ‰ :P ercentage : 0.15 } Gr acePeriod : 0s MinReclaim :}]} ExperimentalQO SReserved : map [] ExperimentalCPUMana gerPolicy : none ExperimentalCPUManagerReconc ilePeriod : 10s }
์˜ค๋ฅ˜ : Kubelet ์‹คํ–‰ ์‹คํŒจ : kubelet ์ƒ์„ฑ ์‹คํŒจ : ์ž˜๋ชป๋œ ๊ตฌ์„ฑ : kubelet cgroup ๋“œ๋ผ์ด๋ฒ„ : "cgroupfs"๊ฐ€ docker cgroup ๋“œ๋ผ์ด๋ฒ„์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค : "systemd"

์—ฌ์ „ํžˆ systemd cgroup ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š”์ด ๋ฌธ์ œ๋ฅผ ์ข…๊ฒฐ ํ•  ๊ฒƒ์„ ์ œ์•ˆํ•œ๋‹ค

์—ฌ๊ธฐ์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ๋ณด๊ณ ์„œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ์ด์œ ๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. systemd ๋“œ๋กญ ์ธ์„ ํŽธ์ง‘ ํ•œ ํ›„ 'systemctl daemon-reload'๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค. Eventhough -cgroup-driver = systemd๊ฐ€ /etc/systemd/system/kubelet.service.d/10-kubeadm.conf์— ์ถ”๊ฐ€๋˜์—ˆ์ง€๋งŒ ์•„๋ฌด๋Ÿฐ ํšจ๊ณผ๊ฐ€ ์—†์—ˆ์œผ๋ฉฐ ๊ธฐ๋ณธ๊ฐ’ (๋˜๋Š” ์ด์ „์— --cgroup-driver๋กœ ์ง€์ •๋จ) ๋“œ๋ผ์ด๋ฒ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ต์ˆ™ํ•œ.

  2. kubelet ๋กœ๊ทธ๋ฅผ ๋ณด๋ ค๋ฉด 'kubelet logs'๋ช…๋ น์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค. 'logs'ํ•˜์œ„ ๋ช…๋ น์€ kubelet์— ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ 'kubelet logs'์™€ 'kubelet'์€ ๋™์ผํ•œ ๋ช…๋ น์ž…๋‹ˆ๋‹ค. 'kubelet logs'๋Š” ๊ธฐ๋ณธ cgroup ๋“œ๋ผ์ด๋ฒ„ 'cgroupfs'๋กœ kubelet์„ ์‹คํ–‰ํ•˜๊ณ  kubelet์€ kubelet๊ณผ docker ๋“œ๋ผ์ด๋ฒ„ ๊ฐ„์˜ ๋ถˆ์ผ์น˜์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ๋ฅผ ๋ณด๋ ค๋ฉด 'journalctl -ux kubelet'์„ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

kubelet 1.8.0, 1.9.0, 1.9.3 ๋ฐ 1.9.5์—์„œ --cgroup-driver = systemd ์˜ต์…˜์„ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์— "cgroupfs๊ฐ€ docker cgroup ๋“œ๋ผ์ด๋ฒ„์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค : systemd"๋ผ๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@timothysc ๋‚ด ๋งˆ์ง€๋ง‰ ๋Œ“๊ธ€์— ๋Œ€ํ•ด ์ด์˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ kubelet ๋ฐ / ๋˜๋Š” systemd์— ๋Œ€ํ•œ ์ง€์‹ ๋ถ€์กฑ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋‚ด ๊ด€์ ์—์„œ ํ•  ์ˆ˜์žˆ๋Š” ๋‘ ๊ฐ€์ง€ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • docker์™€ kubelet cgroup ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด "kubeadm init"์— ๋Œ€ํ•œ ํ”„๋ฆฌ ํ”Œ๋ผ์ดํŠธ ๊ฒ€์‚ฌ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ช…๋ น ์ค„์—์„œ ์•Œ ์ˆ˜์—†๋Š” ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ฐพ์œผ๋ฉด kubelet์„ ์‹คํŒจํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "kubelet logs"๋Š” "unrecognised parameter : logs"๋ผ๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ์‹คํŒจํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ๋“ค์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด์จŒ๋“ ์ด ๋ฌธ์ œ๋Š” ์ข…๊ฒฐ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

v1.9.5 ๋•๋ถ„์—

kubelet๊ณผ docker ๊ฐ„์˜ cgroup ๋“œ๋ผ์ด๋ฒ„ ์ผ๊ด€์„ฑ์„ ํ™•์ธํ•˜๋Š” init์— ๋Œ€ํ•ด @ bart0sh ์™€ ๋™์˜ํ•˜์‹ญ์‹œ์˜ค.
์•„๋งˆ๋„`kublet logs {๋Š” journactl -u kubelet.service๋ฅผ ๊ฐ€๋ฆฌ์ผœ ์•ผํ•ฉ๋‹ˆ๋‹ค.

๋‚ด 2ct.

์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
Centos 7
kubeadm ๋ฒ„์ „ : 1.9.6
๋„์ปค ๋ฒ„์ „ : 1.13.1 API ๋ฒ„์ „ : 1.26
๋‚ด๊ฐ€ ๋‹ฌ๋ ธ์„ ๋•Œ : docker info | grep -i cgroup ,
์•Œ์•˜์–ด:
WARNING: You're not using the default seccomp profile Cgroup Driver: systemd

cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf ํ•˜๋ฉด
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd" ์„ค์ •์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” systemctl daemon-reload * ๋ฐ * systemctl restart kubelet ์„ ์‹คํ–‰ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ๊ตฌ์„ฑ : kubelet cgroup ๋“œ๋ผ์ด๋ฒ„ : "cgroupfs"๊ฐ€ docker cgroup ๋“œ๋ผ์ด๋ฒ„์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค : "systemd"

๋˜ ๋‹ค๋ฅธ ์ด์ƒํ•œ ์ ์€ : ๋‚ด๊ฐ€ sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf ์‹คํ–‰ํ–ˆ์„ ๋•Œ
--cgroup-drive ๊ฐ€ ๋ณด์•˜์Šต๋‹ˆ๋‹ค .
๊ทธ๋Ÿฌ๋‚˜ kubelet status ๋‹ค์‹œ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ๋˜‘๊ฐ™์€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ๊ตฌ์„ฑ : kubelet cgroup ๋“œ๋ผ์ด๋ฒ„ : "cgroupfs"๊ฐ€ docker cgroup ๋“œ๋ผ์ด๋ฒ„์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค : "systemd"

๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์—†๋‹ค.
์œ„์—์„œ ์–ธ๊ธ‰ ํ•œ ๋ฒ„์ „์œผ๋กœ ์‹œ๋„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋“ ์ง€ ์ด์ „ ๋ฒ„์ „์˜ kubernetes๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@moqichenle ์ด์ƒ

systemctl daemon-reload
systemctl restart kubelet
docker info 2>/dev/null |grep -i group
ps aux |grep group-driver
journalctl -u kubelet.service | grep "is different from docker cgroup driver"

๋‚ด ์‹œ์Šคํ…œ์— ํ‘œ์‹œ๋˜๋Š” ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

# systemctl daemon-reload
# systemctl restart kubelet
# docker info 2>/dev/null |grep -i group
Cgroup Driver: systemd
# ps aux |grep group-driver
root     25062  5.7  0.1 983760 78888 ?        Ssl  15:26   0:00 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --cluster-dns=NN.NN.NN.NN --cluster-domain=cluster.local --authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt --cadvisor-port=0 --cgroup-driver=systemd --rotate-certificates=true --cert-dir=/var/lib/kubelet/pki
root     25520  0.0  0.0   9288  1560 pts/0    R+   15:26   0:00 grep --color=auto group-driver
# journalctl -u kubelet.service | grep "is different from docker cgroup driver"
#

@ bart0sh ์•ˆ๋…•ํ•˜์„ธ์š”, ๋„์™€ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ๊ฐ€์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค (kubeadm init๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „) :
[root<strong i="8">@localhost</strong> bin]# docker info 2>/dev/null |grep -i group Cgroup Driver: systemd [root<strong i="9">@localhost</strong> bin]# ps aux |grep group-driver root 13472 0.0 0.1 12476 984 pts/0 R+ 13:23 0:00 grep --color=auto group-driver

kubeadm init ๋ช…๋ น์„ ์ž…๋ ฅ ํ•œ ํ›„,
์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ๊ฐ€์ง„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
[vagrant<strong i="14">@localhost</strong> ~]$ ps aux |grep group-driver root 13606 5.1 4.5 605240 22992 ? Ssl 13:25 0:03 /usr/bin/kubelet --kubeconfig=/etc/kubernetes/kubelet.conf --require-kubeconfig=true --pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --cluster-dns=10.96.0.10 --cluster-domain=cluster.local --cgroup-driver=systemd --hostname-override=default vagrant 13924 0.0 0.1 12476 984 pts/1 R+ 13:26 0:00 grep --color=auto group-driver

๊ทธ๋Ÿฌ๋‚˜ kubelet์ด ์ •์ƒ์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ kubelet์ด ์‹คํ–‰ ์ค‘์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— kubeadm init๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

@moqichenle kubeadm init ์‹คํ–‰ ํ•˜๊ธฐ ์ „์— systemctl daemon-reload ๋ฐ systemctl restart kubelet ์‹คํ–‰ ํ–ˆ์Šต๋‹ˆ๊นŒ?

journalctl -u kubelet.service ํ›„์— kubeadm init ํ•˜๊ณ  ์—ฌ๊ธฐ์— ์ถœ๋ ฅ์„ ํ‘œ์‹œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ, ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ ์ „์— ๋‘ ๋ช…๋ น์„ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด์ƒํ•œ ์  : journalctl -u kubelet.service | grep "is different from docker cgroup driver" ์‹คํ–‰ํ•  ๋•Œ ์ถœ๋ ฅ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
kubelet status ์‹คํ–‰ํ–ˆ์„ ๋•Œ๋งŒ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

@moqichenle kubelet status ๋ช…๋ น์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ธฐ๋ณธ ๋งค๊ฐœ ๋ณ€์ˆ˜ (๋ฐ ๊ธฐ๋ณธ cgroup ๋“œ๋ผ์ด๋ฒ„)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ kubelet์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ kubelet logs ์— ๊ด€ํ•œ ๋‚ด ๋ฉ”์‹œ์ง€๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

journalctl -u kubelet.service ์˜ ์ถœ๋ ฅ์— ์˜์‹ฌ์Šค๋Ÿฌ์šด (์˜ค๋ฅ˜, ๊ฒฝ๊ณ )์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์•„, ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. :)
ํ  .. ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
Mar 26 13:39:40 localhost.localdomain kubelet[13606]: E0326 13:39:34.198202 13606 kuberuntime_image.go:140] ListImages failed: rpc error: code = DeadlineExceeded desc = context deadline exceeded Mar 26 13:39:45 localhost.localdomain kubelet[13606]: E0326 13:39:44.824222 13606 kubelet.go:1259] Container garbage collection failed: rpc error: code = DeadlineExceeded desc = context deadline exceeded Mar 26 13:39:47 localhost.localdomain kubelet[13606]: W0326 13:39:44.749819 13606 image_gc_manager.go:173] [imageGCManager] Failed to monitor images: rpc error: code = DeadlineExceeded desc = context deadline exceeded Mar 26 13:39:49 localhost.localdomain kubelet[13606]: E0326 13:39:49.486990 13606 kubelet.go:1281] Image garbage collection failed once. Stats initialization may not have completed yet: failed to get image stats: rpc error: code = DeadlineExceeded desc = context deadline exceeded Mar 26 13:42:03 localhost.localdomain kubelet[13606]: E0326 13:42:03.934312 13606 remote_runtime.go:169] ListPodSandbox with filter nil from runtime service failed: rpc error: code = DeadlineExceeded desc = context deadline exceeded Mar 26 13:42:03 localhost.localdomain kubelet[13606]: E0326 13:42:03.934359 13606 kuberuntime_sandbox.go:192] ListPodSandbox failed: rpc error: code = DeadlineExceeded desc = context deadline exceeded Mar 26 13:42:03 localhost.localdomain kubelet[13606]: E0326 13:42:03.934374 13606 generic.go:197] GenericPLEG: Unable to retrieve pods: rpc error: code = DeadlineExceeded desc = context deadline exceeded Mar 26 13:42:03 localhost.localdomain kubelet[13606]: E0326 13:42:03.936761 13606 remote_image.go:67] ListImages with filter nil from image service failed: rpc error: code = DeadlineExceeded desc = context deadline exceeded Mar 26 13:42:03 localhost.localdomain kubelet[13606]: E0326 13:42:03.936788 13606 kuberuntime_image.go:106] ListImages failed: rpc error: code = DeadlineExceeded desc = context deadline exceeded Mar 26 13:42:03 localhost.localdomain kubelet[13606]: W0326 13:42:03.936795 13606 image_gc_manager.go:184] [imageGCManager] Failed to update image list: rpc error: code = DeadlineExceeded desc = context deadline exceeded Mar 26 13:42:03 localhost.localdomain kubelet[13606]: E0326 13:42:03.937002 13606 remote_runtime.go:69] Version from runtime service failed: rpc error: code = DeadlineExceeded desc = context deadline exceeded Mar 26 13:42:03 localhost.localdomain kubelet[13606]: E0326 13:42:03.937020 13606 kuberuntime_manager.go:245] Get remote runtime version failed: rpc error: code = DeadlineExceeded desc = context deadline exceeded

kubeadm init๋ฅผ ์‹คํ–‰ํ•  ๋•Œ cgroup ๋“œ๋ผ์ด๋ธŒ ์„ค์ •์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ :
์ด๊ฒƒ์€ ๋ณด์—ฌ์ค€๋‹ค:
`[etcd] ๋กœ์ปฌ etcd ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ •์  ํฌ๋“œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ "/etc/kubernetes/manifests/etcd.yaml"์— ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
[init] kubelet์ด "/ etc / kubernetes / manifests"๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ •์  ํฌ๋“œ๋กœ ์ œ์–ด ํ”Œ๋ ˆ์ธ์„ ๋ถ€ํŒ…ํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.
[init] ์ œ์–ด ํ”Œ๋ ˆ์ธ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์™€์•ผํ•˜๋Š” ๊ฒฝ์šฐ 1 ๋ถ„ ์ด์ƒ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
[kubelet-check] kubelet์ด ์‹คํ–‰๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ •์ƒ์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
cgroup ๋“œ๋ผ์ด๋ธŒ ์„ค์ •์ด ๋™์ผํ•˜๋ฉด
์ œ์–ดํŒ์„ ๋‹น๊ธฐ๋Š” ๋‹จ๊ณ„์—์„œ ๋ฉˆ์ถ”๊ณ  kubelet์ด ๋น„์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@moqichenle ๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ๋„์ปค ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ฏฟ๋Š” ์ด๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ "์ปจํ…์ŠคํŠธ ๊ธฐํ•œ ์ดˆ๊ณผ"๋ฅผ ๊ฒ€์ƒ‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ bart0sh ๋„ค, ๋” ์ด์ƒ์ด ๋ฌธ์ œ์™€ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค : D

์ด PR์€ 'kubelet logs', 'kubelet status'๋ฐ ๊ธฐํƒ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” kubelet ๋ช…๋ น ์‹คํ–‰์œผ๋กœ ์ธํ•œ ํ˜ผ๋ž€์„ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค. # 61833

์ž˜๋ชป๋œ ๋ช…๋ น ์ค„๋กœ ์‹คํ–‰๋˜๋ฉด kubelet์ด ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ข…๋ฃŒํ•˜๋„๋กํ•ฉ๋‹ˆ๋‹ค.

๊ฒ€ํ† ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, 1.10์—์„œ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„๊ทธ์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด v1.11์—์„œ ์ˆ˜์ • ๋  ์˜ˆ์ •์ž…๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ๋ฒ„๊ทธ์ด๋ฉฐ v1.11์—์„œ ์ˆ˜์ • ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

IMO ์ด๊ฒƒ์€ ๋ฒ„๊ทธ๊ฐ€ ์•„๋‹ˆ๋ผ docker ๋ฐ kubelet ๊ฐ„์˜ ๊ตฌ์„ฑ ๋ถˆ์ผ์น˜์ž…๋‹ˆ๋‹ค.

kubeadm init ์‹คํ–‰ํ•˜๊ธฐ ์ „์— cgroup ๋“œ๋ผ์ด๋ฒ„์— ๋Œ€ํ•œ

@dixudx k8s ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์›น ์‚ฌ์ดํŠธ https://kubernetes.io/docs/setup/independent/install-kubeadm/ ์—์„œ ์„ค์น˜ ๊ฐ€์ด๋“œ๋ฅผ ์‹œ๋„ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋‹จ๊ณ„๋Š”์ด ๋ฌธ์ œ๋กœ ๋ณด๋ฅ˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๋‚ด ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด์ž…๋‹ˆ๋‹ค. ;

OS :

CentOS Linux release 7.4.1708 (Core)

Docker :
<br i="12"/>
  Server Version:  1.13.1<br i="13"/>
 API version:     1.26 (minimum version 1.12)<br i="14"/>
 Package version: <unknown i="15"><br i="16"/>
 Go version:      go1.8.3<br i="17"/>
 Git commit:      774336d/1.13.1<br i="18"/>
 Built:           Wed Mar  7 17:06:16 2018<br i="19"/>
 OS/Arch:         linux/amd64<br i="20"/>
 Experimental:    false</unknown>

K8S :
kubeadm.x86_64                     1.10.1-0<br i="24"/>
kubectl.x86_64                     1.10.1-0<br i="25"/>
kubelet.x86_64                     1.10.1-0<br i="26"/>
kubernetes-cni.x86_64              0.6.0-0                          

docker์™€ kubelet ์‚ฌ์ด์˜ cgroup

docker info | grep -i cgroup<br i="30"/>
  WARNING: You're not using the default seccomp profile<br i="31"/>
Cgroup Driver: systemd

cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf | grep -i cgroup<br i="35"/> Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"

systemd์™€ ๋™์ผํ•œ cgroup์ด๋ฏ€๋กœ kubelet์˜ cgroup์„ ์ˆ˜๋™์œผ๋กœ ์กฐ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  kubelet์„ ์‹คํ–‰ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋กœ ์ธํ•ด ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

[root@K8S-Master /]# kubelet logs
I0424 10:41:29.240854   19245 feature_gate.go:226] feature gates: &{{} map[]}
W0424 10:41:29.247770   19245 cni.go:171] Unable to update cni config: No networks found in /etc/cni/net.d
W0424 10:41:29.253069   19245 hostport_manager.go:68] The binary conntrack is not installed, this can cause failures in network connection cleanup.
I0424 10:41:29.253111   19245 server.go:376] Version: v1.10.1
I0424 10:41:29.253175   19245 feature_gate.go:226] feature gates: &{{} map[]}
I0424 10:41:29.253290   19245 plugins.go:89] No cloud provider specified.
W0424 10:41:29.253327   19245 server.go:517] standalone mode, no API client
W0424 10:41:29.283851   19245 server.go:433] No api server defined - no events will be sent to API server.
I0424 10:41:29.283867   19245 server.go:613] --cgroups-per-qos enabled, but --cgroup-root was not specified.  defaulting to /
I0424 10:41:29.284091   19245 container_manager_linux.go:242] container manager verified user specified cgroup-root exists: /
I0424 10:41:29.284101   19245 container_manager_linux.go:247] Creating Container Manager object based on Node Config: {RuntimeCgroupsName: SystemCgroupsName: KubeletCgroupsName: ContainerRuntime:docker CgroupsPerQOS:true CgroupRoot:/ CgroupDriver:cgroupfs KubeletRootDir:/var/lib/kubelet ProtectKernelDefaults:false NodeAllocatableConfig:{KubeReservedCgroupName: SystemReservedCgroupName: EnforceNodeAllocatable:map[pods:{}] KubeReserved:map[] SystemReserved:map[] HardEvictionThresholds:[{Signal:memory.available Operator:LessThan Value:{Quantity:100Mi Percentage:0} GracePeriod:0s MinReclaim:<nil i="39">} {Signal:nodefs.available Operator:LessThan Value:{Quantity:<nil i="40"> Percentage:0.1} GracePeriod:0s MinReclaim:<nil i="41">} {Signal:nodefs.inodesFree Operator:LessThan Value:{Quantity:<nil i="42"> Percentage:0.05} GracePeriod:0s MinReclaim:<nil i="43">} {Signal:imagefs.available Operator:LessThan Value:{Quantity:<nil i="44"> Percentage:0.15} GracePeriod:0s MinReclaim:<nil i="45">}]} ExperimentalQOSReserved:map[] ExperimentalCPUManagerPolicy:none ExperimentalCPUManagerReconcilePeriod:10s ExperimentalPodPidsLimit:-1 EnforceCPULimits:true}
I0424 10:41:29.284195   19245 container_manager_linux.go:266] Creating device plugin manager: true
I0424 10:41:29.284242   19245 state_mem.go:36] [cpumanager] initializing new in-memory state store
I0424 10:41:29.284292   19245 state_mem.go:87] [cpumanager] updated default cpuset: ""
I0424 10:41:29.284326   19245 state_mem.go:95] [cpumanager] updated cpuset assignments: "map[]"
W0424 10:41:29.286890   19245 kubelet_network.go:139] Hairpin mode set to "promiscuous-bridge" but kubenet is not enabled, falling back to "hairpin-veth"
I0424 10:41:29.286912   19245 kubelet.go:556] Hairpin mode set to "hairpin-veth"
I0424 10:41:29.288233   19245 client.go:75] Connecting to docker on unix:///var/run/docker.sock
I0424 10:41:29.288268   19245 client.go:104] Start docker client with request timeout=2m0s
W0424 10:41:29.289762   19245 cni.go:171] Unable to update cni config: No networks found in /etc/cni/net.d
W0424 10:41:29.292669   19245 hostport_manager.go:68] The binary conntrack is not installed, this can cause failures in network connection cleanup.
I0424 10:41:29.293904   19245 docker_service.go:244] Docker cri networking managed by kubernetes.io/no-op
I0424 10:41:29.302849   19245 docker_service.go:249] Docker Info: &amp;{ID:UJ6K:K2AW:HKQY:5MRL:KROX:FTJV:3TKY:GHGI:L7GV:UQFP:AU2Q:AKC6 Containers:0 ContainersRunning:0 ContainersPaused:0 ContainersStopped:0 Images:0 Driver:overlay2 DriverStatus:[[Backing Filesystem xfs] [Supports d_type true] [Native Overlay Diff true]] SystemStatus:[] Plugins:{Volume:[local] Network:[bridge host macvlan null overlay] Authorization:[] Log:[]} MemoryLimit:true SwapLimit:true KernelMemory:true CPUCfsPeriod:true CPUCfsQuota:true CPUShares:true CPUSet:true IPv4Forwarding:true BridgeNfIptables:true BridgeNfIP6tables:true Debug:false NFd:16 OomKillDisable:true NGoroutines:26 SystemTime:2018-04-24T10:41:29.295491971+08:00 LoggingDriver:journald CgroupDriver:systemd NEventsListener:0 KernelVersion:3.10.0-693.5.2.el7.x86_64 OperatingSystem:CentOS Linux 7 (Core) OSType:linux Architecture:x86_64 IndexServerAddress:https://index.docker.io/v1/ RegistryConfig:0xc4203dcbd0 NCPU:4 MemTotal:8371650560 GenericResources:[] DockerRootDir:/var/lib/docker HTTPProxy: HTTPSProxy: NoProxy: Name:K8S-Master Labels:[] ExperimentalBuild:false ServerVersion:1.13.1 ClusterStore: ClusterAdvertise: Runtimes:map[docker-runc:{Path:/usr/libexec/docker/docker-runc-current Args:[]} runc:{Path:docker-runc Args:[]}] DefaultRuntime:docker-runc Swarm:{NodeID: NodeAddr: LocalNodeState:inactive ControlAvailable:false Error: RemoteManagers:[] Nodes:0 Managers:0 Cluster:0xc4201317c0} LiveRestoreEnabled:false Isolation: InitBinary:docker-init ContainerdCommit:{ID: Expected:aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1} RuncCommit:{ID:N/A Expected:9df8b306d01f59d3a8029be411de015b7304dd8f} InitCommit:{ID:N/A Expected:949e6facb77383876aeff8a6944dde66b3089574} SecurityOptions:[name=seccomp,profile=/etc/docker/seccomp.json name=selinux]}
F0424 10:41:29.302989   19245 server.go:233] failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: <font i="46">"cgroupfs"</font> is different from docker cgroup driver: "systemd"</nil></nil></nil></nil></nil></nil></nil>

๋กœ๊ทธ์—์„œ ๋ณด๋Š” ์ฃผ์š” ์ •๋ณด๋Š” CgroupDriver ์—ฌ์ „ํžˆ cgroupfs์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด cgroup ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚จ ์ด์œ ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ์ด ๊ธฐ๋ณธ๊ฐ’์„ ์กฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด์‹ญ๋‹ˆ๊นŒ? ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ๋ช…ํ™•ํžˆํ•˜๋Š” ๊ฒƒ์„ ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@wshandao kubelet logs ์‚ฌ์šฉ์„ ์ค‘์ง€ํ•˜์‹ญ์‹œ์˜ค. ์ด๋Š” ๋กœ๊ทธ๋ฅผ ๋ณด๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋กœ๊ทธ๋ฅผ ๋ณด๋Š” ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์€ journalctl -f -u kubelet ์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @dixudx , ๋‚ด ์‹ค์ˆ˜์ด๋ฉฐ ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ๋‚ด ์„ค์น˜๋ฅผ ๋ณด๋ฅ˜ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‘ ๋ฒˆ์งธ ์š”์ฒญ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.
๋ฌธ์„œ์—๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ผ์น˜ํ•˜๋Š” cgroups ๋“œ๋ผ์ด๋ฒ„๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋‚ด์šฉ์ด ์ด๋ฏธ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ kubeadm๊ณผ ๋ฌด๊ด€ํ•˜๋ฉฐ kubelet ๋Œ€ ๋„์ปค ๋ฌธ์ œ์— ๋” ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

์œ ์‚ฌํ•œ ๋ณด๊ณ ์„œ :
https://github.com/kubernetes/kubernetes/issues/59794
https://github.com/openshift/origin/issues/18776
https://github.com/kubernetes/kubernetes/issues/43805

๋ฟก ๋นต๋€จ

FWIW ์ด๊ฒƒ์€ RPM์—์„œ ๊ธฐ๋ณธ๊ฐ’์ด์ง€๋งŒ .debs์—์„œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ง€์›์— ํ˜„์žฌ systemd๋กœ ๊ธฐ๋ณธ ์„ค์ •๋˜์ง€ ์•Š์€ ๋ฐฐํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ด๊ฒƒ์„ 3 ๊ฐœ์˜ ๋‹ค๋ฅธ ๋ฒ ์–ด ๋ณธ Ubuntu 16.04.2, 16.04.0, 17.04์—์„œ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ๋„์ปค ๋“œ๋ผ์ด๋ฒ„๊ฐ€ kublet์˜ ๊ธฐ๋ณธ ์ธ์ˆ˜ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š” cgroupfs ์ธ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

docker๊ฐ€ systemd ์—์„œ 16.04.3 systemd ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์›๋ž˜ ๊ฒŒ์‹œ๋ฌผ์˜ ์‚ฌ์šฉ์ž ๋ณด๊ณ ์„œ์™€ ๋‹ฌ๋ฆฌ Docker ๋ฒ„์ „๊ฐ„์— ๋ณ€๊ฒฝ๋˜๋Š” docker ๊ตฌ์„ฑ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

๋‚ด ํ…Œ์ŠคํŠธ๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ debs์— Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd" ๋ฅผ ์ถ”๊ฐ€ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ ์–ด๋„ ์ด๋Ÿฌํ•œ Ubuntu ๋ฒ„์ „์—์„œ๋Š” ์ž˜๋ชป๋˜์—ˆ์„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

kublet์ด ์นœ์ˆ™ํ•œ UX๋ฅผ ์œ„ํ•ดํ•ด์•ผ โ€‹โ€‹ํ•  ์ผ์€ ํ•ญ์ƒ ๋„์ปค ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ž๋™์œผ๋กœ ์ผ์น˜์‹œํ‚ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ neolit123 ๋™์˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฌธ์„œ ๋ฌธ์ œ JIC๋ฅผ ์—ด์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์„ ๋‹ซ๊ณ  ๋ฌธ์„œ๋ฅผ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Ubuntu 16.04, Kube ๋ฒ„์ „ v1.10.4์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. Docker ๋ฒ„์ „ 1.13.1
Docker๋Š” native.cgroupdriver = systemd๋กœ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ์€ ๋‚ด๊ฐ€ /etc/docker/daemon.json์— ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

{
"exec-opts": ["native.cgroupdriver=systemd"]
}

/etc/systemd/system/kubelet.service.d/10-kubeadm.conf์—์„œ ๊ตฌ์„ฑ์„ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ƒˆ ์ค„ ์ถ”๊ฐ€ : Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"
ExecStart์— $KUBELET_CGROUP_ARGS ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ systemctl daemon-reload ๋ฐ ์„œ๋น„์Šค kubelet restart๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
Kubelet์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”.

๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฌธ์„œ๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ์žˆ์ง€๋งŒ 1.11 ์ด์ƒ์—์„œ๋„ docker ์šฉ cgroup ๋“œ๋ผ์ด๋ฒ„๊ฐ€ kubeadm์— ์˜ํ•ด ์ž๋™์œผ๋กœ ์ผ์น˜๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋ฒ„๊ทธ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋„์ปค ๋ฒ„์ „๊ณผ kubeadm ํŒŒ์ผ์„ ํ™•์ธํ–ˆ์ง€๋งŒ ๋ฌผ๋ก  kubeadm ์Šคํฌ๋ฆฝํŠธ๋„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๋ถˆ์ผ์น˜ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€์ฃผ์˜ ๊นŠ๊ฒŒ ์ฝ์€ ๊ฒฝ์šฐ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ • ํ•œ ํ›„ ์œ„์˜ ์ผ๋ถ€์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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