반응형 쿠버네티스21 CKAD 자격증 취득! 지난달 CKA 자격증 취득에 이어서 CKAD 자격증도 따게 되었다. 이것도 작년에 사놓은 바우처가 올해 12월 까지 였는데 CKA 자격증 준비하면서 공부했으니 잊어버리기 전에 같이 해보는게 좋을것 같다는 생각을 했다. CKAD 를 먼저 본 분들의 후기를 보면 최근에 본 글들이 많이 없었다. 거의다 작년에 변경되기 전에 시험을 보신분들이 많았다. 일단 변경된 시험 범위는 아래 와 같다. CKA 와 CKAD 문제 구성의 차이점 - docker, heml CKA 준비할때에는 k8s 의 리소스를 생성하고 수정하는 것은 많이 연습을 해봤는데 docker 나 helm 까지는 많이 해보지는 않았다. 그래서 부랴부랴 udemy 강의에서 변경된 부분에 대한 강의만 다시 들어보았다. 강의와 연결된 실습도 크게 어려움없이 .. 2022. 5. 2. CKA 자격증 시험보다가 한시간 넘게 국제 전화 한 이야기.... 험난하고 많은 일이 있었던 CKA 자격증 시험을 준비하는 과정과 시험 과정에서 발생했던 어이없는(?) 상황에 대해서 이야기 해보려한다. 이야기 순서는 다음과 같다. 1. CKA 시험 준비 2. 2번의 Fail. 3. 다시 바우처 구입과 재시험 & 시험봐야 하는데 Proctor는 어디에?? 4. 합격 후기 5. 남겨진 문제들 그럼 이야기를 시작해보자. 1. CKA 시험준비 지금이 2022년이고 어느덧 4월이다. 나는 바우처를 작년 5월에 구입을 했다. 올해도 똑같은 해택을 줄지는 모르겠지만 작년에 있었던 Virtual KubeCon 을 참석한 혜택으로 50% 할인 가격으로 CKA 바우처를 구입할수 있었다. 그리고 나도 CKA를 응시했던 많은 분들이 들었던 Udemy 강의(Certified Kubernete.. 2022. 4. 9. [k8s] Network Policy namespaceSelector Network Policy 에 관한 설정들 참고할 만한것 몇가지 작성해본다. 아래 두개의 NetworkPolicy 는 아래 조건을 만족한다. test1 네임스페이스에서 pod 끼리는 전부 호출 가능하다 test1 네임스페이스에서 test2로만 호출가능하며 포트는 80 포트를 사용한다. apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: np namespace: test1 spec: podSelector: {} policyTypes: - Egress egress: - to: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: test2 - ports: - port: 80 pr.. 2022. 3. 28. [k8s] drain 명령어 kubectl drain 노드명 - drain 명령어를 사용하게 되면 해당 노드의 pod 를 다른 노드로 옮긴다. - 실제로는 pod 를 옮기는게 아니라 다른 노드에 재 생성한다. - 데몬셋을 무시하고 진행할 경우에는 --ignore-daemonsets 옵션을 사용한다. 아래와 같이 myserver-002와 myserver-003 에 pod 가 각각 deploy 되어있다. root@myserver-001:~# kubectl get po -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES rollout-nginx-74695fdcd-5trw5 1/1 Running 0 3m55s 10.32.0.2 myserver-002 r.. 2021. 11. 4. [K8S] static pod 에 대해서 몇가지. static pod 에 대해서 알아보다가 몇가지 기억할 만한 것들을 적어본다. - master node 의 /etc/kubernetes/manifests 하위에는 yaml 파일들이 있는데 이 yaml 파일들은 마스터 노드가 실행시에 자동으로 생성되는 static pod 들이다. 보통 etcd, api-server등이 있다. - node에 생성된 static pod 를 지우기 위해서는 해당 노드에 가서 지워야 한다. 지우기 위해서는 노드 안에 있는 kubelet의 config 파일(/var/lib/kubelet/config.yaml) 에 있는 staticPodPath 값을 찾아서 path 위치에 있는 yaml 파일을 지워야 한다. kubectl delete pod 로 지우면 다시 생성된다. - 조회는 가능.. 2021. 2. 4. [K8S] apiserver 에 SAN(Subject Alternative Name) 추가 Lens 라는 툴을 사용해 보려고 host pc 에서 VM 에 있는 K8S 를 연결시켜보려고 시도를 해봤다. 2021/01/05 10:08:52 http: proxy error: x509: certificate is valid for 10.96.0.1, 10.0.1.7, not [ip] 그런데 위와 같은 에러 메세지가 나면서 연결이 되지 않았다. 위에 [ip] 는 host pc 의 ip 이다. Google에서 찾아보니 인증서에 나의 로컬 ip 가 들어가 있지 않아서 라는 이야기가 나왔다. 그럼 현재 k8s 에 있는 apiserver 인증서 내용을 살펴보자. openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text 위와 같이 입력하면 apiserver.crt 파.. 2021. 1. 5. 쿠버네티스 입문 10장 컨피그맵 ConfigMap 컨테이너에 필요한 환경 설정을 컨테이너와 분리해서 제공하는 기능 사용 설정apiVersion: v1 kind: ConfigMap metadata: name: config-dev data: DB_URL: localhost DB_USER: myuser DB_PASS: mypass DEBUG_INFO: debug 컨피그맵 일부만 사용spec: containers: - name: image: env: - name: DEBUG_LEVEL valueFrom: configMapKeyRef: name: config-dev key : DEBUG_INFO .env[].valueFrom 사용 .env[].valueFrom.configMapKeyRef 를 통해 이미 정의된 configmap 사용 컨피그맵 전.. 2020. 12. 30. 쿠버네티스 입문 - 8장 인그레스 Ingress 개념 클러스터 외부에서 안으로 접근하는 요청들을 어떻게 처리할지 정의해둔 규칙 인그레스는 규칙들의 모음이며 실제로는 인그레스 컨트롤러가 동작시킨다. 설정 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: foo.bar.com http: paths: - path: /foos1 pathType: Prefix backend: service: name: s1 port: number: 80 - path: /bars2 pathType: Prefix backend: service: name:.. 2020. 12. 30. 쿠버네티스 입문 - 7장 서비스 Service 개념 동적으로 변하는 Pod 들을 고정적으로 접근할 때 사용한다. 서비스는 주로 L4영역에서 통신할 때 사용한다. 서비스 타입 ClusterIP default, 클러스터 내부에서만 사용가능 NodePort 모 모든 노드에 지정된 포트를 할당함. 외부에서 접근 가능 LoadBalancer EXTERNAL-IP 생성 외부에서 Pod 접근 가능 할수 있게 해줌 ExternalName 서비스를 .spec.externalName 필드에 설정한 값과 연결한다. 클러스터 안에서 외부에 접근할 때 주로 사용한다. 서비스 사용 설정 apiVersion: v1 kind: Service metadata: name: my-service spec: type: ClusterIP selector: app: MyApp.. 2020. 12. 30. 쿠버네티스 입문 - 5장 파드 Pod 개념 쿠버네티스에서 실제로 컨테이너를 묶어서 관리하는 단위 설정 apiVersion: v1 kind: Pod metadata: name: simple-pod (Pod 이름) labels: app: simple-pod (오브젝트를 식별하는 레이블) spec: containers: - name: simple-pod (컨테이너 이름) image: ~~~ (컨네이너에서 사용할 이미지) ports: - containerPort: 8080 Pod 생명주기 Pending -> Running Successed Failed Unknown 컨테이너 진단 ivenessProbe 컨테이너가 실행됐는지 확인 실패시 컨테이너를 종료시키고 재시작 정책에 따라서 재시작 readinessProbe 컨테이너 실행된 후 실제로 서.. 2020. 12. 23. [K8S] affinity 를 이용해서 노드 중복 피하기. 현재 시스템의 구성은 다음과 같다 MasterNode, Worker1, Worker2 여기에 테스트를 위해서 mysql 을 열려놨다. 해당 yaml 은 다음과 같다. apiVersion: apps/v1 kind: Deployment metadata: namespace: spring name: deploy-mysql labels: app: mysql spec: replicas: 2 selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql:5.7 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name.. 2020. 11. 20. [K8S] PV & PVC 1. PV (Persistent Volume) - PV는 클러스터 리소스 이다. - volumeModes Filesystem : Pod 의 디렉토리에 마운트 된다. Block - PersistentVolumeReclaimPolicy (PVC 삭제시 PV 데이터에 대한 정책) - Retail : 그대로 보존 - Recycle : 재사용시 기존 pv 데이터들 삭제 후 재사용 (이건 사용 안함) - Delete : 볼륨 삭제 - RecaimPolicy Update kubectl patch pv -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}' 2. PVC (Persistent Volume Claim) pv 와 pvc 는 1:1 바인딩이며 pvc 가 요청하는 .. 2020. 10. 16. 이전 1 2 다음 728x90 반응형