구글 쿠버네티스 워크로드 이해하기 | Google Kubernetes Workload
🕸️ 구글 쿠버네티스(Kubernetes)의 배포와 포드 네트워킹, 볼륨에 대한 내용을 공부합니다.
구글 쿠버네티스 워크로드 이해하기 | Google Kubernetes Workload
KEYWORDS
Kubernetes 배포, 쿠버네티스 배포, 쿠버네티스 포드 네트워킹, Kubernetes, GKE
kubectl Command
Kubectlㅣ 관리자가 Kubernetes 클러스터를 제어하는 데 사용하는 유틸리티입니다.Kubectltransforms your command-line entires into API callskubectl은 명령줄 입력 내용을 API 호출로 변환하여 선택한 Kubernetes 클러스터 내의 kubeAPI 서버로 전송합니다.
- Use
kubectlto see a list of Pods in a clusterkubectl get podsㅣkubectl은 이 명령어를 API 호출로 변환하고 클러스터 제어 영역 서버에서 HTTPS를 통해 kubeAPI 서버로 전송합니다.kubeAPI서버는etcd를 통해 요청을 처리하고, HTTP를 통해kubectl에 결과를 반환합니다.kubectl은 API 응답을 해석하여 명령 프롬프트에서 관리자에게 결과를 표시합니다.
kubectlmust be configured firstkubectl은 설정 파일을 필요로 합니다 ($HOME/.kube/config).- 설정 파일은 클러스터의 이름과 자격 증명 정보를 포함합니다.
- 현재 설정을 확인하려면
kubectl config view명령어를 사용합니다.
- Connect to a Google Kubernetes Engine Cluster
kubectl config viewㅣkubectl명령어 자체의 구성 상태를 알려줍니다.gcloud명령줄 도구와kubectl을 설치한 환경에서gcloud get credentials명령어를 사용하여 사용자 인증 정보를 가져올 수 있습니다.
- The
kubectlcommand syntax has several parts- Type ㅣ 명령어가 적용되는 Kubernetes 객체를 정의합니다.
kubectl에 어떤 작업을 어떤 객체에 수행할 것인지 알립니다. - Name ㅣ Type에 정의된 객체를 지정합니다.
- Type ㅣ 명령어가 적용되는 Kubernetes 객체를 정의합니다.
Deployments
- Deployments declare th state of Pods
- Pod 사양을 업데이트할 때마다, 변경된 Deployment 버전과 일치하는 새 ReplicaSet이 생성됩니다.
➔ 배포는 제어된 방식으로 업데이트된 Pod를 롤아웃하는 방법을 제공합니다.- 기존 Pod는 이전 ReplicaSet에서 제거되고 새 ReplicaSet의 새로운 Pod로 대체됩니다.
- Pod 사양을 업데이트할 때마다, 변경된 Deployment 버전과 일치하는 새 ReplicaSet이 생성됩니다.
- Deployment는 stateless 앱용으로 설계됩니다.
➔ Stateless 앱 ㅣ 데이터나 앱 상태가 클러스터나 영구 스토리지에 저장되지 않습니다. - Deployment is a two-part process
- 원하는 상태는 Pod의 특성이 포함된 Deployment YAML 파일에 설명되며, Pod를 운영 가능하게 실행하고 수명 주기 이벤트를 처리하는 방법이 함께 제공됩니다.
➔ 이 파일을 Kubernetes 제어 영역에 제출하면, 배포 컨트롤러가 생성되며, 컨트롤러는 원하는 상태를 실현하고 유지하는 역할을 합니다. - 배포 ㅣ 상태를 선언하는 Pod의 상위 수준 컨트롤러입니다.
- 원하는 상태는 Pod의 특성이 포함된 Deployment YAML 파일에 설명되며, Pod를 운영 가능하게 실행하고 수명 주기 이벤트를 처리하는 방법이 함께 제공됩니다.
- Deployment has three different lifecycle states
- Progressing state, Complete state, Failed state
Pod Networking
- Pod ㅣ 공유된 스토리지와 네트워킹을 갖춘 컨테이너 그룹입니다.
- Kubernetes의 ‘Pod별 IP’ 모델을 기반으로 하며, 각 Pod에 단일 IP 주소가 할당되고, Pod 내의 컨테이너들은 해당 IP 주소를 포함하여 동일한 네트워크 네임스페이스를 공유합니다.
- Your workload doesn’t run in a single pod
- 워크로드는 서로 통신해야 하는 다양한 앱으로 구성됩니다.
- 각 Pod에는 고유한 IP 주소가 있으며, 노드에서 Pod는 노드의 루트 네트워크 네임스페이스를 통해 서로 연결됩니다.
➔ 해당 VM에서 Pod가 서로를 찾고 연결합니다. - 루트 네트워크 네임스페이스는 노드의 기본 NIC에 연결되며, 노드의 VM NIC를 사용하여 트래픽을 전달합니다.
➔ Pod의 IP 주소를 노드가 연결된 네트워크에서 라우팅할 수 있어야 합니다.
- Node get pod IP addresses from address ranges assigned to your Virtual Private Cloud
- GKE에서 노드는 Virtual Private Cloud (VPC)에 할당된 주소 범위에서 Pod의 IP 주소를 가져옵니다.
- VPC는 GCP 내에서 배포된 리소스에 대한 연결을 제공하는 논리적으로 격리된 네트워크입니다.
➔ 이 리소스에는 Kubernetes 클러스터 Compute Engine 인스턴스, App Engine 가변형 인스턴스 등이 포함됩니다.
- Addressing the Pods
- GKE Cluster Node ㅣ GKE가 맞춤 설정하고 관리하는 컴퓨팅 인스턴스입니다. 해당 머신이 있는 VPC 서브넷의 IP 주소가 할당됩니다.
- VPC 기반 GKE 클러스터는 Pod에 대해 별도의 별칭 IP 범위를 생성할 수 있습니다.
Volumes
Kubernetes Offers Storage Abstraction Options
- Volumes ㅣ Pod에 스토리지를 연결하는 방법입니다.
- 일부 Volumes는 일시적입니다.
- 일부 Volumes는 지속적입니다.
- Persistent Storage Options
- Block storage 또는 networked file systems로 이루어진 지속적인 스토리지 옵션을 제공합니다.
- Pod 외부에서 내구성 있는 스토리지를 제공합니다.
- Pod의 생애 주기와 독립적으로 존재할 수 있습니다.
- Pod 생성 전에 존재할 수 있으며, Pod가 이를 요청하여 사용할 수 있습니다.
Reference
This post is licensed under CC BY 4.0 by the author.