[k8s] drain & cordon
·
카테고리 없음
drain 개념특정 node의 pod를 전부 삭제하고 scheduling disabled 이명령어를 사용하여 특정 node에 pod를 전부 삭제 or 이동시킨다. 주로 node의 하드웨어 변경작업이나 kubernetes 버전업시 무중단을 위하여 사용된다.   cordon 개념특정 node의 scheduling disabled 기존 pod 외의 신규 유입되는 pod에 대해서 scheduling 유입을 막는 명령어 이다.  uncordon 명령어로 scheduling disabled 된 node를 다시 scheduling 가능하게 변경할 수 있다. 실습2개의 노드를 가진 cluster 1.28 -> 1.29 버전으로 kubernetes cluster upgrade 진행 node : node01, contro..
[k8s] Secret
·
DevOps
개념Secret은 Configmap 과 유사하게 Pod와 별도로 떠서 환경변수나 아이디 패스워드 같은 값을 관리하는 오브젝트이다. Configmap과의 차이점은 기밀 데이터를 다룬다는 점이다.Secret 역시 Configmap 과 동일하게 key: value 형태로 이루어지며, 기본적으로 기밀을 다루는 오브젝트로 type에 따라 처리가 다르지만, value 값으로 base64 인코딩 값을 갖는다.   실습Secret Name: db-secret Secret 1:  DB_Host=sql01 Secret 2:  DB_User=root Secret 3:  DB_Password=password123   webapp이라는 pod와 mysql이라는 pod가 떠있는 환경에 mysql과 webapp을 연결할 계정 ..
[k8s] Configmap
·
DevOps
개념key:value 형태의 환경변수 값을 지정하여 주입해주는 리소스이다. 주로 기밀이 아닌 변수값인 정보들은 대상으로 하고 있다. 패스워드나 중요한 key 값은 주로 secret으로 관리하는게 맞다.configmap을 활용하면, 컨테이너 yaml변경 없이 각환경에 따른 변수값을 다르게 주입할 수 있다.  실습ConfigMap Name: webapp-config-map Data: APP_COLOR=darkblue Data: APP_OTHER=disregard  위 조건을 만족하는 configmap을 만들어보려고 한다. webapp-config-map.yamlapiVersion: v1kind: ConfigMapmetadata: name: webapp-colordata: APP_COLOR: darkbl..
[k8s] Static Pod
·
DevOps
개념각 Pod들은 Master Node에 설치된 kube-scheduler와 kube-apiserver를 활용하여 적절한 Node에 Pod를 배포하게 된다. 그런데 해당 리소스 없이 node에 존재하는 kublet의 도움으로 Static Pod 형태로 배포가 가능하다. 실제로 Master Node 배포된 etcd, kube-scheduler, kube-apiserver 등은 Static Pod 형태로 배포가 되었다.kubelet은 /etc/kubernetes/manifests 디렉터리에 정의된 매니페스트 파일을 통해 Static Pod를 생성한다. 그리고 Static Pod를 생성하면 자동으로 Pod이름 뒤에 -{nodename} 이 붙는다. 그래서 이름 만으로 어떤 파드가 Static Pod로 배포되었..
[k8s] RollingUpdate
·
DevOps
개념kubernetes에서는 무중단 배포방식을 지원한다. 대표적인 무중단 배포방식으로는 Rolling Update라는 방식이 있다.배포방식을 간략하게 설명하면, 새로운 Pod를 띄우고, 해당 Pod가 정상적으로 배포된 것이 확인되면, 기존 Pod가 하나 줄어드는 방식으로 점진적으로 업데이트된 Pod로 교체하여 무중단을 보장하며 배포하는 방식이다. 실습 다음 yaml을 rolling update 방식으로 배포하자! rollingupdate.yaml---apiVersion: apps/v1kind: Deploymentmetadata: name: frontend namespace: defaultspec: replicas: 4 selector: matchLabels: name: webapp ..
[k8s] DaemonSet
·
DevOps
개념DaemonSet은  Cluster 전체에 Pod를 띄울때 사용하는 컨트롤러이다. DaemonSet은 디플로이먼트와 유사하게 Pod를 생성하고 관리한다. Cluster에 Node가 새롭게 추가될 시에 자동으로 그 Node에 Pod를 실행시킨다.    실습Name: elasticsearchNamespace: kube-systemImage: registry.k8s.io/fluentd-elasticsearch:1.20다음 조건에 만족하는 DaemonSet을 생성할 것이다. daemonset은 deployment와 yaml 구조거 거의 같기 때문에 다음 명령어로 위 조건에 만족하는 deployment yaml 파일을 생성하겠다.kubectl create deployment elasticsearch --ima..