Kubernetes

Kubernetes

Kubernetes SecurityContext 개념 및 설정1

1. 개념 쿠버네티스는 컨테이너 실행 시 기본으로 root 권한으로 실행 root 권한에서의 컨테이너 실행을 방지하기 위해 파드 또는 컨테이너 단위로 실행시킬 PID를 지정 2. SecurityContext 적용 비교 SecurityContext를 적용하지 않은 경우(root로 실행) apiVersion: v1 kind: Pod metadata: name: security-context-demo-1 spec: containers: - name: sec-ctx-demo image: busybox:1.28 command: [ "sh", "-c", "sleep 1h" ] PID 확인 SecurityContext를 파드 단위로 적용한 경우(PID 1000으로 실행) apiVersion: v1 kind: Pod ..

Kubernetes

Kubernetes 프라이빗 레포지토리(PrivateRepository) 개념 및 설정

1. 개념 애플리케이션 배포 시 애플리케이션의 이미지를 도커등 퍼블릭 레포에서 다운 애플리케이션 이미지 변조에 따른 리스크를 없애기 위해 프라이빗 레포지토리 사용 가능 2. 시크릿 설정 프라이빗 레포지토리에 접속하기 위해 크레덴셜을 저장한 시크릿 생성 kubectl create secret docker-registry private-reg-cred --docker-username=[레포지토리_유저네임] --docker-password=[레포지토리_패스워드] --docker-server=[레포지토리_주소] 시크릿 생성 확인 3. 이미지 풀 설정 애플리케이션 이미지를 프라이빗 레포지토리에서 다운받도록 설정 imagePullSecrets : 앞서 생성한 시크릿 image : 프라이빗 레포지토리 주소와 다운받을..

Kubernetes

Kubernetes 서비스어카운트(ServiceAccount) 개념 및 설정1

1. 개념 쿠버네티스의 계정에는 2종류(유저 어카운트, 서비스 어카운트)가 존재 유저 어카운트 : 운영자 또는 개발자 등이 클러스터를 운영하는데 활용 서비스 어카운트 : 쿠버네티스 서비스 또는 써드파티 서비스(프로메테우스, 젠킨스 등)가 사용하는 계정 서비스 어카운트 생성 시 자동으로 secret을 생성하고, JWT 값의 토큰을 생성(예전) 서비스 어카운트 생성 후 서비스 어카운트가 사용할 토큰을 생성해야함(현재) 모든 네임스페이스에는 default 서비스 어카운트가 존재하며, 서비스 어카운트를 별도로 지정하지 않는 경우 자동으로 default 서비스 어카운트를 사용 서비스 어카운트 생성 후 추가적으로 RBAC 또는 클러스터 롤로 권한을 부여해야 함 2. ServiceAccount 핸들링 서비스 어카운트..

Kubernetes

Kubernetes 클러스터 롤(ClusterRole) 개념 및 설정

1. 개념 네임스페이스 단위에서의 리소스 접근을 핸들링하는 RBAC과는 다르게 클러스터 단위로 접근권한을 제어 2. ClusterRole Role & RoleBinding YAML ClusterRole apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: secret-reader rules: - apiGroups: [""] resources: ["secrets"] verbs: ["get", "watch", "list"] 9번 라인 : 핸들링할 API가 포함된 그룹 10번 라인 : 핸들링할 API 종류 11번 라인 : 핸들링하고자 하는 액션 ClusterRoleBinding apiVersion: rbac.authorizatio..

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..

MR. ZERO
'Kubernetes' 카테고리의 글 목록 (4 Page)