o 실습개요
- rig와 box를 이용하여 매 5초마다 다른 형태의 fakeid와 box를 만드는 image를 생성하라
- Dockerfile image는 Docker Hub에 올려 놓아라
- 해당 image를 pull 받아서 yaml파일을 이용하여 pod를 생성하라
- configMap을 이용하여 box의 형태(boy, stone, girl 등), 변동하는 시간을 조정하여라
o rig와 box를 이용하여 매 5초마다 다른 형태의 fakeid와 box를 만드는 image를 생성하라.
- /build 디렉토리에 image를 생성하는 Dockerfile과 Dockerfile이 이용하는 genid.sh 쉘을 만들었다.
-- genid.sh 내용
-- rig와 box 유틸을 이용한 fakeid 표기를 진행한다.
-- $OPTION은 box의 형태를 말한다.
-- $INTERVAL은 명령어가 실행되는 시간을 말한다. 3초. 5초, 10초 가변적으로 진행
#!/bin/bash
mkdir -p /webdata
while true
do
/usr/bin/rig | /usr/bin/boxes -d $OPTION > /webdata/index.html
sleep $INTERVAL
done
-- Dockerfile 내용
FROM ubuntu:18.04
RUN apt-get update ; apt-get -y install rig boxes
ENV INTERVAL 5
ENV OPTION stone
ADD genid.sh /bin/genid.sh
RUN chmod +x /bin/genid.sh
ENTRYPOINT ["/bin/genid.sh"]
- dockerfile build를 진행하였다.
guru@master:~/build$ docker build -t kama8028/genid:env .
Sending build context to Docker daemon 3.072kB
Step 1/7 : FROM ubuntu:18.04
18.04: Pulling from library/ubuntu
e4ca327ec0e7: Pull complete
Digest: sha256:9bc830af2bef73276515a29aa896eedfa7bdf4bdbc5c1063b4c457a4bbb8cd79
Status: Downloaded newer image for ubuntu:18.04
---> 54919e10a95d
Step 2/7 : RUN apt-get update ; apt-get -y install rig boxes
---> Running in 65197b266540
Get:1 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Get:2 http://archive.ubuntu.com/ubuntu bionic InRelease [242 kB]
Get:3 http://security.ubuntu.com/ubuntu bionic-security/multiverse amd64 Packages [26.7 kB]
Get:4 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 Packages [1428 kB]
Get:5 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
Get:6 http://archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
Get:7 http://archive.ubuntu.com/ubuntu bionic/main amd64 Packages [1344 kB]
Get:8 http://security.ubuntu.com/ubuntu bionic-security/restricted amd64 Packages [567 kB]
Get:9 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages [2326 kB]
Get:10 http://archive.ubuntu.com/ubuntu bionic/universe amd64 Packages [11.3 MB]
Get:11 http://archive.ubuntu.com/ubuntu bionic/restricted amd64 Packages [13.5 kB]
Get:12 http://archive.ubuntu.com/ubuntu bionic/multiverse amd64 Packages [186 kB]
Get:13 http://archive.ubuntu.com/ubuntu bionic-updates/restricted amd64 Packages [600 kB]
Get:14 http://archive.ubuntu.com/ubuntu bionic-updates/multiverse amd64 Packages [34.4 kB]
Get:15 http://archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages [2202 kB]
Get:16 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages [2761 kB]
Get:17 http://archive.ubuntu.com/ubuntu bionic-backports/main amd64 Packages [11.3 kB]
Get:18 http://archive.ubuntu.com/ubuntu bionic-backports/universe amd64 Packages [11.4 kB]
~~ 생략
-- 생성된 dockerImage를 확인해 보았다.
guru@master:~/build$ docker images kama8028/genid
REPOSITORY TAG IMAGE ID CREATED SIZE
kama8028/genid env ddc6284c0b1f 20 minutes ago 102MB
o Docker Image를 Docker Hub에 update 하기
- docker push 명령어를 이용하여 docker Hub에 넣는다.(계정/이미지:버전으로 입력)
guru@master:~/build$ docker push kama8028/genid:env
The push refers to repository [docker.io/kama8028/genid]
cc5d296af07d: Pushed
b74410552ed3: Pushed
ad069ef95fde: Pushed
6babb56be259: Mounted from library/ubuntu
env: digest: sha256:74578b7983cbc59f2aee781b0b45810a62f37c5aa44deca7e295f2551807cd5e size: 1155
- docker Hub에 생성된 image를 확인 할 수 있다.
o Configmap을 만들기
- ConfigMap 명령어를 통해서 2가지(INTERVAL, OPTION)의 ConfigMap을 만들었다.
(상세한 내용은 ConfigMap 블로그를 참고 하면 된다. https://ghouse2020.tistory.com/61 )
guru@master:~$ kubectl create configmap kama8028-config --from-literal=INTERVAL=2 --from-literal=OPTION=girl
configmap/kama8028-config created
guru@master:~$ kubectl describe configmaps kama8028-config
Name: kama8028-config
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
INTERVAL:
----
2
OPTION:
----
girl
o yaml파일을 이용하여 pod 만들기
- configMap 적용된 genid.yaml(일부만 적용, INTERVAL), genid-whole.yaml(전체적용, INTERVAL, OPTION)을 만들고 실행을 해보았다.
-- genid.yaml 파일
apiVersion: v1
kind: Pod
metadata:
name: genid-stone
spec:
containers:
- image: kama8028/genid:env
env: --> 특정 환경변수만 실행하도록 설정
- name: INTERVAL
valueFrom:
configMapKeyRef:
name: kama8028-config
key: INTERVAL
name: fakeid
volumeMounts:
- name: html
mountPath: /webdata
- image: nginx:1.14
name: web-server
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
readOnly: true
ports:
- containerPort: 80
volumes:
- name: html
-- genid-whole.yaml
apiVersion: v1
kind: Pod
metadata:
name: genid-boy
spec:
containers:
- image: kama8028/genid:env
envFrom: --> 전체적용은 부분적용과 이름이 다르다
- configMapRef: --> 전체적용은 부분적용과 이름이 다르다
name: kama8028-config --> 4칸 뛰어쓰기 해야함
name: fakeid
volumeMounts:
- name: html
mountPath: /webdata
- image: nginx:1.14
name: web-server
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
readOnly: true
ports:
- containerPort: 80
volumes:
- name: html
emptyDir: {}
- pod 생성 및 pod 상세정보 확인
- 각 pod별 curl 명령어를 통해서 rig, box 출력을 확인 한다.
※ pod명은 gen-boy지만 환경변수를 OPTION=girl로 해서 girl box로 나왔다.
'G.Code > kubernetes' 카테고리의 다른 글
[kubernetes] 6.4 DaemonSet (0) | 2021.09.08 |
---|---|
[kubernetes] kubectl 명령어 모음 (0) | 2021.08.31 |
kubeadm, kubelet, kubectl 차이 (0) | 2021.08.25 |
[k8s] pod 생성 (1) | 2021.08.23 |
kubenetes init 설치오류 (0) | 2021.08.21 |