drain
: Kubernetes에 해당 노드를 비우도록 지시하는 명령어
cordon
: 해당 노드를 스케줄 불가능하게 지시하는 명령어
uncordon
: drain, cordon 실행 취소 명령어
k drain node01
k drain node01 --ignore-daemonsets
k uncordon node01
k cordon node01
https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/ -> drain
Node에 있는 리소스를 비울 때, 다른 Node로 자동 스케줄링되는데 해당 Node에 Taint가 설정되어 있어 배치하지 못하는 경우 Pending 상태로 머물기 때문에 사용자에게 영향을 끼칠 수 있기 때문이다
Kubectl get nodes
명령어에서 Cluster의 버전을 확인할 수 있다kubeadm upgrade plan
에 나타난 버전보다 더 높은 버전으로 Node를 업그레이드하기 위해서는 Kubeadm 버전을 업그레이드 해야 한다cat /etc/*release*
첫번째 방법
두번째 방법
k get nodes | grep Taints
kubeadm upgrade plan
cat /etc/*release*
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-upgrade/ -> Kubeadm을 이용한 Cluster Upgrade
export ETCDCTL_API=XX
을 이용하자
export ETCDCTL_API=XX
을 한번만 입력하면 etcdctl 명령어를 사용할 때마다 맨 앞에 ETCDCTL_API=XX
을 타이핑하지 않아도 된다
cat /etc/kubernetes/manifests/etcd.yaml
cat /var/lib/kubelet/config.yaml
exprot ETCDCTL_API=3
etcdctl snapshot restore --data-dir /var/lib/etcd-from-backup /opt/snapshot-pre-boot.db
etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
snapshot save /opt/snapshot-pre-boot.db
https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/#backing-up-an-etcd-cluster -> etcd 백업 방법
cluster들을 구성하고 있는 높은 버전의 서버에서 진행해야 한다
ETCDCTL_API=3 etcdctl --endpoints https://10.17.46.3:2379 \
--cert=/etc/etcd/pki/etcd.pem \
--key=/etc/etcd/pki/etcd-key.pem \
--cacert=/etc/etcd/pki/ca.pem \
member list
student-node ~ scp /opt/cluster2.db etcd-server:/root
cluster2.db 100% 1108KB 178.5MB/s 00:00
student-node ~ ➜
etcd-server ~ ➜ ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/etcd/pki/ca.pem --cert=/etc/etcd/pki/etcd.pem --key=/etc/etcd/pki/etcd-key.pem snapshot restore /root/cluster2.db --data-dir /var/lib/etcd-data-new
{"level":"info","ts":1662004927.2399247,"caller":"snapshot/v3_snapshot.go:296","msg":"restoring snapshot","path":"/root/cluster2.db","wal-dir":"/var/lib/etcd-data-new/member/wal","data-dir":"/var/lib/etcd-data-new","snap-dir":"/var/lib/etcd-data-new/member/snap"}
{"level":"info","ts":1662004927.2584803,"caller":"membership/cluster.go:392","msg":"added member","cluster-id":"cdf818194e3a8c32","local-member-id":"0","added-peer-id":"8e9e05c52164694d","added-peer-peer-urls":["http://localhost:2380"]}
{"level":"info","ts":1662004927.264258,"caller":"snapshot/v3_snapshot.go:309","msg":"restored snapshot","path":"/root/cluster2.db","wal-dir":"/var/lib/etcd-data-new/member/wal","data-dir":"/var/lib/etcd-data-new","snap-dir":"/var/lib/etcd-data-new/member/snap"}
etcd-server ~ ➜
4.새 디렉토리에 대한 권한이 올바른지 확인해야 한다 (etcd 사용자가 소유해야 함)
etcd-server /var/lib ➜ chown -R etcd:etcd /var/lib/etcd-data-new
etcd-server /var/lib ➜
etcd-server /var/lib ➜ ls -ld /var/lib/etcd-data-new/
drwx------ 3 etcd etcd 4096 Sep 1 02:41 /var/lib/etcd-data-new/
etcd-server /var/lib ➜
etcd-server ~/default.etcd ➜ systemctl daemon-reload
etcd-server ~ ➜ systemctl restart etcd
etcd-server ~ ➜
k config view
k config use-context cluster1
k config use-context cluster2
ps -ef | grep etcd
https://kubernetes.io/ko/docs/reference/kubectl/cheatsheet/ -> 명령어 tip
https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/ -> cluster etcd 운영 방법