본문 바로가기

728x90

Infra

(45)
쿠버네티스 입문 (10) - 스토리지 클래스와 AWS # What do want? apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mongo-pvc spec: storageClassName: cloud-ssd accessModes: - ReadWriteOnce resources: requests: storage: 7Gi --- # How do we want it implemented apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: cloud-ssd provisioner: kubernetes.io/aws-ebs parameters: type: gp2 - 일종의 호스트 기준으로 작성했던 스토리지를 스토리지 클래스로 바꾼다. - 장애 해결..
쿠버네티스 입문 (9) - 베스천 서버와 k8s 실행 - 베스천 서버를 만들어서, 터미널을 실행한다. - 인바운드를 지정할 수 있으니 더욱 보안적으로 유리하다. 1: Install eksctl ------------------ curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp sudo mv /tmp/eksctl /usr/local/bin 2: Update AWS CLI to Version 2 ------------------------------ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o..
쿠버네티스 입문 (8) - 퍼시스턴트 apiVersion: apps/v1 kind: Deployment metadata: name: mongodb spec: selector: matchLabels: app: mongodb replicas: 1 template: metadata: labels: app: mongodb spec: containers: - name: mongodb image: mongo:3.6.5-jessie volumeMounts: - name: mongodb-persistent-storage mountPath: /data/db volumes: - name: mongodb-persistent-storage persistentVolumeClaim: claimName: mongo-pvc --- apiVersion: v1 kind: ..
쿠버네티스 입문 (7) - 네트워킹 - 보통은 위 구조와 마찬가지로 역할별로 파드를 나누는 게 편하다. - 하나에 다 넣으면, 나중에 운영하기 너무 어려움 - 쿠버네티스는 kube-dns를 통해서 각 파드가 어떤 IP를 가지는 지 관리를 한다. - 예를 들어 프론트 파드가 lookup을 통해, 백엔드 파드를 찾을 수 있는 것을 의미한다. - 네임스페이스는 쿠버네티스에서 파드별로 묶을 수 있는 시스템 분할 방식이다. apiVersion: v1 kind: Pod metadata: name: mysql labels: app: mysql spec: containers: - name: mysql image: mysql:5 env: - name: MYSQL_ROOT_PASSWORD value: password - name: MYSQL_DATABASE..
쿠버네티스 입문 (6) - 디플로이먼트 - 레플리카세트처럼 파드들을 유지하고 관리하는 점에서 유사하지만 한 가지 추가된다. - 바로 롤링 업데이트가 가능하다. 즉, 레플리카세트 기준으로 안전하게 배포하거나 이전 상태로 롤백하는 게 가능하다. apiVersion: apps/v1 kind: Deployment metadata: name: webapp spec: replicas: 2 minReadySeconds: 30 selector: matchLabels: app: webapp template: metadata: labels: app: webapp spec: containers: - name: webapp image: richardchesterwood/k8s-fleetman-webapp-angular:release0-5 --- apiVersion..
쿠버네티스 입문 (5) - 레플리카세트 - Pods는 언제든지 중지될 수 있기 때문에 레플리카 세트로 Pods 묶어서 집합체로 만든다. - k8s 레플리카 세트로 인스턴스를 관리한다. apiVersion: apps/v1 kind: ReplicaSet metadata: name: webapp spec: replicas: 1 selector: matchLabels: app: webapp template: metadata: labels: app: webapp spec: containers: - name: webapp image: richardchesterwood/k8s-fleetman-webapp-angular:release0-5 --- apiVersion: v1 kind: Pod metadata: name: queue labels: app: qu..
쿠버네티스 입문 (4) - 서비스 - 서비스는 파드를 안정적으로 운영하기 위한 묶음이다. - 포트를 지정할 수 있다. apiVersion: v1 kind: Service metadata: name: fleetman-webapp spec: ports: - name: http port: 80 nodePort: 30080 selector: app: webapp release: "0" type: NodePort - 앞에 만든 파드를 서비스로 연결 - type이 여러개가 있는데, CusterIp는 내부에서만 쓴다는 얘기 (브라우저 접근 x), NodePort는 외부에 노출이 가능한 옵션 마지막으로 LoadBalancer는 클라우드 환경에서 쓰는 옵션 C:\Users\tmddn\OneDrive\바탕 화면\kubernetes>kubectl descr..
쿠버네티스 입문 (3) - 파드 - Pods는 각 컨테이너를 감싸서 1:1의 관계를 맺는다. (1:다의 관계가 될 수도 있음) - 쿠버네티즈는 결론적으로 파드들을 관리한다. - 즉, 가장 기본이 되는 배포 단위라고 할 수 있다. Pod 작성을 위한 yaml 파일을 작성한다. 이미지는 도커 허브에서 끌어온다. apiVersion: v1 kind: Pod metadata: name: webapp labels: app: webapp release: "0" spec: containers: - name: webapp image: richardchesterwood/k8s-fleetman-webapp-angular:release0 --- apiVersion: v1 kind: Pod metadata: name: webapp-release-0-5 la..

728x90