초학자가 Kubernetes를 처음 보았다 ~#3 node의 pv와 호스트 volume를 동기화해, pod 안에 pvc를 설정하는 등~
11304 단어 메모초보자kubernetes
소개
30대 미경험에서 엔지니어를 목표로 공부중인 YN이라고 합니다.
인프라를 공부하고 나면, k8s 아키키 같은 공기감에 초조해요. 캐치업을 위해 배운 것 등을 기록해 가고 싶습니다.
지난번 의 계속입니다.
했던 일
했던 일을 열심히 표제로 표현하려고 했습니다만 무리였습니다.
그림으로 하면 이런 느낌입니다.
사전 준비
kubectl 을 k 에 별칭
명령을 kubectl
에서 k
로 별칭하면 쉽습니다. 그리고 나서 명령의 보완도 추가해 둡니다. 자세한 내용은 이 문서를 참조하십시오.
이후, 이 기사에서는 특별히 거절하지 않고 kubectl
대신에 k
를 사용합니다.
~/.zshrcsource <(kubectl completion zsh)
alias k=kubectl
complete -o default -F __start_kubectl k
항상 구성 요소의 움직임을 살펴 봅니다.
watch 'kubectl get pod,service,namespace,deploy,ingress,cm,secret,persistentvolume,persistentvolumeclaim'
구성 요소 만들기
secret 만들기
환경 변수 등을 저장하는 secret을 만듭니다.
k create secret generic my-secret --from-literal=SECRET_KEY1=SECRET_VALUE1 --from literal=SECRET_KEY2=SECRET_VALUE2 --dry-run=client -o yaml > secret.yaml
k apply -f secret.yaml
secret.yamlapiVersion: v1
data:
SECRET_KEY1: U0VDUkVUX1ZBTFVFMQ==
SECRET_KEY2: U0VDUkVUX1ZBTFVFMg==
kind: Secret
metadata:
creationTimestamp: null
name: my-secret
configmap 만들기
key-value 상점으로 정보를 저장하기 위해 configmap을 사용합니다.
k create configmap my-config --from-literal=TEST_ENV=Hello_World --dry-run=client -o yaml > configmap.yaml
k apply -f congifmap.yaml
configmap.yamlapiVersion: v1
data:
TEST_ENV: Hello_World
kind: ConfigMap
metadata:
creationTimestamp: null
name: my-config
pv 만들기
노드에 pv를 만듭니다.
pv.yamlapiVersion: v1
kind: PersistentVolume
metadata:
name: pv
spec:
storageClassName: manual
capacity:
storage: 100M
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/pvc"
k apply -f pv.yaml
pvc 정의
포드의 정보는 포드와 함께 사라집니다. pod가 사라진 후에 pod가 가지는 정보를 유지하기 위해서는 pvc를 사용해 pv에 기입하는 것입니다.
pvc는 pv에서 저장 영역의 몫을 정의합니다.
pvc.yamlapiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10M
k apply -f pvc.yaml
포드 만들기
컴포넌트를 연결하여 아래 그림의 pod를 만듭니다.
pod.yamlapiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: helloworld-pod
name: helloworld-pod
spec:
containers:
- image: gcr.io/google-samples/hello-app:1.0
name: helloworld-pod
env:
- name: TEST_ENV
valueFrom:
configMapKeyRef:
name: my-config
key: TEST_ENV
ports:
- containerPort: 8080
resources: {}
volumeMounts:
- name: my-pv
mountPath: /mnt/pvc
- name: my-config-volume
mountPath: /my-config/TEST_ENV
- name: my-secret-volume
mountPath: /my-secret
readOnly: true
volumes:
- name: my-pv
persistentVolumeClaim:
claimName: pvc
- name: my-config-volume
configMap:
name: my-config
items:
- key: TEST_ENV
path: keys
- name: my-secret-volume
secret:
secretName: my-secret
노드의 pv와 호스트 볼륨의 동기화 동작 확인
포드의 컨테이너에 쉘로 들어가서 파일을 /mnt/pvc/from_pod.txt
위에 만듭니다.
k exec -it helloworld-pod sh
echo "from pod" > /mnt/pvc/from_pod.txt
cat /mnt/pvc/from_pod.txt
Node로 ssh하고 들어가 Pod에서 컨테이너로 만든 /mnt/pvc/from_pod.txt
가 Node에 있는지 확인할 수 있습니다.
minikube ssh
cat /mnt/pvc/from_pod.txt
학습 로그 해설
configmap 정의
포드에 저장 영역 정의
포드의 저장 영역에 configmap 정의
포드의 저장 영역에 보안을 정의합니다.
pv 정보
pvc 정의
마지막으로
완전히 자기만족한 학습 로그가 되어 버렸습니다. 앞으로도 k8s의 공부를 열심히 하고 싶습니다.
Reference
이 문제에 관하여(초학자가 Kubernetes를 처음 보았다 ~#3 node의 pv와 호스트 volume를 동기화해, pod 안에 pvc를 설정하는 등~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/theFirstPenguin/items/51235c48dc680d9f209d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
했던 일을 열심히 표제로 표현하려고 했습니다만 무리였습니다.
그림으로 하면 이런 느낌입니다.
사전 준비
kubectl 을 k 에 별칭
명령을 kubectl
에서 k
로 별칭하면 쉽습니다. 그리고 나서 명령의 보완도 추가해 둡니다. 자세한 내용은 이 문서를 참조하십시오.
이후, 이 기사에서는 특별히 거절하지 않고 kubectl
대신에 k
를 사용합니다.
~/.zshrcsource <(kubectl completion zsh)
alias k=kubectl
complete -o default -F __start_kubectl k
항상 구성 요소의 움직임을 살펴 봅니다.
watch 'kubectl get pod,service,namespace,deploy,ingress,cm,secret,persistentvolume,persistentvolumeclaim'
구성 요소 만들기
secret 만들기
환경 변수 등을 저장하는 secret을 만듭니다.
k create secret generic my-secret --from-literal=SECRET_KEY1=SECRET_VALUE1 --from literal=SECRET_KEY2=SECRET_VALUE2 --dry-run=client -o yaml > secret.yaml
k apply -f secret.yaml
secret.yamlapiVersion: v1
data:
SECRET_KEY1: U0VDUkVUX1ZBTFVFMQ==
SECRET_KEY2: U0VDUkVUX1ZBTFVFMg==
kind: Secret
metadata:
creationTimestamp: null
name: my-secret
configmap 만들기
key-value 상점으로 정보를 저장하기 위해 configmap을 사용합니다.
k create configmap my-config --from-literal=TEST_ENV=Hello_World --dry-run=client -o yaml > configmap.yaml
k apply -f congifmap.yaml
configmap.yamlapiVersion: v1
data:
TEST_ENV: Hello_World
kind: ConfigMap
metadata:
creationTimestamp: null
name: my-config
pv 만들기
노드에 pv를 만듭니다.
pv.yamlapiVersion: v1
kind: PersistentVolume
metadata:
name: pv
spec:
storageClassName: manual
capacity:
storage: 100M
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/pvc"
k apply -f pv.yaml
pvc 정의
포드의 정보는 포드와 함께 사라집니다. pod가 사라진 후에 pod가 가지는 정보를 유지하기 위해서는 pvc를 사용해 pv에 기입하는 것입니다.
pvc는 pv에서 저장 영역의 몫을 정의합니다.
pvc.yamlapiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10M
k apply -f pvc.yaml
포드 만들기
컴포넌트를 연결하여 아래 그림의 pod를 만듭니다.
pod.yamlapiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: helloworld-pod
name: helloworld-pod
spec:
containers:
- image: gcr.io/google-samples/hello-app:1.0
name: helloworld-pod
env:
- name: TEST_ENV
valueFrom:
configMapKeyRef:
name: my-config
key: TEST_ENV
ports:
- containerPort: 8080
resources: {}
volumeMounts:
- name: my-pv
mountPath: /mnt/pvc
- name: my-config-volume
mountPath: /my-config/TEST_ENV
- name: my-secret-volume
mountPath: /my-secret
readOnly: true
volumes:
- name: my-pv
persistentVolumeClaim:
claimName: pvc
- name: my-config-volume
configMap:
name: my-config
items:
- key: TEST_ENV
path: keys
- name: my-secret-volume
secret:
secretName: my-secret
노드의 pv와 호스트 볼륨의 동기화 동작 확인
포드의 컨테이너에 쉘로 들어가서 파일을 /mnt/pvc/from_pod.txt
위에 만듭니다.
k exec -it helloworld-pod sh
echo "from pod" > /mnt/pvc/from_pod.txt
cat /mnt/pvc/from_pod.txt
Node로 ssh하고 들어가 Pod에서 컨테이너로 만든 /mnt/pvc/from_pod.txt
가 Node에 있는지 확인할 수 있습니다.
minikube ssh
cat /mnt/pvc/from_pod.txt
학습 로그 해설
configmap 정의
포드에 저장 영역 정의
포드의 저장 영역에 configmap 정의
포드의 저장 영역에 보안을 정의합니다.
pv 정보
pvc 정의
마지막으로
완전히 자기만족한 학습 로그가 되어 버렸습니다. 앞으로도 k8s의 공부를 열심히 하고 싶습니다.
Reference
이 문제에 관하여(초학자가 Kubernetes를 처음 보았다 ~#3 node의 pv와 호스트 volume를 동기화해, pod 안에 pvc를 설정하는 등~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/theFirstPenguin/items/51235c48dc680d9f209d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
source <(kubectl completion zsh)
alias k=kubectl
complete -o default -F __start_kubectl k
watch 'kubectl get pod,service,namespace,deploy,ingress,cm,secret,persistentvolume,persistentvolumeclaim'
secret 만들기
환경 변수 등을 저장하는 secret을 만듭니다.
k create secret generic my-secret --from-literal=SECRET_KEY1=SECRET_VALUE1 --from literal=SECRET_KEY2=SECRET_VALUE2 --dry-run=client -o yaml > secret.yaml
k apply -f secret.yaml
secret.yaml
apiVersion: v1
data:
SECRET_KEY1: U0VDUkVUX1ZBTFVFMQ==
SECRET_KEY2: U0VDUkVUX1ZBTFVFMg==
kind: Secret
metadata:
creationTimestamp: null
name: my-secret
configmap 만들기
key-value 상점으로 정보를 저장하기 위해 configmap을 사용합니다.
k create configmap my-config --from-literal=TEST_ENV=Hello_World --dry-run=client -o yaml > configmap.yaml
k apply -f congifmap.yaml
configmap.yaml
apiVersion: v1
data:
TEST_ENV: Hello_World
kind: ConfigMap
metadata:
creationTimestamp: null
name: my-config
pv 만들기
노드에 pv를 만듭니다.
pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv
spec:
storageClassName: manual
capacity:
storage: 100M
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/pvc"
k apply -f pv.yaml
pvc 정의
포드의 정보는 포드와 함께 사라집니다. pod가 사라진 후에 pod가 가지는 정보를 유지하기 위해서는 pvc를 사용해 pv에 기입하는 것입니다.
pvc는 pv에서 저장 영역의 몫을 정의합니다.
pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10M
k apply -f pvc.yaml
포드 만들기
컴포넌트를 연결하여 아래 그림의 pod를 만듭니다.
pod.yamlapiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: helloworld-pod
name: helloworld-pod
spec:
containers:
- image: gcr.io/google-samples/hello-app:1.0
name: helloworld-pod
env:
- name: TEST_ENV
valueFrom:
configMapKeyRef:
name: my-config
key: TEST_ENV
ports:
- containerPort: 8080
resources: {}
volumeMounts:
- name: my-pv
mountPath: /mnt/pvc
- name: my-config-volume
mountPath: /my-config/TEST_ENV
- name: my-secret-volume
mountPath: /my-secret
readOnly: true
volumes:
- name: my-pv
persistentVolumeClaim:
claimName: pvc
- name: my-config-volume
configMap:
name: my-config
items:
- key: TEST_ENV
path: keys
- name: my-secret-volume
secret:
secretName: my-secret
노드의 pv와 호스트 볼륨의 동기화 동작 확인
포드의 컨테이너에 쉘로 들어가서 파일을 /mnt/pvc/from_pod.txt
위에 만듭니다.
k exec -it helloworld-pod sh
echo "from pod" > /mnt/pvc/from_pod.txt
cat /mnt/pvc/from_pod.txt
Node로 ssh하고 들어가 Pod에서 컨테이너로 만든 /mnt/pvc/from_pod.txt
가 Node에 있는지 확인할 수 있습니다.
minikube ssh
cat /mnt/pvc/from_pod.txt
학습 로그 해설
configmap 정의
포드에 저장 영역 정의
포드의 저장 영역에 configmap 정의
포드의 저장 영역에 보안을 정의합니다.
pv 정보
pvc 정의
마지막으로
완전히 자기만족한 학습 로그가 되어 버렸습니다. 앞으로도 k8s의 공부를 열심히 하고 싶습니다.
Reference
이 문제에 관하여(초학자가 Kubernetes를 처음 보았다 ~#3 node의 pv와 호스트 volume를 동기화해, pod 안에 pvc를 설정하는 등~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/theFirstPenguin/items/51235c48dc680d9f209d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: helloworld-pod
name: helloworld-pod
spec:
containers:
- image: gcr.io/google-samples/hello-app:1.0
name: helloworld-pod
env:
- name: TEST_ENV
valueFrom:
configMapKeyRef:
name: my-config
key: TEST_ENV
ports:
- containerPort: 8080
resources: {}
volumeMounts:
- name: my-pv
mountPath: /mnt/pvc
- name: my-config-volume
mountPath: /my-config/TEST_ENV
- name: my-secret-volume
mountPath: /my-secret
readOnly: true
volumes:
- name: my-pv
persistentVolumeClaim:
claimName: pvc
- name: my-config-volume
configMap:
name: my-config
items:
- key: TEST_ENV
path: keys
- name: my-secret-volume
secret:
secretName: my-secret
포드의 컨테이너에 쉘로 들어가서 파일을
/mnt/pvc/from_pod.txt
위에 만듭니다.k exec -it helloworld-pod sh
echo "from pod" > /mnt/pvc/from_pod.txt
cat /mnt/pvc/from_pod.txt
Node로 ssh하고 들어가 Pod에서 컨테이너로 만든
/mnt/pvc/from_pod.txt
가 Node에 있는지 확인할 수 있습니다.minikube ssh
cat /mnt/pvc/from_pod.txt
학습 로그 해설
configmap 정의
포드에 저장 영역 정의
포드의 저장 영역에 configmap 정의
포드의 저장 영역에 보안을 정의합니다.
pv 정보
pvc 정의
마지막으로
완전히 자기만족한 학습 로그가 되어 버렸습니다. 앞으로도 k8s의 공부를 열심히 하고 싶습니다.
Reference
이 문제에 관하여(초학자가 Kubernetes를 처음 보았다 ~#3 node의 pv와 호스트 volume를 동기화해, pod 안에 pvc를 설정하는 등~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/theFirstPenguin/items/51235c48dc680d9f209d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
완전히 자기만족한 학습 로그가 되어 버렸습니다. 앞으로도 k8s의 공부를 열심히 하고 싶습니다.
Reference
이 문제에 관하여(초학자가 Kubernetes를 처음 보았다 ~#3 node의 pv와 호스트 volume를 동기화해, pod 안에 pvc를 설정하는 등~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/theFirstPenguin/items/51235c48dc680d9f209d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)