Kubernetes 커맨드 입력
쿠버네티스 / 도커 사용하여 파드의 아이피 주소를 출력
● apache_new.yml 생성하여 command 입력
---
apiVersion: v1
kind: Pod
metadata:
name: apache-pod
labels:
app: myweb-svc
spec:
containers:
- name: myweb-svc
image: httpd:2.4
ports:
- containerPort: 80
command: ["tail","-n","1","/etc/hosts"]
● CrashoLoopBackOff 상태로 계속 지속된다
>> 아파치가 올라가는데 문제가 있어서 계속 다시 올리는 시도 중
● logs 에는 정상으로 올라오긴 한다
[vagrant@ms work]$ kubectl logs apache-pod
10.244.2.105 apache-pod
오류 실패 기록
① args 에서 [ ] 형식만 인식한다
>> 당연히 안되는거였다;;
>> " > " 인식 안된다;;
---
apiVersion: v1
kind: Pod
metadata:
name: apache-pod
labels:
app: myweb-svc
spec:
containers:
- name: myweb-svc
image: httpd:2.4
ports:
- containerPort: 80
args: ["cat","/etc/hosts",">","/usr/local/apache2/htdocs/index.html"]
② 안됨... docker file history로 봤을 때 CMD 가 이미 등록되어있다 >> 계속 덮어씌운다
>> command 가 도커의 CMD 와 유사
---
apiVersion: v1
kind: Pod
metadata:
name: apache-pod
labels:
app: myweb-svc
spec:
containers:
- name: myweb-svc
image: httpd:2.4
ports:
- containerPort: 80
command: ["httpd","-DFORGROUND"]
# 밑에서 부터 읽는다
[vagrant@docker1 myweb]$ docker image history httpd:2.4
IMAGE CREATED CREATED BY SIZE COMMENT
2776f4da9d55 7 weeks ago CMD ["httpd-foreground"] 0B buildkit.dockerfile.v0
<missing> 7 weeks ago EXPOSE map[80/tcp:{}] 0B buildkit.dockerfile.v0
<missing> 7 weeks ago COPY httpd-foreground /usr/local/bin/ # buil… 138B buildkit.dockerfile.v0
<missing> 7 weeks ago STOPSIGNAL SIGWINCH 0B buildkit.dockerfile.v0
<missing> 7 weeks ago RUN /bin/sh -c set -eux; savedAptMark="$(a… 81.7MB buildkit.dockerfile.v0
<missing> 7 weeks ago ENV HTTPD_PATCHES= 0B buildkit.dockerfile.v0
<missing> 7 weeks ago ENV HTTPD_SHA256=fa16d72a078210a54c47dd5bef2… 0B buildkit.dockerfile.v0
<missing> 7 weeks ago ENV HTTPD_VERSION=2.4.58 0B buildkit.dockerfile.v0
<missing> 7 weeks ago RUN /bin/sh -c set -eux; apt-get update; a… 11MB buildkit.dockerfile.v0
<missing> 7 weeks ago WORKDIR /usr/local/apache2 0B buildkit.dockerfile.v0
<missing> 7 weeks ago RUN /bin/sh -c mkdir -p "$HTTPD_PREFIX" && … 0B buildkit.dockerfile.v0
<missing> 7 weeks ago ENV PATH=/usr/local/apache2/bin:/usr/local/s… 0B buildkit.dockerfile.v0
<missing> 7 weeks ago ENV HTTPD_PREFIX=/usr/local/apache2 0B buildkit.dockerfile.v0
<missing> 7 weeks ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 7 weeks ago /bin/sh -c #(nop) ADD file:eb6a3def1f69e7665… 74.8MB
③ 도커로 전환
● Dockerfile
FROM httpd
COPY ./entrypoint.sh .
RUN ./entrypoint.sh
CMD /usr/sbin/httpd -f /etc/apache2/httpd.conf -DFOREGROUND
● entrypoint.sh
# chmod 755
# tail -n 1 로 입력하니까 index.html 에 내용 전부가 제대로 들어가질 않는다 [ 일부만 들어간다 ]
cat /etc/hosts > /usr/local/apache2/htdocs/index.html
>>> 컨테이너가 올라가질 못한다
작동
① kubectl 로 실행하는 방법 ( feat. 괌 )
● | 로 / bin / sh - c [ 커맨드 실행 ] 로 args 로 내린다
● apache2 를 다시 다운로드해서 실행하는 이유는 command 를 사용하면 image 를 못 읽어낸다
---
apiVersion: v1
kind: Pod
metadata:
name: guam-pod
labels:
app: guam-svc
spec:
containers:
- name: guam-svc
image: httpd:2.4
ports:
- containerPort: 80
command: ["/bin/sh","-c"]
args:
- |
apt-get update
apt-get install net-tools
apt-get install apache2 -y
service apache2 restart
cat /etc/hosts > /var/www/html/index.html
service apache2 restart
sleep 3600s
○ 직접 exec -it -- /bin/bash 로 직접 접속해서 찾아볼 필요 없이 - c 옵션을 넣어서 한번에 볼 수 있다
kubectl exec -it guam-pod -- /bin/bash -c "service apache2 status"
apache2 is running.
▩ 안된다;;;;;
② Docker 사용하여 실행
● 명령어 실행을 위한 경로 확인
[vagrant@docker1 myweb]$ docker run --rm -it httpd /bin/bash
root@9263fc74b568:/usr/local/apache2# whereis httpd
httpd: /usr/local/apache2/bin/httpd
● Dockerfile
FROM httpd
COPY ./entrypoint.sh .
CMD ./entrypoint.sh
● entrypoint.sh 수정
cat /etc/hosts > /usr/local/apache2/htdocs/index.html
/usr/local/apache2/bin/httpd -D FOREGROUND
● docker image 올리기
docker tag httpd looeon/mya
docker push looeon/mya
● 쿠버네티스 장비에서 mya image 를 위한 yaml 파일 생성
---
apiVersion: v1
kind: Pod
metadata:
name: apache-pod
labels:
app: myweb-svc
spec:
containers:
- name: myweb-svc
image: looeon/mya
ports:
- containerPort: 80
● 윈도우 접속을 위한 서비스 파일 ( mya-svc.yaml )
---
apiVersion: v1
kind: Service
metadata:
name: apache-service
spec:
ports:
- name: myweb-svc
port: 9900
targetPort: 80
selector:
app: myweb-svc
type: NodePort
[vagrant@ms work]$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
apache-service NodePort 10.96.194.217 <none> 9900:32031/TCP 2m31s
# 다음번에는 tail -n 1 써먹자