k get nodes
k get nodes -o wide
k describe node controlplane
k replace --force -f /tmp/kubectl-edit-3913397764.yaml
k get pods -o wide
https://kubernetes.io/ko/docs/concepts/scheduling-eviction/assign-pod-node/#nodename -> 특정 node 선택 - nodeName
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: replicaset-1
spec:
replicas: 2
selector:
matchLabels:
tier: front-end
template:
metadata:
labels:
tier: nginx
spec:
containers:
- name: nginx
image: nginx
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: replicaset-1
spec:
replicas: 2
selector:
matchLabels:
tier: nginx
template:
metadata:
labels:
tier: nginx
spec:
containers:
- name: nginx
image: nginx
k get pods -l env=dev
k get pods --selector env=dev
k get pods -l env=dev --no-headers | wc -l
k get all
k get all -l env=prod --no-headers | wc -l
k get pods --selector env=prod,bu=finance,tier=frontend
k get nodes --no-headers | wc -l
k describe node node01
kubectl taint node node01 spray=mortein:NoSchedule
k get pods -o wide
k edit node controlplane
k replace --force -f /tmp/kubectl-edit-1144610070.yaml
https://kubernetes.io/ko/docs/concepts/scheduling-eviction/taint-and-toleration/ -> toleration 포함한 yaml 작성 방법
ex)
apiVersion: v1
kind: Pod
metadata:
name: bee
spec:
containers:
- name: nginx
image: nginx
tolerations:
- key: "spray"
operator: "Equal"
value: "mortein"
effect: "NoSchedule"
NoSchedule
: Pod가 Taint를 허용하지 않는 경우, Pod가 Node에 스케줄링되지 않는다PerferNoSchedule
: NoSchedule의 소프트한 버전이다. 즉, Scheduler가 Pod를 Node에 스케줄링하지 않으려 하지만 다른 곳에 스케줄링할 수 없으면 해당 Node에 스케줄링된다NoExecute
: Scheduler에만 영향을 주는 NoScheduler이나 PerferNoSchedule과 달리, NoExecute는 Node에서 이미 실행 중인 Pod에도 영향을 준다. NoExecute를 Node에 추가하면 해당 노드에서 이미 실행 중이지만 NoExecute을 허용하지 않는 Pod는 해당 Node에서 제거된다Equal
(default)Exists
requireDuringScheduling...
: 이 필드 아래에 정의된 규칙은 Pod가 Node로 스케줄링되고자 가져야하는 Label을 지정한다preferredDuringScheduling...
...IgnoredDuringExecutioin
: 이 필드 아래에 정의된 규칙은 노드에서 이미 실행 중인 파드에는 영향을 미치지 않는다...RequiredDuringExecution
: Node에서 label을 제거하면, 해당 Label을 가지고 Node에서 실행되던 Node가 해당 Node에서 제거된다In
NotIn
Exists
DoesNotExist
Gt
및 Lt
k get nodes --show-labels
k label node node01 color=blue
https://kubernetes.io/ko/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/ -> affinity 포함한 yaml 작성 방법
https://kubernetes.io/ko/docs/concepts/scheduling-eviction/assign-pod-node/#%EB%85%B8%EB%93%9C-%EC%96%B4%ED%94%BC%EB%8B%88%ED%8B%B0 -> affinity operator 리스트
k get ds --all-namespaces
k get ds -A
k get ds -A --no-headers | wc -l
k describe ds -n=kube-flannel kube-flannel-ds
https://kubernetes.io/ko/docs/concepts/workloads/controllers/daemonset/ -> Daemon Set 생성 yaml
/etc/kubernetes/manifests/
에 저장되어 있다/etc/kubernetes/manifests/
위치에 manifeset file을 작성하기만 하면 Static Pod 생성/var/lib/kubelet/config.yaml
file에서 확인 가능하다cd /etc/kubernetes/manifests/
ssh node01
cat /var/lib/kubelet/config.yaml
rm greenbox.yaml
exit
https://kubernetes.io/ko/docs/tasks/configure-pod-container/static-pod/ -> static pod 생성 방법
k get configmaps
k get serviceaccounts
k get sa -A
https://kubernetes.io/ko/docs/concepts/configuration/configmap/ -> configmap
https://kubernetes.io/ko/docs/tasks/extend-kubernetes/configure-multiple-schedulers/ -> 다중 스케줄러에 대한 Document