1. 생성
2. 확인
3. 삭제
4. Manifest file
5. 접근
6. 특정 Node에 Pod 생성
1. 생성
1.1. namespace
kubectl create namespace [NAMESPACE]
1.2. pod
- 옵션의 값은 '=' 또는 공백으로 모두 표현 가능
- namespace 옵션을 생략하는 경우 default namespace로 자동 지정
kubectl run [POD] --image=[IMAGE] --port=[PORT]
kubectl run [POD] --image [IMAGE] --port [PORT] --namespace [NAMESPACE]
2. 확인
2.1. get
# namespace 목록 조회
kubectl get namespace
# namespace 내 pod 목록 조회
# -o wide 옵션으로 상세 내용 확인 가능
kubectl get pod [POD] -n [NAMESPACE]
2.2. describe
# namespace 상세정보 확인
kubectl describe namespace [NAMESPACE]
# pod 상세정보 확인
kubectl describe pod [POD]
3. 삭제
3.1. pod > namespace
# namespace 내 pod 삭제
kubectl delete pod [POD] -n [NAMESPACE]
# namespace 삭제
kubectl delete namespace [NAMESPACE]
# 전체 삭제
--all 옵션 사용
3.2. namespace
4. Manifest file
4.1. 기존 image의 내용 보기 (yaml/json)
kubectl run [POD] --image [IMAGE] --dry-run -o yaml/json
4.2. 생성
4.2.1. namespace
# namespace manifest 파일 생성
vi name.yml
# 내용 입력
apiVersion: v1 # K8S 버전 명세 (v1: pod, service / apps/v1: replica set, deploy 등)
kind: namespace # Resource Type
metadata:
name: 1team # 생성할 Resource 이름 지정
---
apiVersion: v1
kind: namespace
metadata:
name: 2team
# name.yml 파일 적용
kubectl apply -f name.yml
4.2.2. pod
# pod manifest 파일 생성
vi pod.yml
# 내용 입력
apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: 1team
spec: # Pod의 구체적인 사양 정의
containers:
- name: n1 # Container 이름 지정
image: nginx:1.14.2 # Container Image 지정
ports:
- containerPort: 80 # Container Port 지정
4.3. 확인
4.4. 수정
4.5. 삭제
5. 접근
5.1. Pod 생성
# pod.yml 파일
apiVersion: v1
kind: Pod
metadata:
name: apache
spec:
containers: # httpd와 mysql Container 생성
- name: h1
image: httpd:latest
ports:
- containerPort: 80
- name: m1
image: mysql:5.7
ports:
- containerPort: 3306
env: # 환경 변수
- name: MYSQL_ROOT_PASSWORD
value: It12345!
5.2. Container 접근
# Container가 1개인 경우 POD로 접근 가능
kubectl exec -it [POD] -n [NAMESPACE] -- /bin/bash
# Container가 2개 이상인 경우 -c 옵션으로 특정 Container 접근 가능
kubectl exec -it [POD] -c [CONTAINER] -n [NAMESPACE] --/bin/bash
5.3. container 내부 작업
6. 특정 Node에 Pod 생성
6.1. Label 생성
kubectl label node node1 disk=ssd
kubectl label node node2 disk=hdd
6.2. manifest 파일 생성
apiVersion: v1
kind: Pod
metadata:
name: apachepv
labels:
app: apache
spec:
containers:
- name: apachepv
image: httpd
ports:
- containerPort: 80
volumeMounts:
- name: apashare
mountPath: /usr/local/apache2/htdocs/
volumes:
- name: apashare
hostPath:
path: /html
type: DirectoryOrCreate
nodeSelector: # Node 특정
disk: hdd # label이 disk=hdd인 node2에 생성하겠다는 의미
'K8S' 카테고리의 다른 글
K8S: 컨테이너 인프라 환경과 쿠버네티스 (0) | 2022.09.14 |
---|---|
K8S: 테스트 환경 구성하기 (2) | 2022.09.13 |
K8S: Deploy/종합 실습 (0) | 2022.08.10 |
K8S: Label/Volume/Service/Replica Set (0) | 2022.08.08 |
K8S: 설치 및 설정 (0) | 2022.08.03 |