쿠버네티스 자격증 9

[CKAD] Application Environment, Configuration and Security

CKAD 시험 비중 (25%) Authentication, Authorization and Admission Control 1. 인증(Authentication) * User 또는 Application이 API에 접근을 허가 받는 과정(인증서/토큰) 2. 허가(Authorization) * RBAC 모델 기반 * 요청 ID에 적절한 Role이 있는지 확인 3. 승인 제어(Admission Control) * 요청이 올바른 형식인지 판별 * 요청 내용에 대한 검증이나 요청, 내용을 강제로 변경할 때 사용 * 쿠버네티스에서 특정 기능을 제한(validate) 또는 변경(mutate) 1. Admission Controller 플러그인 * Resourcequota: Namespace에서 사용할 수 있는 전체 ..

CKAD 2023.05.28

[CKAD] Application Observability and Maintenance

CKAD 시험 비중 (15%) Liveness Probe 1. self-healing 기능 * 건강한 컨테이너를 이용해 서비스 지원 2. liveness probe * 동작되는 컨테이너에 주기적으로 건강검진 명령을 주어 결과에 따라 건강한지 아닌지를 판단 * 건강하지 않은 컨테이너는 kill 시키고, 다시 동일 버전의 컨테이너를 다운로드 받아 실행 * 항상 건강한 컨테이너를 가지고 서비스 지원함을 보장 * Pod가 계속 실행할 수 있음을 보장 1. httpGet probe: 지정한 IP 주소, port, path에 HTTP GET 요청을 보내서 해당 컨테이너가 응답하는지를 확인한다. 반환 코드가 200이 아닌 값이 나오면 오류로 인식하고 컨테이너를 다시 시작한다. 2. tcpSocket probe: 지정..

CKAD 2023.05.27

[CKAD] Application Deployment

CKAD 시험 비중 (20%) Pod를 배포(업데이트)하는 방법 1. Blue-Green Update 2. Canary Deployment 3. Rolling Update Blue/Green Update 1. 구 버전과 신 버전이 모두 동작한 상태에서 트래픽만 신 버전으로 전환 2. Rollback이 쉽고, 업데이트 과정에서 소요되는 시간 절약 3. 하드웨어 리소스 소비: 구, 신 버전의 애플리케이션이 동시 동작해야함 실습1 다음과 같은 deployment, service를 동작하세요. blue라는 이름으로 smlinux/nginx:blue 이미지를 가진 Pod 2개 배포하세요. 1. Label은 version=blue을 사용하며 port는 8080 포트를 사용한다. * app-svc 서비스를 versi..

CKAD 2023.05.27

[CKAD] Application Design and Build

CKAD 시험 비중 (20%) Docker Container Build 다음의 조건으로 appjs:latest 컨테이너를 빌드하세요. * 빌드 디렉토리: ~/app_build/appjs * /data/ckad/app.js 의 파일을 ~/app-build/appjs로 이동한 후 다음 조건에 맞게 컨테이너를 빌드하세요. 1. base image: node:12 2. app.js 파일을 컨테이너 / 디렉토리로 복사 3. 컨테이너 실행 시 node app.js가 동작되어야 한다. * 빌드한 컨테이너를 실행하세요. $ vi Dockerfile FROM node:12 COPY app.js / CMD ["node", "app.js"] or ENTRYPOINT $ docker build -t appjs:latest ...

CKAD 2023.05.27

[CKA] Storage

CKA 시험 비중 (10%)Kubernetes Volume* Volume은 kubernetes 스토리지의 추상화 개념컨테이너는 Pod에 바인딩 되는 볼륨을 마운트하고 마치 로컬 파일 시스템에 있는 것처럼 스토리지에 접근한다.* Kubernetes 스토리지volumes:- name: html   hostPath # node에 있는 로컬 디스크 또는 NFS, AWS EBS, Azure Disk 등       path: /hostdir or file* 컨테이너 단위로 mountvolumeMounts:- name: html   mountPath: /webdata Empty Volume* Volume을 통해 컨테이너 간 데이터 공유1. emptyDir 볼륨은 빈 디렉토리로 시작2. Pod 내부에서..

CKA 2023.05.14

[CKA] Workloads & Scheduling

CKA 시험 비중 (15%)Pod란* Pod란 컨테이너를 표현하는 k8s API의 최소 단위* Pod에는 하나 또는 여러 개의 컨테이너가 포함될 수 있음$ kubectl run web --image=nginx --port=80 실습1'cka-exam'이라는 네임스페이스를 만들고, 'cka-exam' 네임스페이스에 아래와 같은 Pod를 생성하세요.* pod Name: pod-01* image: busybox* 환경변수: CERT="CKA-cert"* command: /bin/sh* args: "-c", "while true; do echo $(CERT); sleep 10;done"$ kubectl create namespace cka-exam# docs 적극 참고$ vi pod-0..

CKA 2023.05.14

[CKA] Cluster Architecture, Installation & Configuration (2)

CKA 시험 비중 (25%) API 인증: RBAC * API 서버에 접근하기 위해서는 인증 작업이 필요 * Role-based Access Control(RBAC, 역할 기반 액세스 제어) * User: 클러스터 외부에서 쿠버네티스를 조작하는 사용자 인증 (kubectl 명령어) -> cat .kube/config * Service Account: Pod가 쿠버네티스 API를 다룰 때 사용하는 계정 kubectl get secrets -> 토큰을 확인할 수 있다. Role & RoleBinding * 특정 유저나 ServiceAccount가 접근하려는 API에 접근 권한을 설정 * 권한 있는 User만 접근하도록 허용 * 권한 제어 * Role 1. 어떤 API를 이용할 수 있는지의 정의 2. 쿠버네티..

CKA 2023.05.14

[CKA] Troubleshooting

CKA 시험 비중 (30%) 지정한 Pod 내의 특정 컨테이너 애플리케이션 로그 확인 $ kubectl logs {Pod Name} 실습 {Pod name}의 로그 모니터링 후 'file not found' 오류가 있는 로그 라인 추출(Extract)해서 custom-log 파일에 저장하세요. $ kubectl get pod {Pod name} $ kubectl logs {Pod name} | grep 'file not found' > custom-log 클러스터 리소스 Pod 모니터링 $ kubectl top pods $ kubectl top pods --sort-by=cpu, kubectl top pods --sort-by=memory $ kubectl top pods {Pod Name} $ kube..

CKA 2023.05.13

[CKA] Services & Networking

CKA 시험 비중 (20%)Pod NetworkCNI에서 관리하는 포드 간 통신에 사용되는 클러스터 전체 네트워크 Service NetworkService discovery를 위해 kube-proxy가 관리하는 Cluster-wide 범위의 Virtual IP(Cluster IP)부하분산, Web 단일진입점(LB) Kubernetes Network Proxy 각각의 Node에서 실행되고, Kubernetes Service API에 정의된 서비스를 각 노드에서 반영 (kube-proxy 역할: iptables rule을 설정하고 외부 네트워크와 Pod를 연결) Service Type - ClusterIP(default)* Pod 그룹(동일한 서비스를 지원하는 Pod 모음)의 단일 ..

CKA 2023.05.07