다음은 쿠버네티스 스터디 자료를 참고해 정리한 내용입니다.
1
파드 생성 시 실행 명령(command = 도커의 Entrypoint)과 파라미터(arge = 도커의 Cmd)를 전달할 수 있습니다
ec2 접속
master node의 api 서버 접속
ssh -i ~/.ssh/id_rsa ubuntu@api.k8s.serverchk.com
kubectl delete pod --all
Pod 생성시 command와 args 사용이 가능하다.
사용해보고 내용을 이해 하자
2
cmd-args라는 pod하나 생성 , nginx 이미지로 생성
kubectl run cmd-args --image nginx
3
kubectl get pod -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
cmd-args 1/1 Running 0 32s 100.111.183.22 ip-172-20-46-12.ap-northeast-1.compute.internal
4
cmd-args.yaml 생성
cat << EOF > cmd-args.yaml
apiVersion: v1
kind: Pod
metadata:
name: cmd-args
spec:
restartPolicy: OnFailure
containers:
- image: nginx
name: cmd-args-nginx
ports:
- containerPort: 80
protocol: TCP
command: ["/bin/echo"]
args: ["hello"]
EOF
5
kubectl apply -f cmd-args.yaml
6
topasvga@cloudshell:~ (ap-seoul-1)$ kubectl logs cmd-args
hello
7
kubectl delete pod --all
8
kubectl get pod -owide
1
pod에 환경 변수 전달
env 사용
2
ubuntu@ip-172-20-41-255:~$ more env.yaml
apiVersion: v1
kind: Pod
metadata:
name: mynginx
spec:
containers:
- image: nginx:latest
name: mynginx
ports:
- containerPort: 80
env:
- name: MYPASSWORD
value: QWE123
3
ubuntu@ip-172-20-41-255:~$ kubectl apply -f env.yaml
pod/mynginx created
4
ubuntu@ip-172-20-41-255:~$ kubectl exec mynginx -- env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=mynginx
NGINX_VERSION=1.21.0
NJS_VERSION=0.5.3
PKG_RELEASE=1~buster
MYPASSWORD=QWE123
KUBERNETES_PORT=tcp://100.64.0.1:443
KUBERNETES_PORT_443_TCP=tcp://100.64.0.1:443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_ADDR=100.64.0.1
KUBERNETES_SERVICE_HOST=100.64.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443
HOME=/root
5
topasvga@cloudshell:~ (ap-seoul-1)$ kubectl exec mynginx -- env | grep MYPASSWORD
MYPASSWORD=QWE123
보안은 되지 않는다~
6
kubectl delete pod --all
7
보안을 위해서 configmap과 secret라는 object를 사용한다.
Pod 데이터 저장하기 위해 volume을 사용한다.
워커 노드로 테스트
1
워커 노드 /cndk 디렉토리 공유, Pod가 사용한다.
2
cat << EOF > hostpath.yaml
apiVersion: v1
kind: Pod
metadata:
name: hostpath
spec:
containers:
- name: hostpath
image: busybox
args: [ "tail", "-f", "/dev/null" ]
volumeMounts:
- name: hostpath-volume
mountPath: /etc/data
volumes:
- name: hostpath-volume
hostPath:
path: /cndk
EOF
3
생성 및 확인
kubectl apply -f hostpath.yaml && watch "kubectl describe pod hostpath | grep Events -A 12"
4
root@k8s-w1:~# ls /
bin cndk
5
pod에 파일 생성
[root@k8s-m ~ (kube:default)]# kubectl exec hostpath -- touch /etc/data/test.txt
6
woker node에 디렉토리 확인
ls /cndk
test.txt
7
파드 삭제
kubectl delete pod --all
다음과정
https://brunch.co.kr/@topasvga/1672
감사합니다.