전체보기

Kubernetes

Kubernetes RBAC 개념 및 설정1

1. 개념 쿠버네티스는 네임스페이스 단위에서의 유저 리소스 접근을 핸들링하기 위한 4가지 접근제어 방식이 존재 Node : 스케줄링 된 파드의 kubelet에서 접근제어 ABAC : 속성기반 접근제어 RBAC : 역할기반 접근제어 Webhook : POST 요청에 대한 접근제어 2. RBAC Role & RoleBinding YAML Role apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: default name: test-pod-reader rules: - apiGroups: [""] # "" means api resources: ["pods"] verbs: ["get", "watch", "list"] resourceNa..

Kubernetes

Kubernetes kubeconfig 개념 및 설정

1. 개념 쿠버네티스 클러스터에 접속하기 위한 설정·인증서 정보를 저장하고 있는 파일 kubeconfig가 없을 경우 매번 아래와 같이 긴 명령어를 사용해야 함 kubectl get pod --server my-k8s:6443 --client-key admin.key --client-certificate admin.crt --certificate-authority ca.crt kubeconfig 파일은 $HOME/.kube/config에 존재 kubeconfig 구조 clusters : 접속할 클러스터의 주소 정보 contexts : 어떤 유저가 어떤 클러스터에 접속할지 정의한 정보 users : 클러스터에 접속할 유저 정보 2. kubeconfig 확인 cat ~/.kube/config 3. confi..

Kubernetes

Kubernetes 리소스 설정(Resource Configuration)과 ETCD 백업 및 복구

1. 리소스 설정 백업 모든 네임스페이스의 모든 리소스 설정을 백업 kubectl get all -A -o yaml > backup.yaml 2. ETCD 백업 ETCD 환경변수 등록 export ETCDCTL_API=3 ETCD 파드의 설정 정보 확인 kubectl get po [etcd_파드이름] -o yaml -n kube-system ex) kubectl get po etcd-controlplane -o yaml -n kube-system ETCD 스냅샷 생성 etcdctl snapshot save --cacert=[trusted-ca-file] --cert=[cert-file] --key=[key-file] [스냅샷_저장경로] ex) etcdctl snapshot save --cacert=/et..

Kubernetes

Kubernetes kubeadm을 활용한 클러스터 업그레이드

1. 클러스터 업그레이드 절차 kubeadm 업그레이드 마스터 노드 업그레이드 마스터 노드 kubelet, kubectl 업그레이드 워커 노드 업그레이드 워커 노드 kubelet, kubectl 업그레이드 2. kubeadm 업그레이드 kubeadm 현재 버전 확인 `kubeadm version` apt 업데이트 `apt update` 업그레이드 가능한 kubeadm 버전 확인 `apt-cache madison kubeadm` kubeadm 업그레이드 apt-mark unhold kubeadm && \ apt-get update && apt-get install -y kubeadm=1.24.0-00 && \ apt-mark hold kubeadm 업그레이드 적용 확인 `kubeadm version` 클러..

Kubernetes

Kubernetes 커든(Cordon) 및 드레인(Drain) 개념과 설정

1. 개념 커든 특정 노드를 스케줄러에서 제외시켜 파드가 할당되지 않도록 함 기존에 노드에 배포된 파드는 그대로 남아있음 드레인 특정 노드를 스케줄러에서 제외시켜 파드가 할당되지 않도록 하고, 기존에 배포된 파드를 다른 노드로 이동시킴 노드를 업데이트하는 경우 활용 가능 2. 커든 설정 2.1. 명령어 커든 적용 kubectl cordon [노드_이름] 커든 해제 kubectl uncordon [노드_이름] 2.2. 커든 적용 w3-k8s 노드에 커든 적용 후 디플로이먼트 배포 w3-k8s 노드를 제외한 다른 노드에만 배포된 것을 확인 커든을 해제하고 다른 노드의 파드를 삭제하면 w3-k8s 노드에 재배포된 것을 확인 3. 드레인 설정 3.1. 명령어 드레인 적용 kubectl drain [노드_이름] ..

Kubernetes

Kubernetes 멀티 컨테이너 파드(Multi Container Pod)와 초기화 컨테이너(Init Containers) 개념 및 설정

1. 개념 멀티 컨테이너 파드 하나의 파드에 2개 이상의 컨테이너를 실행하는 파드 파드 당 하나의 컨테이너를 운영하는 것이 일반적이지만, 목적에 따라 메인 컨테이너와 이를 보조하는 컨테이너로 구성 가능(ex. 웹 서버+로그 에이전트 등) 멀티 컨테이너 디자인 패턴으로는 사이드카 / 어댑터 / 앰버서더가 존재 초기화 컨테이너 메인 컨테이너 실행 전 초기화 역할을 수행하는 컨테이너 초기화 컨테이너의 작업이 성공적으로 완료되어야만 메인 컨테이너 실행 초기화 컨테이너의 작업이 실패할 경우 성공할 때까지 계속 재실행 초기화 컨테이너가 여러개일 경우 순차적으로 실행 2. 멀티 컨테이너 생성 yaml을 활용해 생성 apiVersion: v1 kind: Pod metadata: labels: run: test-mult..

Kubernetes

Kubernetes 환경변수(env), 컨피그맵(ConfigMap), 시크릿(Secrets) 개념 및 설정

1. 개념 파드에 환경변수를 지정하거나 데이터, 설정 등을 저장할 때 3가지 방식(환경변수, 컨피그맵, 시크릿) 활용 가능 시크릿의 경우 입력한 값이 base64로 인코딩되어 저장 2. 환경변수(env) 설정 환경변수 설정 apiVersion: v1 kind: Pod metadata: name: env-test labels: run: env-test spec: containers: - name: env-test image: kodekloud/webapp-color env: - name: APP_COLOR value: green 환경변수 적용 확인 3. 컨피그맵(ConfigMap) 설정 3.1. 컨피그맵 핸들링 yaml 파일을 활용한 컨피그맵 생성 apiVersion: v1 kind: ConfigMap m..

Kubernetes

Kubernetes 커맨드(Command) 및 인자(Arguments) 설정

1. 개념 파드 생성 시 파드 내부에서 동작하는 컨테이너에게 전달할 커맨드와 인자 설정 가능 2. YAML을 활용한 커맨드 및 인자 설정 nginx 컨테이너 생성 및 command, args 설정 apiVersion: v1 kind: Pod metadata: name: command-demo spec: containers: - name: command-demo-container image: nginx command: ["echo"] args: ["Hi this is args test"] nginx 컨테이너 생성 및 command, args 설정(간소화 형식) apiVersion: v1 kind: Pod metadata: name: command-demo spec: containers: - name: co..

Kubernetes

Kubernetes 배포 전략(RollingUpdate, Blue/Green, Canary) 및 롤백(Rollback) 개념과 설정

1. 개념 쿠버네티스는 서비스의 무중단 업데이트를 위해 3가지 배포 방식을 지원 롤링 업데이트 : 정해진 비율만큼의 파드만 점진적으로 배포 블루/그린 : ver 1.0과 ver 2.0을 구성해놓고, 트래픽을 ver 2.0으로 전환 카나리 : ver 2.0을 일부만 배포하고, 트래픽도 일부만 ver 2.0으로 전환. 배포에 문제가 없을 경우 ver 2.0을 점진적으로 배포 및 트래픽 전환 쿠버네티스는 롤링 업데이트를 디폴트 배포 전략으로 설정 또한 배포 이후 장애 시 복구를 위해 이전 버전으로 되돌리는 롤백 지원 2. 롤링 업데이트 옵션 maxSurge 롤링 업데이트를 위해 최대로 생성할 수 있는 파드 갯수 maxSurge를 높게 설정하면 롤링 배포를 빠르게 적용 가능 % 단위 또는 갯수 단위로 지정 가능..

Kubernetes

Kubernetes 리소스 모니터링을 위한 metrics-server 설치

1. 개념 K8s 클러스터의 리소스 사용량을 간단히 확인할 수 있는 오픈소스 리소스 모니터링 도구 kubelet에 포함된 cAdvisor가 메트릭(지표)을 수집해 metrics-server로 전송하는 구조 cAdvisor란? 컨테이너에 대한 정보를 수집·처리 및 전송하는 데몬 metrics-server는 기본적인 리소스 모니터링만 가능하므로, 세부적인 모니터링은 프로메테우스와 그라파나 활용 필요 2. metrics-server 설치 명령어를 이용해 설치 kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml metrics-server 디플로이먼트 설정 수정 "--kub..

MR. ZERO
'분류 전체보기' 카테고리의 글 목록 (7 Page)