Pod 내에 container 생성
여러개의 container 생성 및 실행
# 오브젝트 구성파일 생성
[vagrant@master work]$ cat apache.yaml
apiVersion: v1
kind: Pod
metadata:
name: test
spec:
containers:
- name: first
image: httpd:2.4
- name: second
image: alpine
command: ["/bin/sleep","3600s"]
# 적용
[vagrant@master work]$ kubectl apply -f apache.yaml
pod/test created
# 생김
[vagrant@master work]$ kubectl get pods
NAME READY STATUS RESTARTS AGE
test 2/2 Running 0 4m5s
컨테이너 세부정보
더보기
[vagrant@master work]$ kubectl describe pods test
Name: test
Namespace: myns
Priority: 0
Service Account: default
Node: worker2/192.168.98.30
Start Time: Fri, 08 Mar 2024 15:45:21 +0900
Labels: <none>
Annotations: <none>
Status: Running
IP: 10.244.2.56
IPs:
IP: 10.244.2.56
Containers:
first:
Container ID: containerd://7314c4036fd159fce2a41c544cf1197fa1bb57bace50c460a5ebbba0f81d2aa4
Image: httpd:2.4
Image ID: docker.io/library/httpd@sha256:104f07de17ee186c8f37b9f561e04fbfe4cf080d78c6e5f3802fd08fd118c3da
Port: <none>
Host Port: <none>
State: Running
Started: Fri, 08 Mar 2024 15:45:22 +0900
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-dq4bf (ro)
second:
Container ID: containerd://4abee6f50a343aecb9844b75dee4a072b18a3ae079f829693ef838f34f259ffe
Image: alpine
Image ID: docker.io/library/alpine@sha256:c5b1261d6d3e43071626931fc004f70149baeba2c8ec672bd4f27761f8e1ad6b
Port: <none>
Host Port: <none>
Command:
/bin/sleep
3600s
State: Running
Started: Fri, 08 Mar 2024 15:45:27 +0900
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-dq4bf (ro)
Conditions:
Type Status
PodReadyToStartContainers True
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
kube-api-access-dq4bf:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 6m59s default-scheduler Successfully assigned myns/test to worker2
Normal Pulled 6m59s kubelet Container image "httpd:2.4" already present on machine
Normal Created 6m59s kubelet Created container first
Normal Started 6m58s kubelet Started container first
Normal Pulling 6m58s kubelet Pulling image "alpine"
Normal Pulled 6m53s kubelet Successfully pulled image "alpine" in 5.222s (5.222s including waiting)
Normal Created 6m53s kubelet Created container second
Normal Started 6m53s kubelet Started container second
컨테이너 접속
# 디폴트 접속 (첫번째꺼로 접속됨)
[vagrant@master work]$ kubectl exec -it test /bin/bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
Defaulted container "first" out of: first, second
root@test:/usr/local/apache2# exit
exit
# first로 접속
[vagrant@master work]$ kubectl exec -it test -c first /bin/bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
root@test:/usr/local/apache2# exit
exit
# second 접속 (알파인은 /bin/sh)
[vagrant@master work]$ kubectl exec -it test -c second /bin/sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
/ # exit
IP 확인해보면 둘다 같다.
# apache IP
root@test:/usr/local/apache2# hostname -i
10.244.2.56
# alpine IP
/ # ip a s eth0
2: eth0@if55: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1450 qdisc noqueue state UP
link/ether 96:d4:df:ec:e1:41 brd ff:ff:ff:ff:ff:ff
inet 10.244.2.56/24 brd 10.244.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::94d4:dfff:feec:e141/64 scope link
valid_lft forever preferred_lft forever
# alpine에서 본인 IP로 접속해보면 apache의 홈페이지가 나옴
/ # curl localhost
<html><body><h1>It works!</h1></body></html>
/ # curl 10.244.2.56
<html><body><h1>It works!</h1></body></html>
즉, Pod 내의 컨테이너들은 IP를 공유하며
연동 되어있는 것을 확인 할 수 있다.
'Container > Kubernetes' 카테고리의 다른 글
Empty Dir (0) | 2024.03.12 |
---|---|
Kubernetes nodes Roles 변경 (0) | 2024.03.12 |
Deployment (0) | 2024.03.08 |
ReplicaSet (0) | 2024.03.07 |
kubernetes namespace (0) | 2024.03.07 |