본문 바로가기

k8s85

[K8s] Cordon& Drain Cordon& Drain이란? Cordon node scheduling 중단(cordon)및 허용(uncordon) 특정 node에 pod 스케줄을 금지하거나 해제 kubectl [cordon|uncordon] NODE [options] [ Hands - on ] node2의 scheduling 중단 및 확인 kubectl cordon node2.example.com kubectl get nodes NAME STATUS ROLES AGE VERSION master.example.com Ready control-plane 22h v1.24.1 node1.example.com Ready 22h v1.24.1 node2.example.com Ready,SchedulingDisabled 22h v1.24.1 p.. 2023. 2. 20.
[K8s] Taint & Toleration,Cordon& Drain Taint & Toleration이란? node taint, pod toleration worker node에 taint가 설정된 경우 동일 값의 toleration이 있는 pod만 배치 toleration이 있는 pod는 동일한 taint가 있는 node를 포함하여 모든 node에 배치 effect 필드 종류 NoSchedule : toleration이 맞지 않으면 배치되지 않음. PreferNoSchedule : toleration이 맞지 않으면 배치되지 않으나, cluster 리소스가 부족하면 할당 NoExecute : toleration이 맞으면 동작중인 pod를 종료 [ Hands - on ] node1에 taint 설정 및 확인 kubectl taint nodes node1.example.co.. 2023. 2. 13.
[k8s] Pod Scheduling Node selector란? Worker node에 할당된 label을 이용해 node를 선택 node label 설정 kubectl label nodes = kubectl label node1.example.com gpu=true kubectl get nodes -L definition apiVersion: v1 kind: Pod metadata: name: tensorflow-gpu spec: containers: - name: tensorflow image: tensorflow/tensorflow:nightly-jupyter ports: - containerPort: 8888 protocol: TCP nodeSelector: gpu: "true" [ Hands - on ] node2에 gpu=tru.. 2023. 2. 6.
[K8s] Multi-master - HA Kuberenetes cluster 운영 K8s cluster를 직접 구성하는 도구 kubeadm K8s에서 공식 제공하는 cluster 생성/관리 도구 kubespray K8s cluster를 배포하는 오픈 소스 프로젝트 다양한 형식으로 k8s cluster 구성 가능 On-premise에서 상용 서비스 cluster 운영 시 유용 K8s cluster 구성 Control plane(master node) worker node 들의 상태를 관리하고 제어 High Available(HA) cluster 운영 API는 loadbalancer를 통해 worker node에 노출 최소 3개의 중첩된 control plane을 구성(5,7개의 master nodes) Worker node container를 동작하며 실제 서비스를 제공 Highly A.. 2023. 1. 30.
[k8s] Secret Secret이란? Container가 사용하는 password, auth token, ssh key와 같은 중요한 정보를 저장 민감한 구성 정보를 base64로 인코딩해서 한 곳에 모아서 관리 Secret 데이터 전달 방법 Command-line Argument Environment Variable Volume Mount Available command에 따라 들어가는 옵션이 달라짐 docker-registry : create a secret for use with a Docker registry generic : create a secret from a local file, directory or literal value tls : create a TLS secret type Opaque : 임의의 사.. 2023. 1. 25.
[K8s] ConfigMap ConfigMap이란? 구성 설정이나 환경 설정 정보들을 한 곳에 모아서 관리해주는 API 단, value는 1MiB를 초과할 수 없음 ConfigMap 생성 Configmap 생성 kubectl create configmap ttabae-config --from-literal=INTERVAL=2 --from-literal=OPTION=BOY --from-file=config.dir/ Configmap 확인 kubectl get configmaps ttabae-config NAME DATA AGE ttabae-config 3 77s kubectl describe configmaps ttabae-config Name: ttabae-config Namespace: default Labels: Annotati.. 2023. 1. 16.
[k8s] Canary Deployment Pod를 배포(업데이트)하는 방법 Blue, Green update Canary update Rolling update Canary 배포란? 기존 버전을 유지한 채로 일부 버전만 신규 버전으로 올려서 신규 버전에 버그나 이상은 없는지 확인 definition apiVersion: apps/v1 kind: Deployment metadata: name: mainui-canary spec: replicas: 1 selector: matchLabels: app: mainui version: canary template: metadata: labels: app: mainui version: canary spec: containers: - name: mainui image: nginx:1.15 ports: - c.. 2023. 1. 9.
[K8s] Annotation Annotation이란? Label과 동일하게 key-value를 통해 리소스의 특성을 기록 kubectl describe command로 확인 가능 K8s에게 특정 정보를 전달할 용도로 사용 Deployment의 rolling update 정보 기록 annotations: kubernetes.io/change-cause: version 1.15 관리를 위해 필요한 정보를 기록할 용도로 사용 release, logging, monitoring에 필요한 정보들을 기록 annotations: builder: “intae Yoon (intae.yoon@gmail.com)"" buildDate: “20220609" imageRegistry: definition apiVersion: v1 kind: Pod met.. 2023. 1. 3.