k8s에서 nginx를 시작하고 Welcome to nginx
8633 단어 nginxkubernetesAWS
목표
공식 문서에 나열된 Nginx 매니페스트를 배포하여 외부에서 액세스 할 수있게합니다.
권장 환경
만들 파일 목록
work
├─ debug.yaml
├─ Dockerfile
├─ nginx-deployment.yaml
└─ nginx-service.yaml
debug용 포드 생성
Dockerfile 만들기(Cent OS)
Dockerfile
FROM centos:7
# コンテナイメージ作成
docker build -t debug .
# イメージが作成されたか確認
docker images | grep debug
# コンテナ動作確認
docker run -it debug bash
포드 만들기
매니페스트 만들기
debug.yaml
apiVersion: v1
kind: Pod
metadata:
name: debug
namespace: default
spec:
containers:
- name: debug
image: debug
imagePullPolicy: Never # ローカルに存在するコンテナイメージを取得する
command:
- "sh"
- "-c"
args:
- |
while true
do
sleep 5
done
매니페스트를 k8s에 배포
kubectl apply -f debug.yaml
포드 시작 확인
kubectl get pod
Nginx의 Deployment 작성(공식 문서의 것)
nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
매니페스트를 k8s에 배포
kubectl apply -f nginx-deployment.yaml
Depoyments 확인
kubectl get deployments
포드 시작 및 IP 주소 확인
kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
debug 1/1 Running 0 16m 192.168.29.97 k8s.master <none> <none>
nginx-deployment-6b474476c4-djqqv 1/1 Running 0 3m48s 192.168.29.98 k8s.master <none> <none>
nginx-deployment-6b474476c4-dww8l 1/1 Running 0 3m48s 192.168.29.99 k8s.master <none> <none>
nginx-deployment-6b474476c4-gjm29 1/1 Running 0 3m48s 192.168.29.100 k8s.master <none> <none>
debug용 Pod를 사용하여 소통 확인
# Podの中に入る
kubectl exec -it debug bash
# curlコマンド実行
curl 192.168.29.98
curl 192.168.29.99
curl 192.168.29.100
Nginx 서비스 생성(k8s 클러스터 외부에서 액세스할 수 있도록 하기 위한 것)
공식 문서 참고
nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30000
type: NodePort
매니페스트를 k8s에 배포
kubectl apply -f nginx-service.yaml
서비스 확인
kubectl get svc
서비스 세부정보
kubectl describe service nginx-svc
Name: nginx-svc
Namespace: default
Labels: <none>
Annotations: Selector: app=nginx
Type: NodePort
IP: 10.96.67.76
Port: <unset> 80/TCP
TargetPort: 80/TCP
NodePort: <unset> 30000/TCP
Endpoints: 192.168.29.100:80,192.168.29.98:80,192.168.29.99:80
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
디버그용 포드를 사용하여 세 개의 움직이는 포드를 자동으로 할당하는지 확인
# Podの中に入る
kubectl exec -it debug bash
# curlコマンド実行
# curl <サービス名>
curl nginx-svc
클러스터 외부에서 소통 확인 (DebugPod에 들어 있지 않은 상태)
# kubectl describe service nginx-svcで表示される「IP」の値
curl 10.96.67.76
브라우저에서도 볼 수 있도록
가상 머신의 포트 번호 30000 열기
AWS의 경우 보안 그룹 인바운드 규칙을 편집하여 포트 열기
브라우저에 액세스
http://<仮想マシンのIPアドレス>:30000
Reference
이 문제에 관하여(k8s에서 nginx를 시작하고 Welcome to nginx), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/marc-town/items/97cefc88cf62e5c5faeb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)