⭐ Kubernetes & EKS (140) 썸네일형 리스트형 하나의 포드에서 멀티 컨테이너 실행하기 # 한 포드에 멀티 컨테이너 # 이전 생성된 yaml 파일을 복사하여 재사용 cp busybox-cmd-pod.yaml nginx-redis-pod.yaml vim nginx-redis-pod.yaml # 컨테이너 쪽에 2개의 컨테이너를 넣는게 중요하다. apiVersion: v1 kind: Pod metadata: name: nginx-redis-pod spec: containers: - name: nginx image: nginx ports: - containerPort: 80 - name: redis image: redis # 실행하기 kubectl create -f nginx-redis-pod.yaml kubectl get pod kubectl get pod -w # 2개의 컨테이너가 정상적으로 .. 초기 명령어 및 아규먼트 전달과 실행 # 초기 명령어 및 아규먼티 전달과 실행 쿠버네티스 공식 사이트 > pod overview > kind: apiVersion: v1 kind: Pod metadata: name: busybox labels: app: myapp spec: containers: - name: myapp-container image: busybox command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600'] vim busybox-cmd-pod.yaml kubectl create -f busybox-cmd-pod.yaml kubectl get pod - 실행되자 마자 CrashLoopBackOff 가 발생한다. - busybox는 서버의 형태가 아니고 애플리케이션이기 때문에 실.. 쿠버네티스 환경 변수 설정 - my-sql 비밀번호를 환경변수로 전달하기 # 쿠버네티스 환경 변수 설정 연습문제 kubectl get secret kubectl get secret -n kube-system kubectl get secret -n kube-system | wc -l kubectl get secret -n kube-system | grep default kubectl get secret -n kube-system default-token-tnx5c -o yaml # 인코딩 상태에서 내용을 확인하고 싶을때 kubectl describe secret -n kube-system default-token-tnx5c # 인코딩되어있는 정보를 디코딩 하여 보는 방법 kubectl get secret -n kube-system default-token-tnx5c -o yam.. Secret을 활용한 환경변수 설정 # Secret을 활용한 환경변수 설정 쿠버네티스 시크릿을 사용하면 비밀번호, OAuth 토큰, ssh 키와 같은 민감한 정보를 저장하고 관리할 수 있다. 시크릿은 암호, 토큰 또는 키와 같은 소량의 중요한 데이터를 포함하는 오브젝트이다. # 해당 내용을 파일로 저장하는 명령어 echo -n admin > username echo -n 1234qwerasdf > password # generic 옵션을 사용하면 일반적인 정보로 저장됨 kubectl create secret generic db-user-pass --from-file=username --from-file=password kubectl get secret -o yaml db-user-pass # 저장된 비밀번호 디코딩 하기 echo YWR.. ConfigMap을 활용한 디렉토리 마운트 # ConfigMap을 활용한 디렉토리 마운트 쿠버네티스 공식 사이트 검색 > Add ConfigMap data to a Volume kubectl create -f https://kubernetes.io/examples/configmap/configmap-multikeys.yaml # 실행한 pod 내용 확인하기 kubectl get configmaps special-config -o yaml cp envars-configmap.yaml volmues-configmap.yaml vim volmues-configmap.yaml apiVersion: v1 kind: Pod metadata: name: volumes-configmap labels: purpose: demonstrate-envars spec:.. ConfigMap 이란? & ConfigMap 을 활용한 환경 변수 설정 # ConfigMap 을 활용한 환경 변수 설정 컨피그맵(configmap)은 컨테이너에서 필요한 환경설정 내용을 컨테이너와 분리해서 제공해 주기 위한 기능입니다. 클라우드 네이티브 아키텍처에서 컨테이너는 변하지 않는 자원이어야 합니다. 개발할때 사용하는 컨테이너와 실제 서비스용으로 사용되는 컨테이너가 동일해야 한다는 것입니다. # ConfigMap 을 생성하자 echo -n 1234 > test -n 명령어는 엔터값 없이 스트링 값만 저장할때 쓰이는 옵션이다. kubectl create configmap map-name --from-file=test kubectl get configmap map-name -o yaml # 이전 시간에 사용한 환경변수 파일을 수정하여 사용 cp envar.yaml env.. 스테이트 풀셋 내용 및 실습 # 스테이트 풀셋 개요 - rs를 활용하여 구성이 가능하나, rs는 하나하나 저장소 경로를 지정해 줘야 하기 때문에... 편의성과 효율성 측면에서 좋지 않다. 그래서 스테이트 풀셋을 활용하여 rs의 번거로움을 해소 할 수 있다. 애플리케이션의 상태를 저장하고 관리하는 데 사용되는 쿠버네티스 객체다. 기존의 포드를 삭제하고 생성할 때 상태가 유지되지 않는 한계가 있다. 때문에 파드를 삭제하고 생성하면 완전히 새로운 가상환경이 시작된다. 하지만 필요에 따라 기존의 포드의 상태를 유지하고 싶을 수 있다. 응용프로그램의 로그나 기타 다른 정보들을 함께 저장하고자 하는 경우 단순히 PV를 하나 마운트해 이를 유지하기는 어렵다. 스테이트풀셋으로 생성되는 파드는 영구 식별자를 가지고 상태를 유지시킬 수 있다. 즉, .. GCE 동적 프로비저닝 및 영구스토리지 연습문제 # GCE 동적 프로비저닝 쿠버네티스 공식 사이트 > Storage Classes - Kubernetes > Provisioner > config Example 에서 확인 가능 apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: storage provisioner: kubernetes.io/gce-pd parameters: type: pd-ssd --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mongo-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: storag.. 이전 1 ··· 10 11 12 13 14 15 16 ··· 18 다음