[Kubernetes] Init Containers의 동작 확인
4704 단어 kubectlkubernetes
소개
이번에는 Init Containers의 동작을 확인하고 싶습니다.
Init Containers는 응용 프로그램 컨테이너 앞에 실행되고 응용 프로그램 컨테이너의 이미지에 존재하지 않는 설치 스크립트와 유틸리티를 포함하는 특수 컨테이너입니다.
유스 케이스로는, 보안의 관점에서 어플리케이션 컨테이너 이미지에 포함하고 싶지 않은 툴의 실행 등이 있습니다.
그 외, 이하의 메뉴얼에도 기재되어 있습니다.
Init 컨테이너는 무엇에 사용할 수 있습니까?
설정
그럼 실제로 Init Containers를 실행하고 싶습니다. 여기에서는 Init Containers를 이용하여 nginx의 index.html 파일을 작성하고 있습니다.
또한 Init Containers는 여러 개 설정할 수 있습니다.
initContainer.yamlapiVersion: v1
kind: Pod
metadata:
name: nginx-init
labels:
app: app1
spec:
initContainers:
- name: init01
image: centos:latest
args:
- /bin/sh
- -c
- echo "test" > /test/index.html
volumeMounts:
- mountPath: /test
name: nginx-index
containers:
- name: nginx
image: nginx:latest
volumeMounts:
- mountPath: /usr/share/nginx/html/
name: nginx-index
volumes:
- name: nginx-index
hostPath:
path: /test
type: Directory
이 설정을 그림으로 하면 다음과 같이 됩니다.
그럼 실제로 Init Containers를 실행하고 싶습니다. 여기에서는 Init Containers를 이용하여 nginx의 index.html 파일을 작성하고 있습니다.
또한 Init Containers는 여러 개 설정할 수 있습니다.
initContainer.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-init
labels:
app: app1
spec:
initContainers:
- name: init01
image: centos:latest
args:
- /bin/sh
- -c
- echo "test" > /test/index.html
volumeMounts:
- mountPath: /test
name: nginx-index
containers:
- name: nginx
image: nginx:latest
volumeMounts:
- mountPath: /usr/share/nginx/html/
name: nginx-index
volumes:
- name: nginx-index
hostPath:
path: /test
type: Directory
이 설정을 그림으로 하면 다음과 같이 됩니다.
동작 확인
위의 매니페스트를 적용합니다. 이 때 다른 터미널에서 Pod 상태를 확인합니다.
$ kubectl apply -f initContainer.yaml
pod/nginx-init created
$ kubectl get pod -w
NAME READY STATUS RESTARTS AGE
nginx-init 0/1 Pending 0 0s
nginx-init 0/1 Pending 0 0s
nginx-init 0/1 Init:0/1 0 0s
nginx-init 0/1 Init:0/1 0 1s
nginx-init 0/1 PodInitializing 0 5s
nginx-init 1/1 Running 0 9s
포드가 실행되기 전에 Init 처리가 실행 중임을 알 수 있습니다.
외부 서버에서 액세스하여 확인합니다. LoadBalancer가 작성되었습니다.
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 103d
load-balancer LoadBalancer 10.111.156.47 10.20.30.150 8080:30002/TCP 5d22h
[client]$ curl -s http://10.20.30.150:8080
test
Init Containers에서 만든 index.html에서 요청이 반환되고 있습니다.
요약
이번 확인한 Init Containers를 이용하면, 전처리로서 다양한 처리를 할 수 있네요.
Kubernetes의 기본에서 응용 프로그램에 들어오고 있다고 생각하지만, 앱에 대한 생각이 점점 더 필요해지고 있다고 느끼고 있습니다. 인프라 가게라고 말하지만, 피해서는 통과할 수 없네요. 노력하지 않으면.
Reference
이 문제에 관하여([Kubernetes] Init Containers의 동작 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/dingtianhongjie/items/8b78705cfc9126d76e2f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ kubectl apply -f initContainer.yaml
pod/nginx-init created
$ kubectl get pod -w
NAME READY STATUS RESTARTS AGE
nginx-init 0/1 Pending 0 0s
nginx-init 0/1 Pending 0 0s
nginx-init 0/1 Init:0/1 0 0s
nginx-init 0/1 Init:0/1 0 1s
nginx-init 0/1 PodInitializing 0 5s
nginx-init 1/1 Running 0 9s
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 103d
load-balancer LoadBalancer 10.111.156.47 10.20.30.150 8080:30002/TCP 5d22h
[client]$ curl -s http://10.20.30.150:8080
test
이번 확인한 Init Containers를 이용하면, 전처리로서 다양한 처리를 할 수 있네요.
Kubernetes의 기본에서 응용 프로그램에 들어오고 있다고 생각하지만, 앱에 대한 생각이 점점 더 필요해지고 있다고 느끼고 있습니다. 인프라 가게라고 말하지만, 피해서는 통과할 수 없네요. 노력하지 않으면.
Reference
이 문제에 관하여([Kubernetes] Init Containers의 동작 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dingtianhongjie/items/8b78705cfc9126d76e2f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)