๋ฒ๊ทธ ๋ณด๊ณ ์
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
) :
ํ๊ฒฝ :
kubectl version
) :uname -a
) :์ค๋ฅ : 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 ์ข์. ๊ฐ์ฌํฉ๋๋ค. ์๋ํด ๋ณผ๊ฒ์.
์ฌ๊ธฐ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
[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
[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"
[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
[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"**
[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 :
์ค๋ฅ : Kubelet ์คํ ์คํจ : kubelet ์์ฑ ์คํจ : ์๋ชป๋ ๊ตฌ์ฑ : kubelet cgroup ๋๋ผ์ด๋ฒ : "cgroupfs"๊ฐ docker cgroup ๋๋ผ์ด๋ฒ์ ๋ค๋ฆ
๋๋ค : "systemd"
์ฌ์ ํ systemd cgroup ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๊น?
๋๋์ด ๋ฌธ์ ๋ฅผ ์ข ๊ฒฐ ํ ๊ฒ์ ์ ์ํ๋ค
์ฌ๊ธฐ์์ ๋๋ถ๋ถ์ ๋ณด๊ณ ์๊ฐ ๋ฐ์ํ๋ ๋ ๊ฐ์ง ์ด์ ๋ฅผ ํ์ธํ์ต๋๋ค.
systemd ๋๋กญ ์ธ์ ํธ์ง ํ ํ 'systemctl daemon-reload'๋ฅผ ์คํํ๋ ๊ฒ์ ์์์ต๋๋ค. Eventhough -cgroup-driver = systemd๊ฐ /etc/systemd/system/kubelet.service.d/10-kubeadm.conf์ ์ถ๊ฐ๋์์ง๋ง ์๋ฌด๋ฐ ํจ๊ณผ๊ฐ ์์์ผ๋ฉฐ ๊ธฐ๋ณธ๊ฐ (๋๋ ์ด์ ์ --cgroup-driver๋ก ์ง์ ๋จ) ๋๋ผ์ด๋ฒ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ต์ํ.
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์ ๋ํ ์ง์ ๋ถ์กฑ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๋ฒ๊ทธ๊ฐ ์๋๋๋ค.
๋ด ๊ด์ ์์ ํ ์์๋ ๋ ๊ฐ์ง ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฐ๋ฆฌ๋ ๊ทธ๊ฒ๋ค์ ๋ํด ๋ณ๋์ ๋ฌธ์ ๋ฅผ ๋ง๋๋ ๊ฒ์ ๊ณ ๋ คํ ์ ์์ต๋๋ค.
์ด์จ๋ ์ด ๋ฌธ์ ๋ ์ข ๊ฒฐ ๋ ์ ์์ต๋๋ค.
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)
<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>
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: &{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 ์คํฌ๋ฆฝํธ๋ ํ์ธํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ๋ถ์ผ์น ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ป์ต๋๋ค. ๋๊ตฐ๊ฐ์ฃผ์ ๊น๊ฒ ์ฝ์ ๊ฒฝ์ฐ ๋งค๊ฐ ๋ณ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ ํ ์์ ์ผ๋ถ์ ๋ฌธ์ ๊ฐ ์์์ ์ ์ ์์ต๋๋ค.
์ด๊ฒ์ ์ฌ์ ํ โโ์ผ์ด๋๊ณ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
kubeadm
v1.9.2
๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง๋ง kubelet์ด systemd cgroup ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋์ด ์์์ ์ ์ ์์ต๋๋ค.kubelet์ --cgroup-driver = systemd๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋์ปค ์ ๋ณด |
kubelet ๋ก๊ทธ
๋ฒ์ ์ ๋ณด :