이번 포스트는 구성된 쿠버네티스의 스모크 테스트를 진행합니다.
이전 시리즈와 같이, 작업에 사용되는 명령어는 아래 깃허브에서 확인 가능합니다.
URL : https://github.com/go4real/kubernetes-the-hard-way-aws/blob/master/docs/13-smoke-test.md
$ kubectl create secret generic kubernetes-the-hard-way \
--from-literal="mykey=mydata"
# controller-0 서버 Public IP 조회
$ external_ip=$(aws ec2 describe-instances --filters \
"Name=tag:Name,Values=controller-0" \
"Name=instance-state-name,Values=running" \
--output text --query 'Reservations[].Instances[].PublicIpAddress')
# ETCDCTL 사용하여 secret 파일 16진수로 출력
ssh -i kubernetes.id_rsa ubuntu@${external_ip} \
"sudo ETCDCTL_API=3 etcdctl get \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/etcd/ca.pem \
--cert=/etc/etcd/kubernetes.pem \
--key=/etc/etcd/kubernetes-key.pem\
/registry/secrets/default/kubernetes-the-hard-way | hexdump -C"
# nginx 이미지로 pod 생성
$ kubectl create deployment nginx --image=nginx
$ kubectl get pods -l app=nginx
# nginx pod 풀네임 조회
$ POD_NAME=$(kubectl get pods -l app=nginx -o jsonpath="{.items[0].metadata.name}")
# nginx pod의 80포트를 외부에서 8080포트로 접속하도록 포워딩
$ kubectl port-forward $POD_NAME 8080:80
# 클라이언트에서 8080포트로 nginx pod내 사이트 접속
$ curl --head http://127.0.0.1:8080
curl 접속 결과
nginx pod 로그 및 nginx 버전 조회
$ kubectl logs $POD_NAME
$ kubectl exec -ti $POD_NAME -- nginx -v
$ kubectl expose deployment nginx --port 80 --type NodePort
# 노드포트 확인
$ NODE_PORT=$(kubectl get svc nginx \
--output=jsonpath='{range .spec.ports[0]}{.nodePort}')
# 조회한 노드 포트 보안그룹에서 허용
$ SECURITY_GROUP_ID=$(aws ec2 describe-security-groups --filters 'Name=tag:Name,Values=kubernetes' --query 'SecurityGroups[*].[GroupId]' --output text)
aws ec2 authorize-security-group-ingress \
--group-id ${SECURITY_GROUP_ID} \
--protocol tcp \
--port ${NODE_PORT} \
--cidr 0.0.0.0/0
# nginx pod가 동작하는 서버 확인
$ INSTANCE_NAME=$(kubectl get pod $POD_NAME --output=jsonpath='{.spec.nodeName}')
# nginx pod가 동작하는 서버 public IP 조회
$ EXTERNAL_IP=$(aws ec2 describe-instances --filters \
"Name=instance-state-name,Values=running" \
"Name=network-interface.private-dns-name,Values=${INSTANCE_NAME}.*.internal*" \
--output text --query 'Reservations[].Instances[].PublicIpAddress')
# nginx pod에서 사용하는 사이트 curl로 접속
$ curl -I http://${EXTERNAL_IP}:${NODE_PORT}