클라우드 엔지니어 꿈나무
Kubernetes Pods - Centos7 본문
쿠버네티스 POD
1. 컨테이너가 모인 잡합체로 최소 한 개 이상의 컨테이너로 구성
2. K8S(쿠버네티스) 구성 요소 중 가장 작은 단위 객체
<참고 Docker 에서는 container 가 제일 작은 단위 객체)
3. Pod는 여러 노드에 걸쳐 배치 불가, 같은 노드에 배치 가능 = Pod 내의 Container 들은 IP 주소와 Port 공간 공유 (중복 사용 불가, Localhost 를 통해 검색 가능)
4. LifeCycle
- Pending : Container 이미지 생성 미완료
- Running : Node에 Pod 결합 및 Container 생성 완료, 최소 한 개 이상의 Container가 동작 중, 혹은 시작 또는 재시작 상태
- Succeded : Pod 에 있는 모든 Container가 성공적으로 생성
- Failed : Pod 모든 Container 가 종료, 혹은 최소 하나 이상의 Container가 실패되어 종료된 상태
- Unknown : Pod 상태 확인 불가 또는 Pod Host 통신 오류
기본 명령어
kubectl get pods -o wide : pod 상태 상세 확인
kubectl get pods -o wide --namespace n1 : namespace n1 로 만들어진 pod 확인 ( = kubectl get pods -o wide -n n1)
kubectl expose pod app-nginx --type=NodePort : app-nginx 라는 pod를 외부로 노출
kubectl run app-http --image httpd --port 80 : app-http 라는 명칭으로 httpd 이미지 활용하여 pod 생성 (포트 80 추가)
kubectl delte pod app-nginx : nginx라는 pod 삭제
kubectl describe pod app-http : app-http 라는 pod 상세 확인
alpine 이미지로 pod 생성
command 미기입시 컨테이너 종료
apiVersion: v1
kind: Pod
metadata:
name: alpine
spec:
containers:
- name: alpine
image: alpine
imagePullPolicy: Never
command: ["/bin/sh", "-c", "while true; do sleep 1000; done"]
nginx 및 sql 컨테이너 실행하여 pod 생성
apiVersion: v1
kind: Pod
metadata:
name: app-nginx
spec:
containers:
- name: nginx
image: nginx:1.14
imagePullPolicy: Never
ports:
- containerPort: 80
- name: mysql
image: mysql:5.7
imagePullPolicy: Never
env:
- name: MYSQL_ROOT_PASSWORD
value: "It12345!"
ports:
- containerPort: 3306
~
'kubernetes' 카테고리의 다른 글
Kubernetes(k8s) Deployments - Centos 7 (0) | 2023.09.13 |
---|---|
Kubernetes(k8s) Replicas - Centos (0) | 2023.09.13 |
Kubernetes Labels - Centos7 (0) | 2023.09.13 |
Kubernetes Namespace - Centos7 (0) | 2023.09.12 |
Kubernetes 설치 - Centos 7 (1) | 2023.09.12 |