작성
·
413
·
수정됨
0
안녕하세요 강의 잘 듣고 있습니다.
강의 내용중의 chk-hn 이미지를 사용하셨는데, 소스를 좀 볼 수 있을까요?
문제는 제 스스로 chk-hn 이미지를 만들어 도커허브에서 내려받아 실행해도,
--target-port=3000 옵션이 먹지 않는 것 같습니다.
kubectl expose deployment chk-hn --type=LoadBalancer --port=80 --target-port=3000
C:\Users\tjoeun>curl 192.168.1.11
curl: (28) Failed to connect to 192.168.1.11 port 80 after 21003 ms: Couldn't connect to server
[root@m-k8s ~]# kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
chk-hn LoadBalancer 10.110.168.22 192.168.1.11 80:31690/TCP 5s
deploy-nginx NodePort 10.105.80.228 <none> 80:32118/TCP 22m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7h46m
nginx NodePort 10.111.41.62 <none> 80:30987/TCP 3h47m
[root@m-k8s ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
chk-hn-7b767c6d5d-6fqkd 0/1 ImagePullBackOff 0 25m 172.16.221.134 w1-k8s <none> <none>
chk-hn-7b767c6d5d-bvqvk 0/1 ImagePullBackOff 0 25m 172.16.103.134 w2-k8s <none> <none>
chk-hn-7b767c6d5d-mvhh2 0/1 ImagePullBackOff 0 26m 172.16.132.6 w3-k8s <none> <none>
[root@m-k8s ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
chk-hn LoadBalancer 10.100.109.67 192.168.1.11 80:30878/TCP 33m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 30h
[root@m-k8s ~]# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
m-k8s Ready control-plane 29h v1.25.0 192.168.1.10 <none> CentOS Linux 7 (Core) 3.10.0-1127.19.1.el7.x86_64 containerd://1.6.7
w1-k8s Ready <none> 29h v1.25.0 192.168.1.101 <none> CentOS Linux 7 (Core) 3.10.0-1127.19.1.el7.x86_64 containerd://1.6.7
w2-k8s Ready <none> 29h v1.25.0 192.168.1.102 <none> CentOS Linux 7 (Core) 3.10.0-1127.19.1.el7.x86_64 containerd://1.6.7
w3-k8s Ready <none> 29h v1.25.0 192.168.1.103 <none> CentOS Linux 7 (Core) 3.10.0-1127.19.1.el7.x86_64 containerd://1.6.7
제 nodejs 소스는 아래와 같습니다. 감사합니다.
const http = require("http");
const hostname = "0.0.0.0";
//const hostname = "127.0.0.1"; // 서버 호스트 이름
const port = 3000; // 서버 포트
const server = http.createServer((req, res) => {
const host = req.headers.host; // 요청의 호스트 이름
console.log(`호스트: ${host}`); // 콘솔에 호스트 이름 출력
res.statusCode = 200;
res.setHeader("Content-Type", "text/plain; charset=utf-8");
res.end(
`안녕하세요, Node.js HTTP 서버입니다!\n접속한 호스트네임과 포트는 ${hostname}:${port}입니다.`
);
});
server.listen(port, hostname, () => {
console.log(`서버 실행 중: http://${hostname}:${port}/`);
});
Dockerfile
# 사용할 이미지를 선택합니다.
FROM node:14-alpine
# 앱 디렉토리를 생성하고, 작업 디렉토리로 설정합니다.
WORKDIR /app
# 앱 의존성을 설치합니다.
COPY package*.json ./
RUN npm install
# 앱 소스를 추가합니다.
COPY . .
# 컨테이너에서 사용할 포트를 지정합니다.
EXPOSE 3000
# 컨테이너를 시작할 때 실행할 명령어를 설정합니다.
CMD [ "npm", "start" ]
답변 1
0
안녕하세요
학습용으로 만든거라 보안 자체를 신경 쓰지 않은 것이지만, chk-hn에 대한 Dockerfile이 필요하시다면
이 내용을 보시면 될 것 같습니다.
https://github.com/sysnet4admin/_Book_k8sInfra/blob/main/ch4/4.4.3/echo-hname/Dockerfile
이게 rename 되었다고 보시면 될 것 같습니다.