⚙️ Ops/Kubernetes2023. 4. 7. 22:59Kubernetes Service & Service Discovery

💡 Service 노드의 파드는 기본적으로 외부통신이 안되는 내부망의 환경에 있다 Service란 Pod의 논리적 집합이며 어떻게 접근할지에 대한 정책을 정의해놓은 것 Service는 기본적으로 Load Balancing 과 Port Forwarding 기능을 포함한다 Label Selector를 통해 노출시킬 오브젝트의 레이블을 지정하는 방식이 주로 쓰인다 외부에 노출시킬때 4가지 타입이 있다 ClusterIP (default) - 클러스터 내부 통신용 NodePort - 노드IP:Port 의 방식을 통해 외부에서 접근 (NAT), 30000번대 포트 Load Balancer - 외부의 Load Balancer를 사용하는 방법 ExternalName - kube-dns로 DNS를 이용하는 방법 💡 Se..

⚙️ Ops/Kubernetes2023. 4. 7. 22:56Kubernetes DaemonSet

💡 DaemonSet 클러스터 전체에서 공통적으로 사용되는 pod를 띄울때 사용하는 컨트롤러 ex: 로그수집기나 노드를 모니터링하는 pod 등 클러스터 전체에 항상 실행시켜 둬야 하는 pod를 실행할때 사용 taint와 tolleration을 사용하여 특정 노드들에만 실행가능 (tolleration은 taint보다 우선순위가 더 높다) Yaml 생성 # DaemonSet 생성 apiVersion: apps/v1 kind: DaemonSet metadata: name: test-elasticsearch namespace: kube-system labels: k8s-app: test-logging spec: selector: matchLabels: name: test-elasticsearch updateSt..

⚙️ Ops/Kubernetes2023. 4. 6. 22:33Kubernetes StatefulSet

💡 StatefulSet 어플리케이션의 상태를 저장하고 관리하는 쿠버네티스 오브젝트 replication controller와 같은 복제본을 가지고 있는 컨트롤러를 의미함 기존 Pod를 삭제하고 생성할 때 상태가 유지되지 않는 한계가 있고 삭제-생성을 하면 새로운 가상환경이 된다 하지만 StatefulSet으로 생성되는 Pod는 영구 식별자를 가지고 상태를 유지시킬 수 있다 Yaml 기반 생성 //myapp-sts.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: myapp-sts spec: selector: matchLabels: app: myapp-sts serviceName: myapp-svc-headless replicas: 2 templat..

⚙️ Ops/Kubernetes2023. 4. 6. 22:31Kubernetes Deployment

💡 Deployments replicaset의 상위 오브젝트 replicaset에 없는 배포 작업의 세분화, 롤링업데이트, revision 등의 기능을 사용 가능 Yaml & kubectl 기반 Deployment 생성 # 생성, --replicas=3 으로 레플리카 수 지정 가능 kubectl create deployment [deploy-name] --image=[image-name] --dry-run=client -o yaml > [yaml-name] # Yaml 생성 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: ..

⚙️ Ops/Kubernetes2023. 4. 6. 22:30Kubernetes Labels

💡 Labels 쿠버네티스 객체를 식별할 수 있고, 그룹으로 구성 가능한 기능 좋은 Use-Case는 Pod에 배치된 어플리케이션을 기반으로 그룹핑 하는것과 환경이나 고객 & 팀 & 소유자 & 릴리즈 버전에 따라 그룹화 하는 다양한 레이블 규칙 개발 가능 리소스를 생성할때 레이블을 무조건 지정해서 사용하기 커밋 컨벤션 처럼 레이블 컨벤션을 도입하기 Pob Template 활용, 파드 템플릿은 쿠버네티스 컨트롤러에서 파드를 생성하기 위한 manifest 파일임 공통적인 옵션들에 대한 레이블 리스트 만들기 (어플리케이션id, 버전, 소유자, 환경, 릴리즈 버전 등) 더 광범위한 레이블 리스트 만들기 쿠버네티스에서 추천하는 레이블 사용 Lable List Exsample # 쿠버네티스 추천 레이블 apiVer..

⚙️ Ops/Kubernetes2023. 4. 6. 22:28Kubernetes Namespace

💡 Namespace 물리 클러스터 기반의 가상 클러스터, 기본 네임스페이스는 default 이다. 같은 네임스페이스 내에서 리소스의 이름은 중복 불가능 Kubectl 기반 Namespace 생성 # 1. yaml의 metadata 하위 name: 에 지정해도 됨 # 2. 리소스를 생성할때 -n [namespace-name] 으로 옵션 지정도 가능 # 3. kube-node-lease, kube-system, kube-public 네임스페이스는 사용하지 않는게 좋음 # Namespace 생성 kubectl create namespace [namespace-name] # Namespace 조회 kubectl get ns # 기본 Namespace의 모든 Resource 조회 kubectl get all -..

⚙️ Ops/Kubernetes2023. 4. 6. 22:27Kubernetes Pod

💡 Pod 클러스터 안에서 배포되는 가장 작은 단위의 객체 기본 개념 1개 이상의 컨테이너를 모아놓은 것으로 쿠버네티스 어플리케이션의 최소 단위 Pod는 노드IP와 별개로 고유IP를 할당 받으며, Pod 안의 Container들은 그 IP를 공유한다 파드 안의 컨테이너들은 동일한 볼륨과 연결이 가능하다 Pod의 Lifecycle Pending 단계로 시작해서 컨테이너 실행이 성공하면 OK, 실패시 Pendind & Failed Pod 실행 실패 시 kubectl logs [pod-name] | events 을 입력해 실패 이벤트 로그를 확인 Kubectl 기반 Pod 생성 & 관리 # Pod 생성 kubectl run [pod-name] --image=[image-name] --dry-run=client..

image