Kubernetes 배우기(2)~Pod 만들기
10779 단어 kubernetesDocker
개요
지난번에서 쿠베르네츠의 집단을 구축했기 때문에 먼저 Pod을 만들어 보았다.
또한 지난번에는 Kubernetes의 v0.19.3을 사용했지만 2015/7/21에 정식으로 v1을 발표했기 때문에 이번에는 v1.0.1을 사용했다.
포드가 뭐예요?
몇 개의 컨테이너를 조로 나누어 만든 물건.Kubernetes는 Pod 단위로 생성, 시작, 중지, 삭제 작업을 수행합니다(컨테이너 단위는 아님).그래서 용기를 만들고 싶을 때도'용기를 포함하는Pod'을 만든다.
또한 다음과 같은 특징이 있다.
→ 즉, 동일한 IP를 사용할 수도 있고 서로의 과정을 볼 수도 있다.
1. Kubernetes 클러스터 구축
환경이 AWS인지 확인합니다.작업 EC2 인스턴스를 시작하고 Kubernetes 클러스터를 구축합니다.구축 단계는 "Kubernetes 학습(1) - AWS에 클러스터 구축" 를 참조하십시오.
구축된 후, 경로를 작업용 실례의kubectl 명령을 통과합니다.예를 들면 이런 느낌.export PATH=/home/ec2-user/kubernetes/platforms/linux/amd64:$PATH
한편 이번에 구축된 환경은 다음과 같다.VPC가 분리된 것은 Kubernetes의 설정 스크립트가 자체 VPC를 만들었기 때문입니다.
2. 기본 Pod 생성 및 삭제
점 생성
작업 인스턴스에서 Pod 정의 파일을 만듭니다.우선, nginx 용기만 포함하는 Pod을 정의합니다.또한 정의는 yaml이나 json으로 쓸 수 있지만 여기는 yaml로 쓸 수 있습니다.
pod-nginx.yaml:apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx-container
image: nginx
ports:
- containerPort: 80
그리고 Pod을 만듭니다.kubectl create -f pod-nginx.yaml
만들었는지 확인해 봐.$ kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 39s
노드 확인
Pod가 생성된 것은 알지만 Pod에 대한 자세한 정보를 표시하면 용기가 어느 노드(Minion)에서 생성되었는지 알 수 있습니다.$ kubectl describe pods nginx-pod
Name: nginx-pod
Namespace: default
Image(s): nginx
Node: ip-172-20-0-232.ap-northeast-1.compute.internal/172.20.0.232
Labels: <none>
Status: Running
Reason:
Message:
IP: 10.244.2.5
Replication Controllers: <none>
Containers:
nginx-container:
Image: nginx
Limits:
cpu: 100m
State: Running
Started: Sat, 01 Aug 2015 07:55:04 +0000
Ready: True
Restart Count: 0
Conditions:
Type Status
Ready True
(以下略)
Pod의 Minion(172.20.0.232)을 배치한 것을 알았기 때문에 작업용 실례에서 SSH로 연결해 보았습니다.$ ssh -i ~/.ssh/kube_aws_rsa [email protected]
<보충>
export PATH=/home/ec2-user/kubernetes/platforms/linux/amd64:$PATH
점 생성
작업 인스턴스에서 Pod 정의 파일을 만듭니다.우선, nginx 용기만 포함하는 Pod을 정의합니다.또한 정의는 yaml이나 json으로 쓸 수 있지만 여기는 yaml로 쓸 수 있습니다.
pod-nginx.yaml:
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx-container
image: nginx
ports:
- containerPort: 80
그리고 Pod을 만듭니다.kubectl create -f pod-nginx.yaml
만들었는지 확인해 봐.$ kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 39s
노드 확인
Pod가 생성된 것은 알지만 Pod에 대한 자세한 정보를 표시하면 용기가 어느 노드(Minion)에서 생성되었는지 알 수 있습니다.
$ kubectl describe pods nginx-pod
Name: nginx-pod
Namespace: default
Image(s): nginx
Node: ip-172-20-0-232.ap-northeast-1.compute.internal/172.20.0.232
Labels: <none>
Status: Running
Reason:
Message:
IP: 10.244.2.5
Replication Controllers: <none>
Containers:
nginx-container:
Image: nginx
Limits:
cpu: 100m
State: Running
Started: Sat, 01 Aug 2015 07:55:04 +0000
Ready: True
Restart Count: 0
Conditions:
Type Status
Ready True
(以下略)
Pod의 Minion(172.20.0.232)을 배치한 것을 알았기 때문에 작업용 실례에서 SSH로 연결해 보았습니다.$ ssh -i ~/.ssh/kube_aws_rsa [email protected]
<보충># Minon 内でコマンドを実行してます
ubuntu@ip-172-20-0-232:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d3623b586044 nginx:latest "nginx -g 'daemon of 12 minutes ago Up 12 minutes k8s_nginx-container.45a349f6_nginx-pod_default_9e9fdeef-3822-11e5-b530-06570fe694c3_f999e4f1
(以下略: 他にも Kubernetes 自身が使用するコンテナが表示される)
Pod에 대한 연결 확인
작성된 Pod에 IP 주소를 할당합니다(다음 명령의 10.244.2.5).그러나 이 IP는 작업용 인스턴스와 같은 외부에서 연결할 수 없습니다.
$ kubectl describe pods nginx-pod
Name: nginx-pod
Namespace: default
Image(s): nginx
Node: ip-172-20-0-232.ap-northeast-1.compute.internal/172.20.0.232
Labels: <none>
Status: Running
Reason:
Message:
IP: 10.244.2.5 ★これ★
(以下略)
연결을 확인하려면 먼저 Master나 Minon에 들어가는 것이 간단한데 이번에는 Master를 연결해 보았다.$ ssh -i ~/.ssh/kube_aws_rsa [email protected]
Pod의 IP를 Master에서 액세스합니다.# Minon 内でコマンドを実行してます
ubuntu@ip-172-20-0-232:~$ curl http://10.244.2.5
nginx로부터 잘 대답해 주세요.점 삭제
작업용 인스턴스에서 다음 명령을 실행합니다.
$ kubectl delete pod nginx-pod
pods/nginx-pod
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
3. 여러 용기를 포함하는 Pod 만들기
여러 용기(nginx와mongo)를 포함하는 Pod를 만들어 보세요.제작뿐만 아니라 네트워크 설정이 공유되는지도 확인해야 한다.우선, Pod의 정의를 만듭니다.
pod-nginx-mongo.yaml:apiVersion: v1
kind: Pod
metadata:
name: www-pod
spec:
containers:
- name: nginx-container
image: nginx
ports:
- containerPort: 80
- name: mongo-container
image: mongo
그리고 팟을 만들어요.$ kubectl create -f pod-nginx-mongo.yaml
Pod 세부 정보를 표시할 때 두 개의 용기를 표시합니다.$ kubectl describe pods www-pod
Name: www-pod
Namespace: default
Image(s): nginx,mongo
Node: ip-172-20-0-232.ap-northeast-1.compute.internal/172.20.0.232
Labels: <none>
Status: Running
Reason:
Message:
IP: 10.244.2.6
Replication Controllers: <none>
Containers:
nginx-container:
Image: nginx
Limits:
cpu: 100m
State: Running
Started: Sat, 01 Aug 2015 10:37:30 +0000
Ready: True
Restart Count: 0
mongo-container:
Image: mongo
Limits:
cpu: 100m
State: Running
Started: Sat, 01 Aug 2015 10:37:46 +0000
Ready: True
Restart Count: 0
Conditions:
Type Status
Ready True
(以下略)
이어서 이 컨테이너를 설치한 미니언에 들어가 보자.$ ssh -i ~/.ssh/kube_aws_rsa 52.68.181.10
실행 중인 컨테이너를 미니온에 표시합니다.확실히,nginx와mongodb의 용기는 같은 Minion에서 실행됩니다.ubuntu@ip-172-20-0-232:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8797453df689 mongo:latest "/entrypoint.sh mong About a minute ago Up About a minute k8s_mongo-container.8bc52932_www-pod_default_4f9c804f-3839-11e5-b530-06570fe694c3_81c950e5
ff67e24c8bce nginx:latest "nginx -g 'daemon of 2 minutes ago Up 2 minutes k8s_nginx-container.45a349f6_www-pod_default_4f9c804f-3839-11e5-b530-06570fe694c3_677c7dfd
(以下略)
각 용기 안의 네트워크 설정이 어떤지 봅시다.여기,dockerexec 명령을 사용하여 용기에서 ipaddr 명령을 실행합니다.확실히 같은 설정이야.
컨테이너:ubuntu@ip-172-20-0-232:~$ sudo docker exec 8797453df689 ip addr show eth0
13: eth0: <BROADCAST,UP,LOWER_UP> mtu 9001 qdisc noqueue state UP
link/ether 02:42:0a:f4:02:06 brd ff:ff:ff:ff:ff:ff
inet 10.244.2.6/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:aff:fef4:206/64 scope link
valid_lft forever preferred_lft forever
mongo 컨테이너:ubuntu@ip-172-20-0-232:~$ sudo docker exec ff67e24c8bce ip addr show eth0
13: eth0: <BROADCAST,UP,LOWER_UP> mtu 9001 qdisc noqueue state UP group default
link/ether 02:42:0a:f4:02:06 brd ff:ff:ff:ff:ff:ff
inet 10.244.2.6/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:aff:fef4:206/64 scope link
valid_lft forever preferred_lft forever
웹 페이지 정보
Kubernetes 101 - Kubectl CLI and Pods
Reference
이 문제에 관하여(Kubernetes 배우기(2)~Pod 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Arturias/items/62499b961b5d7375f608
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
apiVersion: v1
kind: Pod
metadata:
name: www-pod
spec:
containers:
- name: nginx-container
image: nginx
ports:
- containerPort: 80
- name: mongo-container
image: mongo
$ kubectl create -f pod-nginx-mongo.yaml
$ kubectl describe pods www-pod
Name: www-pod
Namespace: default
Image(s): nginx,mongo
Node: ip-172-20-0-232.ap-northeast-1.compute.internal/172.20.0.232
Labels: <none>
Status: Running
Reason:
Message:
IP: 10.244.2.6
Replication Controllers: <none>
Containers:
nginx-container:
Image: nginx
Limits:
cpu: 100m
State: Running
Started: Sat, 01 Aug 2015 10:37:30 +0000
Ready: True
Restart Count: 0
mongo-container:
Image: mongo
Limits:
cpu: 100m
State: Running
Started: Sat, 01 Aug 2015 10:37:46 +0000
Ready: True
Restart Count: 0
Conditions:
Type Status
Ready True
(以下略)
$ ssh -i ~/.ssh/kube_aws_rsa 52.68.181.10
ubuntu@ip-172-20-0-232:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8797453df689 mongo:latest "/entrypoint.sh mong About a minute ago Up About a minute k8s_mongo-container.8bc52932_www-pod_default_4f9c804f-3839-11e5-b530-06570fe694c3_81c950e5
ff67e24c8bce nginx:latest "nginx -g 'daemon of 2 minutes ago Up 2 minutes k8s_nginx-container.45a349f6_www-pod_default_4f9c804f-3839-11e5-b530-06570fe694c3_677c7dfd
(以下略)
ubuntu@ip-172-20-0-232:~$ sudo docker exec 8797453df689 ip addr show eth0
13: eth0: <BROADCAST,UP,LOWER_UP> mtu 9001 qdisc noqueue state UP
link/ether 02:42:0a:f4:02:06 brd ff:ff:ff:ff:ff:ff
inet 10.244.2.6/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:aff:fef4:206/64 scope link
valid_lft forever preferred_lft forever
ubuntu@ip-172-20-0-232:~$ sudo docker exec ff67e24c8bce ip addr show eth0
13: eth0: <BROADCAST,UP,LOWER_UP> mtu 9001 qdisc noqueue state UP group default
link/ether 02:42:0a:f4:02:06 brd ff:ff:ff:ff:ff:ff
inet 10.244.2.6/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:aff:fef4:206/64 scope link
valid_lft forever preferred_lft forever
Kubernetes 101 - Kubectl CLI and Pods
Reference
이 문제에 관하여(Kubernetes 배우기(2)~Pod 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Arturias/items/62499b961b5d7375f608텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)