티스토리 뷰

반응형

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로는 접속이 되었다.

 

 

     

  

     

 

    

 

 

반응형
반응형
TAG
more
공지사항
최근에 올라온 글
최근에 달린 댓글
글 보관함