쿠버네티스 환경 구성

남현우·2023년 4월 18일
0

쿠버네티스

목록 보기
1/1

VirtualBox 구성해서 쿠버네티스 환경 구성.

구성 환경 :
HOST : Win 11

VM : Master-Node : 프로세스 2CPU, 8192 Mb 1대
Data-Node : 프로세스 2CPU, 4096, 2대

1. VM 웨어 마운트 참고

   참조사이트 : https://koeiking11.tistory.com/entry/Virtual-Box-CentOs-%EA%B3%B5%EC%9C%A0-%ED%8F%B4%EB%8D%94-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0
   참조사이트 : https://stranger-jey.tistory.com/27

2. ingress 설치 시 에러

  - nginx 설치 할 때 Internal error occurred: failed calling webhook "validate.nginx.ingress.kubernetes.io" 난다.
    참조사이트 : https://ikcoo.tistory.com/137
       : https://pyrasis.com/jHLsAlwaysUpToDateKubernetes/Unit06/05
       : https://pyrasis.com/jHLsAlwaysUpToDateKubernetes

    Ingress 중요구문! 아래 내용을 넣어줘야 한다.
    예제에서는 TLS 설정을 하지 않았기 때문에 강제 리다이렉션을 막기 위해서 Ingress의 어노테이션에 nginx.ingress.kubernetes.io/ssl-redirect: "false"를 추가하였습니다. 만약 TLS를 설정할 시에는 해당 어노테이션은 제거하십시오.
         nginx.ingress.kubernetes.io/rewrite-target: /
         nginx.ingress.kubernetes.io/ssl-redirect: "false"
    참조사이트 : https://guide.ncloud-docs.com/docs/k8s-k8sexamples-ingress

3. Docker Registry

  - 도커를 쿠버네티스 v1.20 이상부터 지원을 안해서, 도커 레지스트리를 사용할 수 없다.
    대신 Docker Registry를 Harbor 설치 해야하고, 인증서 특히 TLS 부분을 신경 써야 한다.
    IP로 하면 안되고, 꼭 도메인 할당해서 해야 한다.
    참조사이트 : https://ikcoo.tistory.com/229
              : https://ikcoo.tistory.com/230
       
       

4. Harbor registry 실행 종료

  - sudo docker-compose up -d
  - sudo docker-compose down

  Client 에서 실행
  ```
   sudo mkdir /etc/docker/certs.d/fnb.registry.com
   sudo cp server.cert /etc/docker/certs.d/fnb.registry.com
   sudo cp server.key /etc/docker/certs.d/fnb.registry.com
   sudo cp ca.crt /etc/docker/certs.d/fnb.registry.com
   sudo cp server.crt /etc/pki/ca-trust/source/anchors/
   sudo update-ca-trust
  ```

  ```
   defailt config.toml 파일 생성
  containerd config default > /etc/containerd/config.toml

      [plugins."io.containerd.grpc.v1.cri".registry]
        config_path = ""

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."my.registry.com"]
            endpoint = ["https://my.registry.com"]

        [plugins."io.containerd.grpc.v1.cri".registry.configs]
          [plugins."io.containerd.grpc.v1.cri".registry.configs."my.registry.com".auth]
            username = "admin"
            password = "Harbor12345"

        [plugins."io.containerd.grpc.v1.cri".registry.configs."my.registry.com".tls]
            ca_file = "/home/myid/cert.d/ca.crt"
            cert_file = "/home/myid/cert.d/server.cert"
            key_file = "/home/myid/cert.d/server.key"

  sudo systemctl restart containerd
  ```

5. docker none images 삭제

  - docker rmi $(docker images -f "dangling=true" -q) --force
  - sudo crictl rmi $(sudo crictl images -f "dangling=true" -q) --force

6. docker 실행

  - docker run -d -p 8088:8088 auth

7. 실행중인 POD에 접속하기

  - k exec -it pod명 /bin/bash

8. 쿠버네티스 pod간 통신(kubenetes DNS 사용법)

  - 서비스명.네임스페이스명.svc.cluster.local:port/API주소
    참조사이트 : https://may9noy.tistory.com/935

9. nginx ingress path 뒤에 API주소 할당 할수 있게 하기(Rewrite, 패스기반 라우팅)

- path: /something(/|$)(.*)
참조사이트 : https://thekoguryo.github.io/oracle-cloudnative/oss/ingress-controller/2.nginx-ingress-path/
https://kubernetes.github.io/ingress-nginx/examples/rewrite/

profile
노력하는 프로그래머

0개의 댓글