티스토리 뷰
1. kubespray를 설치할 대상 설정하기
'vi inventory/mycluster/inventory.ini'로 설정파일 편집모드
[all]
{호스트네임} ansible_host={내부IP} ip={접근IP} etcd_member_name={etcdname}
ex) test_1 ansible_host=255.128.0.255 ip=255.128.0.255 etcd_member_name=etcd1,
test_1 ansible_host=255.128.0.255 ip=255.128.0.255
ansible_host의 IP와 접근IP가 같으면 호스트네임만으로 SSH통신이 가능하다
[kube_control_plane]
마스터 노드로 사용할 서버의 호스트네임을 적는다 [all]에서 IP정보등을 설정 완료 했을 시 호스트네임만 적어도 된다.
[etcd]
클러스터 데이터를 저장하는 etcd를 설치할 서버를 설정한다
etcd와 마스터노드는 별도 구성이 가능하며, [all]에 etcd_member_name을 설정 한다
[kube_node]
워커노드로 사용할 서버를 설정한다
[k8s_cluster:children]
쿠버네티스를 설치할 서버를 설정 etcd가 설치될 서버(노드)를 제외하는 것으로 보통 기본설정으로 사용
2. 쿠버네티스 클러스터 구성하기
'ansible-playbook' -i {경로}/inventory.ini -v --become --become-user=root cluster.yml
위 명령어를 실행 하면 inventory.ini의 설정에 따라 클러스터 구성을 한다
필요한 패키지 설치, 컨테이너 이미지 다운 등이 진행됨
각 노드의 호스트네임 옆에 failed=0이 표시되면 정상적으로 구성완료
완료되면 마스터노드에서 root 계정으로 kubectl 명령어를 사용가능 (root계정변경 명령어 : sudo -i)
모든 노드의 상태확인 명령어 : kubectl get node
- 출력값
NAME STATUS ROLES AGE VERSION
호스트네임 Ready control-plane,master 생성후 지난시간 버전정보
호스트네임 Ready <none> 생성후 지난시간 버전정보
STATUS 값이 Ready일 경우 구성이 완료 되며 워커노드의 경우 ROLES가 <none>이며 추후 설정해준다
3. kubectl 기본명령어
kubectl {command} {TYPE} {NAME} {flags}
- command : 자원에 실행하려는 동작. create, get, delete 등
- TYPE : 자원 타입. pod, service, ingress 등
- NAME : 자원 이름
- FLAG : 부가적으로 설정할 옵션
4. 에코서버 포트포워딩 실습
에코서버 : 클라이언트가 전송해주는 데이터를 그대로 되돌려 전송하는 서버
명령어를 통해 echoserver 라는 pod 생성
kubectl run echoserver --image="k8s.gcr.io/echoserver:1.10" --port:8080
run또는 create로 사용 하는 것 같은데 image가 뭐냐에 따라 run으로 사용 하는듯 (?)
port는 서버의 포트
생성 확인 명령어
kubectl get pods
명령어를 통해 서비스를 생성
kubectl expose po echoserver --type=NodePort
생성 확인 명령어
kubectl get services
포트포워딩 명령어
kubectl port-forward svc/echoserver 8080:8080
svc는 service의 약자인 것 같다.
8080:8080은 8080포트의 파드를 어느 포트로 맵핑 시키는지 설정
다른서버에서 접속하는 명령어
curl {포트포워딩한서비스IP}:{포트}
에코서버에서 로그를 수집할때 명령어
kubectl logs -f
4-1 위 작업을 할때 localhost:8080으로도 접속이 가능하다 되어있지만
방화벽 문제인지 접속이 불가했다.
또는 에코서버 서비스의 EXTERNAL-IP가 없어서 외부에서는 막히는 것 같음
내부 CLUSTER-IP로 접속을 해도 처음엔 안됬는데,
/etc/ssh/sshd_config에서 AllowTcpForwarding을 yes로, GatewayPorts도 yes로 바꿧고
방화벽규칙을 생성 하니 CLUSTER-IP로는 접속이 되었다.