특정 node 스케쥴링 막기
- kubectl cordon은 지정된 노드에 더이상 포드들이 스케쥴링되서 실행되지 않도록 합니다
1) 설정
#kubectl cordon "node이름"
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready,SchedulingDisabled control-plane 21h v1.25.2
worker Ready <none> 5h49m v1.25.3
2) 해제
#kubectl uncordon "node이름"
특정 node의 pod를 다르 node로 옮기기
#kubectl drain docker-for-desktop --ignore-daemonsets=true
--ignore-daemonsets=true 은 daemonsets이 있어도 강제로 옮기겠다는뜻.
pod안에 있는 container 접속
kubectl exec --stdin --tty shell-demo -- /bin/bash
kubectl exec -i -t my-pod --container main-app -- /bin/bash
master node에 Pod 올리기
기본적으로 master node(control-plane 열활을 하는 node)에는 pod를 못 올리게 되어있다.
1) taint 설정 확인
# kubectl describe node jk-server | grep Taints
Taints: node.kubernetes.io/disk-pressure:NoSchedule
2) master node taint 해제 방법
#kubectl taint nodes jk-server node.kubernetes.io/disk-pressure:NoSchedule-
Taint & Toleration
- taint: 노드마다 설정가능하며 설정한 노드에는 pod가 스케줄되지 않습니다.
- toleration: taint를 무시하고 pod에 설정하면 해당 규칙대로 pod 스케줄링 가능
worker node join 다시 하기
1) kubeadm init 때 나온 join 주소를 가지고 있는 경우
그걸 사용
2) kubeadm init 때 나온 join 주소를 까먹은 경우
(1) join 주소형 식 알아내기
#kubeadm token create --print-join-command --dry-run
(2) 기존 사용중인 token 확인
#kubeadm token list 로 현재 사용중인 token 확인
(3) join 주소 다시 생성
(1)에서 구한 명령어의 token 정보를 (2)에서구한 token 정보로 교체
#kubeadm join 1.1.1.1:6443 --token djzaro.kmnpvt9nsj1m16wb --discovery-token-ca-cert-hash sha256:f10bab45b7b34a5f2d3108ddf9f36c051c69eb79aef75b538439b217fcd44003
k8s 삭제
#kubeadm reset
#apt-get purge kubeadm kubectl kubelet kubernetes-cni
#apt-get autoremove
#rm -rf ~/.kube
#apt-mark unhold kubelet kubeadm kubectl
Pod의 오류 확인
#kubectl describe pod {pod_name}
Last State 의 Reason을 확인
'Cloud > k8s' 카테고리의 다른 글
[k8s] 1. 네트워크 구현 방식 (0) | 2022.11.19 |
---|---|
[급한 k8s] 2. k8s 설치 (0) | 2022.11.12 |
[kubernetes] kubernetes의 Object (0) | 2022.08.08 |
[kubernetes] service, deployment, pod, Loadbalancer 삭제 (0) | 2022.05.24 |
[kubernetes] Deployment외부 노출 방법 NodePort, LoadBalancer (0) | 2022.05.23 |