● secret 명령어로 숨겨야 할 것을 숨긴다 [ 보안 관련 ] >> 주로 환경변수에 값을 넣을 때 사용한다 # generic 은 옵션 kubectl create secret generic db-pw --from-literal password=mypass secret/db-pw created kubectl create secret generic db-user-pw --from-literal password=userpass secret/db-user-pw created ● secrets 생성 kubectl get secrets NAME TYPE DATA AGE db-pw Opaque 1 26m db-user-pw Opaque 1 2m25s ● 비밀번호를 보여주지 않고, 6글자인지만 보여준다 kubectl..
Mysql 관련 yaml 파일 ○ mysql-pvc.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: mysql-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 3Gi ○ mysql-pv.yaml # hostpath 는 delete 를 위해서 /tmp 로 설정 kind: PersistentVolume apiVersion: v1 metadata: name: mysql-pv labels: type: local spec: capacity: storage: 5Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: De..
영구 볼륨 PV 영구 스토리지 볼륨을 설정하기 위한 객체 PVC 영구 스토리지 볼륨 사용을 요청하기 위한 객체 PV / PVC 의 라이프 싸이클 ● Provisioning - 볼륨으로 사용하기 위한 물리적인 공간 확보 - 프로비저닝은 디스크 공간을 확보하여 PV 를 생성하는 단계 Provisioning 정적 프로비저닝 PV / PVC 직접 생성하여 직접 사용하는 방식 동적 프로비저닝 ex 클라우드 ● Binding [ 바인딩 ] - 프로비저닝으로 생성된 PV 와 PVC 를 연결하는 단계 - PVC 를 통하여 용량 등 조건에 맞는 PV 연결 - PVC 한개가 여러 개의 PV 에 바인딩 될 수 없다 ● 사용 - PVC 는 파드에 설정되고 파드는 PVC 를 통해서 볼륨을 인식해서 사용 - 할당된 PVC 는 파..
● nfs.yml 생성 # volumeMounts >> 컨테이너 내의 nfs 공유디렉터리 마운트 포인터 # volumes >> 공유디렉터리 와 nfs server 주소 >> 밑에서 수정해서 실행할 예정 [ centos >> httpd ] #### : set list 로 띄어쓰기 꼭 확인 --- apiVersion: v1 kind: Pod metadata: name: nfs-storage-test spec: containers: - name: nfs-container-test image: centos:7 command: ["sh","-c","/usr/bin/sleep","3600s"] volumeMounts: - name: nfs-volume mountPath: /mnt volumes: - name: nf..
○ 컨테이너 파일시스템은 컨테이너가 실행되고 있는 동안만 존재 ○ 컨테이너가 종료되면 스토리지 볼륨은 삭제 ○ pod 내의 컨테이너가 crash 되어 삭제되거나 재시작 되더라도 emptyDir 의 라이프사이클은 pod 단위이기 때문에 emptyDir 은 삭제되지 않고 계속해서 사용 가능 ○ emptyDir 은 디스크 대신 메모리 사용하는 것도 가능 ● empty.yml 파일생성 apiVersion: v1 kind: Pod metadata: name: redis spec: containers: - name: redis image: redis volumeMounts: - name: redis-storage mountPath: /data/redis volumes: - name: redis-storage emp..
쿠버네티스 / 도커 사용하여 파드의 아이피 주소를 출력 ● apache_new.yml 생성하여 command 입력 --- apiVersion: v1 kind: Pod metadata: name: apache-pod labels: app: myweb-svc spec: containers: - name: myweb-svc image: httpd:2.4 ports: - containerPort: 80 command: ["tail","-n","1","/etc/hosts"] ● CrashoLoopBackOff 상태로 계속 지속된다 >> 아파치가 올라가는데 문제가 있어서 계속 다시 올리는 시도 중 ● logs 에는 정상으로 올라오긴 한다 [vagrant@ms work]$ kubectl logs apache-pod ..
● PV ( Persistant Volume ) ● PVC >> 누구든 요청할 수 있고 쉽게 만들 수 있다 ● HostPath - HostPath 볼륨은 호스트 노드의 파일시스템에 있는 파일이나 디렉터리를 직접 마운트 - 기존의 파드가 삭제되고 새롭게 파드가 스케줄링 될 때 만약 기존의 노드에 파드가 스케줄링 되지 않으면, 기존의 노드 데이터는 사용 할 수 없으므로 주의 - 쿠버네티스 사이트에서는 보안상 hostPath 를 사용하지 않는 것을 권장한다 - hostPath 볼륨을 사용해야 하는 경우, 필요한 파일 또는 디렉터리로만 범위를 지정하고 ReadOnly 로 마운트하는게 좋다 요약 : Node 1 에 파드 1의 스토리지를 만들어서 참조한다 / 다른 노드의 스토리지는 참조 못한다 ○ pvc 를 위한 ..
● 한 개의 Pod 에 멀티 컨테이너를 사용하게 되면 두 컨테이너는 Pod IP 를 사용하므로, 같은 IP 사용한다 ● 스토리지 볼륨을 공유할 수 있다 # kubernetes - loadbalance 참조 [ 중복됨 ] ○ multi.yml 생성 apiVersion: v1 kind: Pod metadata: name: test spec: containers: - name: first image: httpd:2.4 - name: second image: alpine command: ["/bin/sleep","3600s"] kubectl apply -f multi.yml ● 그냥 들어가면 first 로 들어가진다 - c 옵션 쓰면, first / second 설정해서 들어갈 수 있다 kubectl exec ..
● 쿠버네티스는 다른 장비에서 실행되기 때문에, 백그라운드 실행 개념이 없다 ex> docker run -d ~ 같은 -d 옵션이 옵션이 없다 ● 전에 사용하던 Pods 제거 [vagrant@ms ~]$ kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx 1/1 Running 1 (11h ago) 2d22h 10.244.1.63 wk1.example.com test 2/2 Running 6 (14m ago) 2d20h 10.244.1.64 wk1.example.com ● apache.yml 생성 # 셀렉터의 내용이 파드의 내용과 같아야된다 [vagrant@ms work]$ ca..
● Nodes 확인 [vagrant@ms ~]$ kubectl get nodes NAME STATUS ROLES AGE VERSION ms.example.com Ready control-plane 3d23h v1.29.2 wk1.example.com Ready 3d23h v1.29.2 wk2.example.com Ready 3d23h v1.29.2 ● Namespace 확인 [vagrant@ms ~]$ kubectl get ns NAME STATUS AGE default Active 3d23h kube-flannel Active 3d23h kube-node-lease Active 3d23h kube-public Active 3d23h kube-system Active 3d23h myns Active 3d..