λ²κ·Έ 보κ³
kubeadm λ²μ ( kubeadm version
): 1.9.0
νκ²½ :
kubectl version
): 1.9.0uname -a
): Linux 4.9.35-v7+kubeadm init
νλ©΄ [ERROR Swap]: running with swap on is not supported. Please disable swap
μ€λ₯κ° λΉλλ€. μ μλ μμ μ¬νμ κΈ°λ³Έμ μΌλ‘ kubeletμ νλκ·Έλ₯Ό μ¬μ©νλ κ²μ
λλ€.
kubeadm reset
echo 'Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"' >> /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
systemctl daemon-reload
systemctl restart kubelet
kubeadm init
κ·Έλ¬λ κ²°κ΅ μ€λ₯λ μ¬μ ν μ‘΄μ¬ν©λλ€. μ΄μ©λ©΄ μ΄κ²μ λμ Kubelet λ¬Έμ μ΄κ±°λ λ΄κ° λκ°λ₯Ό μλͺ» ꡬμ±νκ³ μλ κ²μΌ μλ μμ΅λλ€...
kubelet νλκ·Έλ₯Ό μ€μ νλ€λ©΄ kubeadm init --ignore-preflight-errors Swap
μ΄ μμ
μ μννλ κ²μ΄ μμ νμ§λ§ μ§μλμ§ μλ μμμΌλ‘ μ΄λνκ² λλ―λ‘ λμ μ€μμ ν΄μ νλ κ²μ΄ μ’μ΅λλ€.
μ΄κ²μ λ€μ μ΄ νμλ μμ§λ§ μ¬μ ν μ΄κ²μ΄ λ€μ μ§κ΄μ μ΄μ§ μλ€κ³ μκ°ν©λλ€. kubelet νλκ·Έλ₯Ό μ€μ νλ©΄ μ€ν μ μ€λ₯λ₯Ό 무μν νμκ° μμ΅λλ€. --ignore-preflight-errors
κ° μ λ¬λμ§ μμΌλ©΄ kubelet νλκ·Έκ° νμ±νλμλμ§ μ¬λΆμ κ΄κ³μμ΄ μ€λ₯ λ©μμ§κ° λμΌνκ² μ μ§λλ©° μ΄λ μ€ν΄μ μμ§κ° μμ΅λλ€.
μ€μμ λλ λͺ λ Ήμ 무μμ λκΉ?
swapoff -a
swapoff -a
κ° λλΆλΆμ κ²½μ° μμ΄μμΈ κ²μ μ¬μ€μ΄μ§λ§ νΉμ k8 μ€μ μλ μ€μ λ‘ μ€μμ΄ νμν μ μμ΅λλ€. μλ₯Ό λ€μ΄, 짧μ CI/CD μμ
μ κ±°μ μ²λ¦¬νμ§ μλ κ°μΈ GitLab Runnerμ μ¬μ©νλ 1GB RAMμ λ§€μ° μκ³ μ λ ΄ν VMμ΄ μμ΅λλ€. μμ€ν
ν¬κΈ°λ₯Ό λ리면 99% μ ν΄ μνμΈ λ¦¬μμ€μ λν΄ λ λ§μ λΉμ©μ μ§λΆνκ² λ©λλ€. μ€μμ λΉνμ±ννλ©΄ buid ν¬λ λ΄λΆμ npm install
λ° κΈ°ν μ€ν¬λ¦½νΈκ° 짧μ μκ° λμμ΄μ§λ§ κ½€ λ§μ λ©λͺ¨λ¦¬κ° νμνκΈ° λλ¬Έμ μ€λ¨λ μ μμ΅λλ€. λ°λΌμ gitlab μ£Όμ μ°¨νΈ μ μ€μμ΄ μλ λ¨μΌ λ
Έλ kubeadm
ν΄λ¬μ€ν°κ° κ°μ₯ μ ν©ν©λλ€.
λ―Έλ ν΄λ¬μ€ν°λ₯Ό μμνκ³ μ€ννλ λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
UPD: μλ ν΄κ²° λ°©λ²μ k8s 1.10μλ§ μ μ©λ©λλ€. - 1.11+μ κ²½μ° https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/μ μ°Έμ‘° kubeletConfiguration:\n failSwapOn: false
λ₯Ό μ§μ ν μ μμ΅λλ€. kubeadmμ config.yaml
λ€μ kubeadm init --config config.yaml --ignore-preflight-errors Swap
).
kubeadm reset
## β see explanation below
sed -i '9s/^/Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"\n/' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
systemctl daemon-reload
systemctl restart kubelet
echo "
kind: MasterConfiguration
apiVersion: kubeadm.k8s.io/v1alpha1
api:
bindPort: ${K8S_API_PORT}
apiServerCertSANs: ${K8S_API_EXTRA_HOSTS}
" > /tmp/config.yaml
kubeadm init --config /tmp/config.yaml --ignore-preflight-errors Swap
## make possible to run workload on master
kubectl taint nodes --all node-role.kubernetes.io/master-
μλ λ¨λ½μ k8s 1.10μλ§ μ μ©λ©λλ€.
@cjdcordeiro κ° μΈκΈν echo 'Environment="..."' >> ...
sed -i '9s/^/...
λμ 10-kubeadm.conf
μ μ€μ΄ μλͺ»λ μμλ‘ μμ κΈ° λλ¬Έμ
λλ€.
...
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$
Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"
λλ¬Έμ KUBELET_EXTRA_ARGS
ν λνλ ExecStart
, κ·Έκ²μ΄ λ°κΈ°λμ§ μμμ΅λλ€μ²λΌ 보μλ€. μ sed -i '9s/^/...
, νμΌ /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
κ·Έλ κ²νκ³ μν κ°μ λκΉμ§ :
...
Environment="KUBELET_CERTIFICATE_ARGS=--rotate-certificates=true --cert-dir=/var/lib/kubelet/pki"
Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ$
kubeadmμμ μ€μμ νμ±ννλ κ²μ΄ μ§κΈλ³΄λ€ λ μ¬μμ§λ©΄ μ’μ κ²μ λλ€. μ΄λ κ² νλ©΄ μ μΈκ³ μ¬λλ€μ΄ λͺ μκ°μ μ μ½ν μ μμ΅λλ€. 1.8λ‘ μ κ·Έλ μ΄λν ν λ―Έλ ν΄λ¬μ€ν°λ₯Ό μλμν€λ κ²μ μ λ§ νλ μΌμ΄μμ΅λλ€. μ κ° Linux κ΄λ¦¬μ λν κ²½νμ΄ κ±°μ μκ³ λ€λ₯Έ μ¬λλ€λ κ°μ κΈΈμ κ°μ§ μμλ λλ€λ©΄ μ’μ κ±°λΌκ³ μκ°νκΈ° λλ¬Έμ λλ€. μ΄μμ μΈ μ루μ μ λ€μ IMOμ κ°μ΅λλ€.
echo "
kind: MasterConfiguration
apiVersion: kubeadm.k8s.io/v1alpha1
kubeletConfiguration:
allowSwap: true
" > /tmp/config.yaml
kubeadm init --config /tmp/config.yaml
λ¬Όλ‘ μ€μμ νμ±ννλ κ²μ λ§μ μν©μμ λ¬Έμ κ° λ μ μκΈ° λλ¬Έμ κ·Ήλ¨μ μΈ κ²½μ°λ‘ λ¨μ μμ΄μΌ ν©λλ€. κ·Έλ¬λ kubeadm μ¬μ©μμκ² μ νκΆμ΄ μλ€λ©΄ μ’μ κ²μ λλ€. κ·ΈλκΉμ§λ μ€μ νμ±νμ λν μ΄λ¦° λ¬Έμ κ° μμλ€λ©΄ μ’μμ κ²μ λλ€.
kubelet.service.dμ kubeadm λλ‘μΈμ μΆκ°νκ³ λΉν μ κ²μ¬λ₯Ό λΉνμ±ννλ μ€μμ νμ±ννλ μ€νμ /μν/κΈ°ν "κΈ°λ₯" νλκ·Έμ λν μ΅μ μ΄ μλ κ²½μ° +1μ λλ€. λ¬Όλ‘ κ·Ήλ¨μ μΈ κ²½μ°λ λμνμ§λ§ λ μ¬μ λ€λ©΄ μ’μμ κ²μ λλ€.
(μΈν°λ· κ²μνμ¬ μ΄ λ¬Έμ λ₯Ό λΉ λ₯΄κ² μ°Ύμ μ μμΌλ©΄ λ§μ λμμ΄ λ©λλ€.)
κ΄λ ¨ μ°Έμ‘°: https://github.com/kubernetes/kubernetes/issues/53533
λ΄ μ€μμ κ»μ§λ§ μ¬μ ν μ΄ μ€λ₯κ° λ°μν©λλ€.
κΈ°λ‘μ μν΄ μ μ΄λ μ°λΆν¬ κΈ°λ° μμ€ν μμλ _--fail-swap-on=false_ νλκ·Έλ₯Ό μΆκ°ν μμΉκ° _/etc/default/kubelet_ νμΌμ μλ€κ³ μκ°ν©λλ€. _systemd_ conf νμΌ μ체μλ μμ΅λλ€.
κΈ°λ‘μ μν΄ μ΅μν μ°λΆν¬ κΈ°λ° μμ€ν μμλ --fail-swap-on=false νλκ·Έλ₯Ό μΆκ°ν μμΉκ° /etc/default/kubelet νμΌμ μλ€κ³ μκ°ν©λλ€. systemd conf νμΌ μ체μλ μμ΅λλ€.
1.11+μ κ²½μ° μ΄κ²μ μ¬μ€μ λλ€.
μꡬμ μΌλ‘ λΉνμ±ννλ €λ©΄ sudo crontab -e
μ λμ μ€ λ°κΏμ μ¬μ©νμ¬ <strong i="5">@reboot</strong> /sbin/swapoff -a
λ₯Ό μ½μ
νμμμ€.
Ubuntu 16.04 λ° 18.04μμ ν μ€νΈλμμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
swapoff -a