목록클라우드/K8S (11)
컬쥐네 다락방
Workload-Controller Replication Controller apiVersion: v1 kind: ReplicationController metadata: name: myweb-rc spec: replicas: 3 selector: # 항상 라벨 중 하나를 포함해야한다. app: web # Pod Configure template: metadata: labels: app: web spec: containers: - name: myweb image: httpd ports: - containerPort: 8080 protocol: TCP yaml 파일을 사용해 생성 kubectl create -f myweb-rc.yaml replicationcontroller/myweb-rc created ..
Pod Lifecycle/ Lifetime Pod의 상태 Pending : 파드가 쿠버네티스 클러스터에서 승인됐지만 하나 이상의 컨테이너가 설정되지 않았고, 실행할 준비가 되지 않은 상태. 여기에는 파드가 스케쥴되기 이전까지의 시간 뿐 아니라 네트워크를 통한 컨테이너 이미지 다운로드 시간도 포함된다. -> 스케쥴링되기 전, 이미지 받기 전, 컨테이너가 준비 되기 전 상태 Running : 파드가 노드에 바인딩되었고, 모든 컨테이너가 생성되었다. 적어도 하나의 컨테이너가 아직 실행중이거나, 시작 또는 재시작 중에 있다. -> 컨테이너가 실행 중, 실행 전, 재시작 중인 상태 Succeeded : 파드에 있는 모든 컨테이너들이 성공적으로 종료되었고, 재시작되지 않을 것이다. -> 정상 종료 Failed : ..
Label & LabelSelector https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/labels/ https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/common-labels/ Label pod들에 라벨을 붙여 설명을 달아주는 것. 레이블 확인 kubectl get pods --show-labels kubectl get pods --show-labels -n dev NAME READY STATUS RESTARTS AGE LABELS myweb 1/1 Running 0 44m run=myweb 레이블 추가 kubectl label pods myweb APP=..
네임스페이스 리소스를 분리하는 역할 서비스 마다 분리 사용자 마다 분리 환경: 개발, 스테이징, 프로덕션 등 서비스. DNS 이름이 분리되는 용도이다. RBAC: 권한을 NS에 설정 https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/namespaces/ kubectl get namespaces kubectl get ns kubectl get pods --all-namespaces kubectl get pods -n kube-system kube-system : Kubernetes의 핵심 컴포넌트 kube-public : 모든 사용자가 읽기 권한을 가지고 있음 kube-node-lease : 노드의 HeartBeat 체크를 위한 Le..
Workload - Pod 파드 : 컨테이너의 모음 쿠버네티스가 관리할 수 있는 가장 작은 워크로드이다. 파드 생성 및 관리 명령형 커맨드로 파드 생성 kubectl run myweb --image httpd파드 목록 확인 kubectl get pods특정 파드 확인 kubectl get pods myweb파드 상세 정보 kubectl get pods -o wide kubectl get pods -o yaml kubectl get pods -o json kubectl describe pods myweb . . .애플리케이션 로그 kubectl logs myweb파드 삭제 kubectl delete pods mywebYAML 파일로 파드 정의 myweb.yaml apiVersion: v1 kind: Pod..
Kubernetes Objects https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/kubernetes-objects/ Object는 리소스를 뜻한다. 오브젝트를 만드는 방법에는 명령 방식과 yaml 방식이 있는데 보통 yaml 방식을 주로 사용한다. kubectl -> 클라이언트 도구 어떤 명령을 내리면 API를 통해 API Server에 요청이 간다. 오브젝트 명세(Spec)와 상태(Status) 명세(Spec)을 우리가 오브젝트에 설정해주고 상태(Status)는 현재 상태를 k8s이 알려준다. 오브젝트 파일 구성 apiVersion: apps/v1 #필수 지원하는 오브젝트의 버전 kind: Deployment #필수 Objec..
Kubespray 이번엔 kubeadm이 아닌 Kubespray를 설치해본다. kubeadm은 수동으로 모듈을 하나씩 설치하지만 kubespray는 Ansible 기반의 배포툴로 매우 간단하다. https://kubernetes.io/ko/docs/setup/production-environment/tools/kubespray/ https://kubespray.io/#/ https://github.com/kubernetes-sigs/kubespray 구성 목표 Control Plane 1 Work Node 3(1 Control Plan + 2 Woker Node) CPU: 2, Memory 3GB 설치 순서 VM 구축 Inventory 서버에 모든 서버의 SSH 키 복사 kubespray 다운로드 Ans..
k8s 클러스터 업그레이드 업그레이드 순서 쿠버네티스의 버전차이(skew) 정책에 따라 업그레이드 순서를 지키지 않으면 작동에 오류가 생길 수 있다. 버전 차이 정책을 자세히 살펴보고 업그레이드하고자 하는 쿠버네티스의 구성 요소와 지원하는 버전 차이를 확인 후 진행하도록 한다. 보통 다음과 같은 순서로 진행된다. kube-apiserver kube-controller-manager, kube-cloud-controller-manage, kube-scheduler kubelet(Control Plane -> Worker Node) kube-proxy(Control Plane -> Worker Node) Control Plane(api -> cm, ccm, sched -> let,proxy) --> Work..