나그네소

kubernetes pod container 정리 본문

Cloud/Kubernetes

kubernetes pod container 정리

나그네소티 2022. 11. 9. 19:50

kubernetes pod에 대하여 정리 하는 시간을 가져 보자.

 

1. app.js(web servcie progrom)

8080 port로 접속해 오면 200으로 반송해 주는 app.js  web service 프로그램
cat > app.js
const http = require('http');
const os = require('os');
console.log("Test server starting...");
var handler = function(req, res)
{
    res.writeHead(200);
    res.end("Container Hostname: " + os.hostname() + "\n");
};

var www = http.createServer(handler);
www.listen(8080);

 

1-1) Docker file 

cat > Dockerfie
FROM node:12
COPY app.js/app.js
ENTRYPOINT ["node","app.js"]

 

1-2) execute

$> docker build -t smlinux/appjs .
$> docker push smlinux/appjs

: node:12 컨테이너 위에 app.js 올려 놓는다.

 

 

2. pod

* 컨테이너를 표현하는 k8s Api 최소 단위
* POD 하나에는 여러개의 컨테이너를 만들 수 있다. 

 

3. pod cli command / yaml 파일 비교

 

3-1) cli

kubectl run webserver --image=nginx:1.14

 

3-2) yaml

apkVersion: v1 //apivesrion v1
kind: Pod //종류는 pod 이다.
metadata:
  name: webserver // 실행 이름은 webserver로 할꺼야
spec:
  containers:
  -  name: nginx-container // 컨테이너 구분 이름
      image: nginx:1.14 //image nginx 1.14
      imagePullPolicy: Always // hub downlad 받을 정책
      ports:
      - containerPort: 80
         protocol: TCP

 

3-3) pod 생성해 보기

  • cli
    : k run web1 --image=nginx:1.14 --port=80
  • pod-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
  - name: nginx-container
    image: nginx:1.14
    ports:
    - containerPort: 80
      protocol: TCP
      
kuber-master:/home/son_kube/tmp] k apply -f pod-nginx.yaml
pod/nginx-pod created

 

3-4) pod 하나에 여러개의 container 생성 하기

  • pod-multi.yaml
apiVersion: v1
kind: Pod
metadata:
  name: multipod
spec:
  containers:
  - name: nginx-container
    image: nginx:1.14
    ports:
    - containerPort: 80
  - name: centos-container
    image: centos:7
    command:
    - sleep
    - "10000"
  • 확인
kuber-master:/home/son_kube/tmp] k get pods
NAME                               READY   STATUS    RESTARTS      AGE
multipod                           2/2     Running   0             7m1s
nginx-pod                          1/1     Running   0             21m
: multipod pod에 nginx-container, centos-container 2개의 컨테이너가 실행 된다.

: pod가 2개 이지만 IP는 동일하고 hostname도 동일하다.
 
  • 하나의 IP로 접속 되어 처리 되고 있는지 테스트 해보자
* nginx-container 접속
kuber-master:/home/son_kube/tmp] k exec -it multipod -c nginx-container bash
root@multipod:/usr/share/nginx/html# cat index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
root@multipod:/usr/share/nginx/html# echo "TEST web" > index.html


kuber-master:/home/son_kube/tmp] curl 10.244.1.218
TEST web

 

 

 

 

'Cloud > Kubernetes' 카테고리의 다른 글

kubernetes livenessProbe  (0) 2022.11.09
kubernetes POD 동작 Flow  (0) 2022.11.09
kubernetes yaml 템플릿 과 API  (0) 2022.11.09
Kubernetes for Goldilocks DB POD 생성  (0) 2022.11.08
kubernets namespace  (0) 2022.11.02