yml파일을 사용해서 쿠버네티스에서 pod만들기
multiContainer.yml
apiVersion: v1
kind: Pod
metadata:
name: multi
labels:
app: wordpress
spec:
containers:
- name: wordpress
image: reg.cloud.com/wordpress
ports:
- containerPort: 80
- containerPort: 443
env:
- name: WORDPRESS_DB_HOST
value: 127.0.0.1
- name: WORDPRESS_DB_USER
value: wordpress
- name: WORDPRESS_DB_PASSWORD
value: password
- name: db
image: reg.cloud.com/mysql
env:
- name: MYSQL_ROOT_PASSWORD
value: password
- name: MYSQL_DATABASE
value: wordpress
- name: MYSQL_USER
value: wordpress
- name: MYSQL_PASSWORD
value: password
$ k create -f multiContainer.yml
## 해당 컨테이너 yml을 사용하여 pod을 생성(container포함)
상기 pod은 2개의 container을 포함한다 그러나 failover관련(replica가 없음) 설정이 없기 때문에 바로 죽게 된다. 즉, 상용에 사용 못하는 yml이다.(안정성을 위해 failover이 반드시 필요)
쿠버네티스의 scale out scale in은 replica의 숫자에 따라 다름. 쉽게 설정 가능하다.
RC를 통해 POD 만들어달라고 요청
$ k run --image=reg.cloud.com/nginx nginx-app --port=80 --generator=run/v1
$ k get rc
## remote서버로부터 nginx를가져와서 pod를 rc를 통해 만들기
## rc는 사용자가 추가한것
## pod은 쿠버네티스가 rc로 부터 명령을 받아서 만든것.
Daemon Sets(DS) 설정하기
apiVersion: apps/v1beta2 ##daemon set 설정
kind: daemonSet
metadata:
name: ssd-monitor
spec:
selector:
matchLabels:
app: ssd-monitor
template:
metadata:
labels:
app: ssd-monitor
spec:
nodeSelector:
disk: ssd ##pod를 생성시에 node에 ssd라는 값이 있는 것에만 배포한다고 선언
containers:
- image: reg.cloud.com/kubia
name: kubia
ports:
- containerPort: 8080
$ k label no <host> disk=ssd
## 라벨을 설정한 node에 생성되는 것을 볼 수 있다.
$ k label no <host> disk=hdd --overwrite
## node와 label매핑이 맞지 않은 것은 자동으로 terminate됨.
Probe를 사용하여 health check하기
apiVersion: v1
kind: Pod
metadata:
name: test-probe
spec:
containers:
- image: reg.cloud.com/kubia-unhealthy
name : kubia
livenessProbe: ##매 1초마다 httpGet으로 health check
httpGet: ##보통 httpGet으로 health check한다. tcp, exec command도 가능
path: /
port: 8080
ports:
- containerPort: 8080
※ 헬스체크용도의 path에는 컨텐츠가 없어야하고, 인증, SSL 기타 기능이 없는 get요청이여야 함
$ k describe po test-probe
## 특정 pod에 나타난 event history 확인
## 아래 이미지 event history를 보면 liveness 체크 후 500 fail이 났다는 것을 확인 할 수 있다.
반응형
'DevOps > 쿠버네티스' 카테고리의 다른 글
쿠버네티스 배포를 하기 위한 준비 readinessProbe, livenessProbe (975) | 2018.05.03 |
---|---|
INGRESS를 사용한 쿠버네티스 네트워크 심화(sticky session, ssl connection) (960) | 2018.05.03 |
INGRESS를 사용한 쿠버네티스 네트워크 설치 및 연결 (1439) | 2018.05.03 |
쿠버네티스 service를 사용한 네트워크 설정 (1452) | 2018.05.02 |
쿠버네티스 service를 통한 네트워크 설정 개념정리 (2059) | 2018.05.02 |
쿠버네티스 설치 (952) | 2018.05.02 |