Kubernetes 학습/Udemy CKA with Practice Tests19 Udemy CKA(Lightning Lab) 1. SolutionHere is the solution for this task. Please note that the output of these commands have not been added here.To seamlessly transition from Kubernetes v1.29 to v1.30 and gain access to the packages specific to the desired Kubernetes minor version, follow these essential steps during the upgrade process. This ensures that your environment is appropriately configured and aligned with the .. 2024. 8. 13. Section 11 : Deploy with Kubeadm(+프로비저닝 중 문제점 해결과정) 전에 얘기한 바와 같이, 쿠버네티스 클러스터는 kubeAPI서버, etcd, controller 등 다양한 컴포넌트로 구성됩니다. 그리고 우리는 이러한 컴포넌트 간의 통신을 가능하게 하기 위한 보안과 인증서 관련한 몇 가지 요구사항도 보았습니다. 이러한 다양한 컴포넌트를 각각의 노드에서 개별적으로 모두 설치하고 configuration file들을 수정하여 컴포넌트가 서로를 가리키는지 확인하고 인증서가 잘 작동하는지 확인하는 것은 지루한 작업입니다. kubeadm 툴은 이러한 모든 작업을 처리함으로써 우리에게 도움을 줍니다.Stepskubeadm 툴을 사용해서 쿠버네티스 클러스터를 설정하는 단계를 대략적으로 살펴보겠습니다. 첫째, 클러스터를 구성하기 위한 여러 시스템 또는 프로비저닝된 가상머신이 있어야 .. 2024. 8. 11. Section 10 : Design and Install a k8s cluster Cofigure high availability클러스터의 마스터 노드가 없어진다면 어떻게 될까요? workers가 작동하고 있다면, 컨테이너가 살아있는 동안 어플리케이션은 작동합니다. 사용자는 실패할 때까지 앱에 접속할 수 있어요. 만약 컨테이너나 pod가 문제가 생겼다면? pod는 ReplicaSet에서 생성되었고, master의 replication Controller가 작업자에게 새 Pod의 Load를 지시합니다. 하지만 마스터는 사용할 수 없죠. pod의 재생성이 불가하고, node schedule도 설정할 수 없습니다. kube-apiserver도 사용이 불가하여, 관리 목적으로 kube control tool이나 API를 통해 외부적으로 클러스터에 액세스할 수 없습니다. 그래서 프로덕션 환경에.. 2024. 8. 10. KodeKloud - Test Record (section 9) 1. What is the MAC address assigned to node01?> ssh node01> ip address 2. We use Containerd as our container runtime. What is the interface/bridge created by Containerd on the controlplane node?> ip address show type bridge 3. If you were to ping google from the controlplane node, which route does it take? What is the IP address of the Default Gateway?> ip route 4. What is the port the kube-sche.. 2024. 8. 2. Section 9 : Networking 1. Prerequisite - Switching RoutingNetwork란 무엇일까요? 컴퓨터 A,B가 있고 노트북과 데스크톱, 클라우드 VM이 있는데 시스템 A가 어떻게 B와 연결되나요? 스위치에 연결하면 스위치는 두 시스템을 포함하는 네트워크를 만들어줍니다. 스위치에 연결하기 위해 각 호스트에 인터페이스가 필요합니다. 물리적이거나 가상으로요. 위 명령을 통해 호스트의 인터페이스를 확인할 수 있고, 예로 Eth0이란 이름의 인터페이스를 볼 수 있습니다. 스위치에 연결할 때 사용할 것이에요. ip addr 명령으로 링크가 올라가고, IP 주소가 할당되면 이제 컴퓨터는 스위치를 통해 서로 통신할 수 있습니다. 스위치를 통해 동일한 네트워크 상에서만 통신할 수 있고, 다른 네트워크로 패킷을 주고 받을 .. 2024. 7. 28. KodeKloud - Test Record (section 8) 1. The application stores logs at location /log/app.log. View the logs. You can exec in to the container and open the file:> k exec webapp -- cat /log/app.log 2. Configure a volume to store these logs at /var/log/webapp on the host. Use the spec provided below.Name: webappImage Name: kodekloud/event-simulatorVolume HostPath: /var/log/webappVolume Mount: /log > k edit pod webapp> k replcae --for.. 2024. 7. 20. Section 8 : Storage Introduction to Docker Stroage : 쿠버네티스 같은 컨테이너 오케스트레이션 도구 저장소를 이해하려면 먼저 저장소가 컨테이너로 어떻게 작동되는지 이해하는게 좋습니다. 먼저 Docker로 저장소가 어떻게 작동하는지 확인해봅시다. Docker의 저장소에 관해서는 2가지 메인 개념이 있습니다.1. Stroage Drivers2. Volume Dirvers Storage in Docker 시스템에 Docker를 설치하면 이 폴더 구조가 /var/lib/docker에 생성됩니다. AUFS 컨테이너라고 불리는 것 아래에 이미지 볼륨 등 여러개의 폴더가 있습니다. 이곳이 docker가 기본값으로 모든 데이터를 저장하는 곳이죠. 여기서 데이터란 Docker 호스트에서 실행되는 이미지 및 컨테이너.. 2024. 7. 20. KodeKloud - Test Record (section 7) 1. 아래 명령어를 통해 구성 요소의 정보를 알아낼 수 있음.> cat /etc/kubernetes/manifests/kube-apiserver.yaml 2. What is the Common Name (CN) configured on the ETCD Server certificate?> openssl x509 -in /etc/kubernetes/pki/etcd/server.crt -text 3.How long, from the issued date, is the Kube-API Server Certificate valid for?File: /etc/kubernetes/pki/apiserver.crt> openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text .. 2024. 7. 12. Section 7 : Security 클러스터 자체를 형성하는 호스트부터 시작해보자. 이런 호스트에 대한 모든 접근은 보안되어야 하고, 비밀번호 기반의 인증은 사용하지 않게 하며, SSH 키 기반의 인증만 가능하다. kubectl 명령어나 APU에 직접 접근할 때 모든 사용자의 접근은 kube-apiserver 상호작용하며 관리됩니다. 이 모든 요청은 kube-apiserver로 가게 되는데, kube-apiserver는 요청을 처리하기 전에 Authenticate(인증) 합니다. 이것을 통해 kube-apiserver 자체의 접근을 제어하는 것이고, 이때 사용되는 다양한 메커니즘이 있습니다. 1) 누가 클러스터에 접근할 수 있는가? (인증 메커니즘)2) 그것이 무엇을 할 수 있는가? (인가 메커니즘) 클러스터 구성 요소간의 모든 통신은 k.. 2024. 7. 12. KodeKloud - Test Record (section 6) 1. We need to take node01 out for maintenance. Empty the node of all applications and mark it unschedulable.-> kubectl drain node01 --ignore-daemonsets 2. How many pods are scheduled on node01 now in the default namespace?-> kubectl get pods -o wide 3. How many nodes can host workloads in this cluster? Inspect the applications and taints set on the nodes.-> k describe node | grep Taints 4. vers.. 2024. 7. 2. Section 6 : Cluster Maintenance 1. Operating System Upgrade 만약 여러개의 노드 중 하나가 다운됐다면, 쿠버네티스는 어떤 행동을 할까요?1. 노드가 즉시 다시 시작된다면, kubelet process가 시작되고, pod가 다시 online으로 돌아옵니다.2. 만약 node 다운이 5분 되었다면, 해당 노드에서 pod가 종료됩니다. 쿠버네티스가 죽은 것으로 여기고, pod가 replicaSet으로 생성되었다면, 다른 노드에 다시 생성할 것입니다. pod-eviction-timeout이라고 알려진 controller manager에 놓여진 것은, 기본적으로 5분이라는 디폴트 값을 설정해 놓습니다.다시 말해 노드가 오프라인이 될 때마다 마스터 노드는 최대 5분까지 기다립니다. 만약 pod-eviction-timeo.. 2024. 7. 2. KodeKloud - Test Record (section 5) 1. Rolling Update, Recreate [ 1 ] deployment .yaml 파일을 바꿀 때 set과 edit을 사용할 수 있다. 2. Commands [ 1 ] Create a pod with the given specifications. By default it displays a blue background. Set the given command line arguments to change it to green. > kubectl run webapp-green --image=kodekloud/webapp-color --dry-run=client -o yaml > kubectl run webapp-green --image kodekloud/webapp-color -- --color g.. 2024. 3. 11. Section 5 : Application Lifecycle Management 1. Rollout and Versioning : 처음 배포를 생성하면 새로운 Rollout은 새로운 revision을 생성합니다. 컨테이너 버전이 새것으로 업데이트 되면 새 Rollout이 트리거되고, 새로운 배포 revision을 생성합니다. 배포에 일어난 변화를 추적하고, 전버전으로 돌아갈 수 있게 돕습니다. 배포 전략에는 2가지가 있습니다. 1) 기존의 것을 삭제하고, 새로운 것을 배포하는 방법은 구 버전이 다운되고, 새로운 버전이 업데이트 되기 전 기간에 응용 프로그램이 다운되어 사용자가 사용이 불가합니다. 이 Recreate 전략은 기본적으로 잘 사용되지 않습니다. 2) 한꺼번에 전부 삭제하지 않고, 하나씩 삭제하며 새 버전을 올리는 방법이 있습니다. 이는 응용 프로그램이 다운되지 않고, 업.. 2024. 3. 10. KodeKloud - Test Record (section 3 & 4) 1. Manual Scheduling [ 1 ] (Pod의 삭제와 생성을 동시에) > kubectl replace --force -f nginx.yaml 2. Label & Selector [ 1 ] We have deployed a number of PODs. They are labelled with tier, env and bu. How many PODs exist in the dev environment (env)? Use selectors to filter the output > kubectl get pods --selector env=dev | wc -l > kubectl get all --selector env=prod (wc - l 을 추가하면 해당 개수를 나타내 줄 수 있음, 헤더 포함 /.. 2024. 2. 22. Section 4 : Scheduling & Logging, Monitoring 1. Manual Scheduling : 만약 클러스터에 스케줄러가 없을 때는 어떻게 할까요? 이때는 직접 Pod를 스케줄링 할 수 있습니다. 먼저 기본 스케줄링부터 알아보죠. Pod의 yaml 파일에는 nodeName 이라는 설정이 가능합니다. 스케줄러는 모든 Pod를 보고 이 속성이 없는 것을 찾습니다. 스케줄링 알고리즘을 실행해 Pod의 올바른 노드를 식별해서 지정합니다. 스케줄러가 없을땐 직접 설정해주면 됩니다. Pod의 yaml에 nodeName 속성에다가 노드의 이름을 작성해주면 되는 것이지요. 노드 이름은 생성할 때만 지정할 수 있습니다. 이미 노드에 속해있는 Pod는 노드를 변경할 수 없으며, 이를 가능하게 하는 방법은 바인딩 개체를 생성하고, Pod의 바인딩 API에 요청하는 것 입니다... 2024. 2. 22. Section 3 : Core Concepts k8s Controllers는 k8s에 숨은 두뇌입니다. k8s 객체 모니터링을 진행하고, 이에 반응합니다.Replication Controller: k8s 클러스터에 있는 단일 Pod의 다중 인스턴스를 실행하도록 도와 고가용성을 제공합니다. 항상 Pod가 실행되도록 보장합니다. 개수에 상관없이. 서로 다른 노드의 여러 Pod에 걸쳐 부하를 분산하는 데 도움이 되고, 수요가 증가하면 앱 스케일도 조정할 수 있습니다. (Replication Controller vs ReplicaSet 서로 비슷하지만 다르고, controller는 구식이다) 이에 대한 yaml 파일도 apiVersion, kind, metadata, spec으로 구성되어 있습니다. Replication Controller yaml 파일.. 2024. 2. 15. KodeKloud - Test Record (section 2) 1. Pods [ 1 ] Which nodes are these pods placed on? > kubectl get pods -o wide [ 해당 옵션으로 어떤 Node에 선정되었는지 볼 수 있었음 ] [ 2 ] Create a new pod with the name redis and the image redis123. Use a pod - definition YAML file. And yes the image name is wrong! > kubectl run redis —image=redis123 —dry-run=client -o yaml > redis.yaml [ Print the result (in YAML format) of updated nginx deployment with the ser.. 2024. 2. 14. Section 2 : ETCD & Components ETCD ETCD : 분산, 속도, 신뢰할 수 있으며 고가용성을 제공하는 분산 키-값 저장소입니다. 키값 저장소 : 정보를 문서나 페이지 형태로 보관합니다. 각 문서를 받고, 그 개인 데이터에 대한 모든 정보는 해당 파일에 저장됩니다. Etcd 컨트롤 클라이언트는 etcd의 커맨드라인 클라이언트 입니다. 키값 쌍을 저장하고 회수할 수 있습니다. etcd에서 사용되는 Raft 합의 알고리즘은 분산 시스템에서 일관성과 안정성을 보장하기 위해 설계된 분산 일관성 알고리즘입니다. Raft 알고리즘은 리더와 팔로워, 후보자 세 가지 역할로 분리되어 있습니다. 각 노드는 이러한 역할 중 하나를 가지며, 시스템이 동작하는 동안 상태를 전환할 수 있습니다. etcdctl은 etcd와 상호 작용하기 위한 CLI 도구입니.. 2024. 2. 12. Section 1,2 : Introduction & Cluster Architecture & Docker vs ContainerD 1. Introduction 객관식이 아니기 때문에 기술이 어떻게 작동하고, 작동하는지 알아야 한다. 공식 문서를 잘 찾는 방법이 중요합니다. 최신 시험은 2시간이 주어지고, 참고자료는 아래와 같습니다. 인증된 Kubernetes 관리자: https://www.cncf.io/certification/cka/ 시험 커리큘럼(주제): https://github.com/cncf/curriculum 후보자 핸드북: https://www.cncf.io/certification/candidate-handbook 시험 팁: http://training.linuxfoundation.org/go//Important-Tips-CKA-CKAD 노트, 문서 링크, 그리고 실습 문제의 답변들이 있는 저장소를 만들었습니다. 과정.. 2024. 2. 8. 이전 1 다음