이번에는 기존에 kubectl run을 pod을 실행시켰다면, 이제는 yml 파일을 통한 pod 생성하는것을 해보도록 하겠다.
k8s yml 파일의 기본 설정이다. 물론 저거 말고도 환경변수나 많이 있지만, 일단 기본적인 구성이다.
apiVersion: # 실행시킬 Object의 api version
kind: # 실행시킬 Object 종류
metadata:
name: # Pod 이름
spec:
containers:
- name: # container 이름
image: # 실행시킬 이미지
#imagePullPolicy: # 이미지 pull 정책, IfNotPresent , always , Never 존재
#nodeName: node # 해당 pod을 어떤 node에 지정할것인지 설정
ports:
- containerPort # 해당 서비스의 포트 제어
apiVersion : kubectl api-version resourcs 명령어를 통해 실행시킬 Object api version을 확인할 수 있다.
kind: 실행시킬 Obect의 종류로 Pod , Deployment, ReplicaSet , Namespace 등이 있다.
imagePullPolicy : 이미지을 불러오는 정책에 관한 설정인데
always은 항상 k8s repo에서 가져오겠다는 뜻
IfNotPresent는 local에 이미지가 없다면 가져오기
Never는 무조건 local에서 가져오겠다는 뜻이다.
kubectl apply -f name.yml
위 명령어를 통해 실행시키면 pod가 생성되고
kubectl delete -f name.yml
위 명령어를 실행시키면 yml 파일을 통해 실행시킨 pod가 삭제된다.
Nginx.yml
한번 nginx을 생성하는 yml 파일을 만들어보겠다.
apiVersion: v1
kind: Pod
metadata:
name: app-nginx
spec:
containers:
- name: nginx
image: nginx:1.14
imagePullPolicy: Never
ports:
- containerPort: 80
centos.yml
centos7 을 생성하고 해당 pod는 namespace 2team에 생성하도록 해보겠다.
---
apiVersion: v1
kind: Namespace
metadata:
name: 2team
---
apiVersion: v1
kind: Pod
metadata:
name: bash-cent1
namespace: 2team
spec:
containers:
- name: bash-cent1
image: centos:7
imagePullPolicy: Never
command: ["/bin/bash" , "-c" , "while true; do sleep 1000; done"]
http.yml
http을 실행하고 해당 pod는 node2번에서 실행하도록 설정해보겠다.
---
apiVersion: v1
kind: Pod
metadata:
name: http
labels:
env: prod
spec:
containers:
- name: apache1
image: httpd
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
nodeName: node2
'Docker, k8s' 카테고리의 다른 글
k8s_helm Prometheus Grafana 연동 (0) | 2023.09.15 |
---|---|
k8s_ Replica, Depolyment (0) | 2023.09.13 |
k8s_ Pod 생성, Pod접속 , Service, Namespace (0) | 2023.09.12 |
k8s_Kubernetes (0) | 2023.09.12 |
Docker image build (0) | 2023.09.11 |