목록CKA (22)
holssi 님의 블로그
시험 history쿠버네티스에 대해 여러번의 구축 경험이 있었고, 클러스터 운영 경험도 있었지만, 문제를 위한 공부나 cka 시험에 나오는 개념이 어디까지인지 모르는 상태였다.작년 6월에 cka 자격증 취득을 위해 우선 결제부터 했고, 2026년 3월 7일 자격증을 취득했다.시험이 2025년부터 helm, kustomize,install이 추가되었고, 트러블슈팅 문제도 조금 더 까다로워졌다. 시험 시작 전에 환경 체크를 하는데, 감독관과 채팅을 주고 받으면서 안내사항을 따르면 된다. 환경 체크를 다 했으면 감독관이 시험 시작을 수동으로 하는데, 첫 환경 체크시 환경 체크를 다 했는데도 감독관이 5분 이상 채팅이 없었고,, 두번째 환경 체크일때는 환경체크 하다가 모니터 선이 나가서 화면이 꺼져버렸따,, 그..
apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: app-ingress namespace: ingress-nginx annotations: kubernetes.io/ingress.class: nginxspec: rules: - http: paths: - path: / pathType: Prefix backend: service: name: nginx port: number: 80 - path: /app pathType: Prefix backend: service:..
apiVersion: apps/v1kind: Deploymentmetadata: name: nginx-deployment labels: app: nginxspec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 spec.selector.matchLabels 와 spec.template.metadata.labels는 같아야하고, 각각의 역할은 spe..
문제워커 노드 cka-pratice-node1에 /opt/course/packages/의 .deb 패키지로 containerd 설치하기 해결1. dpkg로 설치dpkg -i /opt/course/packages/*.debapt-get install -f -y2. containerd 설정 생성mkdir -p /etc/containerdcontainerd config default > /etc/containerd/config.toml3. systemd cgroup 드라이버 설정sed -i ‘s/SystemdCgroup = false/SystemdCgroup = true/’ /etc/containerd/config.toml4. 서비스 시작 및 자동 시작 설정systemctl daemon-reloadsystem..
문제production 네임스페이스에서 web-frontend 디폴로이먼트의 파드가 pending 상태임. 원인 파악 및 해결 해결priorityClass 생성하고 deployment가 새 priorityClass를 사용하도록 수정apiVersion: scheduling.k8s.io/v1kind: PriorityClassmetadata: name: high-priorityvalue: 1000000preemptionPolicy: Never deployment yaml에 spec.template.spec에 priorityClassName 추가preemptionPolicy: Never → 강제는 아님, 즉 밀어내지 않음
cka를 공부하다가, daemonset을 생성하는 문제가 나왔고조건은 컨트롤플레인 포함 모든 노드에서 실행되게끔 한다는 것이다cat spec.tolerations에 effect: NoSchedule, operator: Exists를 추가함 데몬셋은 기본 정의 자체가 클러스터 내의 모든 노드에 파드를 하나씩 띄우는 것이다. 보통 컨트롤 플레인 노드에는 node-role.kubernetes.io/master:NoSchdule과 같은 taint가 배치되어 있는데, 일반적인 데몬셋은 이 taint 때문에 컨트롤플레인에는 배치되지 못하는데, tolerations를 넣음으로써 방해물을 제거하였다.
로그를 볼려면 파드 안에 들어가서 봐야함k exec [파드이름] -- cat /log/app.log persistentVolumeReclaimPolicy1. retain: pvc가 삭제되면 pv는 삭제되지 않고 상태가 released로 바뀐다. 데이터는 그대로 남아 있음2. recycle: pvc가 삭제되면 kubelet이 볼륨 내부 데이터 삭제하면 pv는 available이고 다른 pvc가 바로 재사용이 가능함 finalizers: kubernetes.io/pvc-protectionpvc를 삭제하는데 terminating에 걸리는 이유는 pvc에는 기본적으로 finalizers: kubernetes.io/pvc-protection이 있고, pvc를 참조중인 리소스가 완전히 정리될때까지 삭제를 막는 설정..
파드 이미지 바꾸기이미 실행중인 파드 이미지를 파드 중단없이 바꿀수 있나?deployment 이미지는 명령어 한 줄로 이미지를 바꿀 수 있다k set image deployment/[deployment이름] [컨테이너이름]=[이미지] 파드는 이미지를 변경하려면 컨테이너를 재생성해야한다. k set image pod/[파드이름] [컨테이너이름]=[이미지] 로 바꾸더라도 kubelet이 재시작시 원래 이미지로 돌아갈 수 있다 서비스 생성k expose pod [파드이름] --name= --port= --target= --type= pending , error 이유 찾기k describe pod [파드이름]으로 봤을때, events섹션에 이면, 노드 할당 문제, 스케줄러 문제, 리소스 부족 같은 원인들임 ..
작업 클러스터는 k8s이고, 미리 준비된 노드의 NodePort를 통해 개별 파드를 expose되도록 서비스를 구성하기서비스 타입을 NodePort라고 하고, 파드의 label를 서비스의 selector로 매칭시킨다 파드 yamlmetadata: labels: app: pod-a 서비스 yamlapiVersion: v1kind: Servicemetadata: name: spec: type: NodePort selector: app: pod-a ports: - port: targetPort: nodePort:
hostpath 볼륨을 사용해서 노드의 /var/log/webapp 디렉토리를 파드 내부의 /log 경로에 마운트 할 것- name: webapp- image name: kodekloud/event-simulator- volume hostPath: /var/log/webapp- volume mount: /logapiVersion: v1kind: Podmetadata: name: webappspec: containers: - name: webapp image: kodekloud/event-simulator volumeMounts: - name: webapp-log mountPath: /log volumes: - name: webapp-log hostPath: ..