본 랩에서는 파드를 정의하는 매니패스트를 직접 작성해봅니다.
gcloud config set compute/zone us-central1-a
gcloud container clusters create lab03 --num-nodes 3 --scopes "https://www.googleapis.com/auth/projecthosting,storage-rw"
alias k=kubectl
- 본랩에서는 vi를 사용합니다.
쿠버네티스 오브젝트의 스펙을 기술해 봅니다.
vi pod2-1.yaml
pod2-1.yaml
apiVersion: v1 # 이 오브젝트를 생성하기 위해 사용하고 있는 쿠버네티스 API 버전이 어떤 것인지
kind: Pod # 어떤 종류의 오브젝트를 생성하고자 하는지
metadata: # 이름, 네임스페이스 를 포함하여 오브젝트를 유일하게 구분지어 줄 데이터
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
kubectl apply -f pod.yaml
kubectl get po
kubectl get po --show-labels
- 파드 기본정보
- 실행중인 컨테이너 정보
- 이벤트 정보
kubectl describe po 파드이름
kubectl delete po 파드이름
파드가 삭제될 때는 30초의 유예기간을 갖습니다. 더이상 요청을 받지 않습니다. 또한, 해당 파드의 컨테이너 데이터도 삭제됩니다.
pod2-2.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
nodeSelector:
disktype: ssd
파드 생성이 안된다...
kubectl label node 이름 disktype=ssd
- 네임스페이스 : 클러스터 내부의 객체를 관리.
- 각 네임스페이스는 객체 집합을 담고 있는 폴더로 생각할 수 있습니다.
- 명시를 안하면, default namespace
kubectl create ns kuba
pod2-3.yaml
apiVersion: v1
kind: Pod
metadata:
namespace: kuba
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
참고 : https://github.com/kubernetes-up-and-running/kuard
apiVersion: v1
kind: Pod
metadata:
name: kuard
spec:
containers:
- name: kuard
image: gcr.io/kuar-demo/kuard-amd64:1
ports:
- containerPort: 8080
name: http
protocol: TCP
kubectl apply -f kuard-pod.yaml
kubectl port-forward kuard 8080:8080
실행중인 인스턴스에서 로그를 다운로드합니다.
kubectl logs kuard
two-container-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: two-containers
spec:
restartPolicy: Never
volumes:
- name: shared-data
emptyDir: {}
containers:
- name: nginx-container
image: nginx
volumeMounts:
- name: shared-data
mountPath: /usr/share/nginx/html
- name: debian-container
image: debian
volumeMounts:
- name: shared-data
mountPath: /pod-data
command: ["/bin/sh"]
args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]
컨테이너 쉘 접속
kubectl exec -it two-containers -c nginx-container -- /bin/bash
root@two-containers:/ apt-get update
root@two-containers:/ apt-get install curl procps
root@two-containers:/ ps aux
root@two-containers:/ curl localhost
포트포워딩 후 로컬에서 접속
how?
파드 상태를 확인해봅시다.
kubectl get po
NAME READY STATUS RESTARTS AGE
two-containers 1/2 Completed 0 20m
왜 하나만 살아있을까요?
나머지 하나도 계속 running 상태가 되도록 한번 변경해봅시다.
gcloud container clusters delete lab03