Kind 빌드/조작 노트

6962 단어 킨드kubernetes

htps : // 기주 b. 이 m/쿠베 r네서 s-해 gs/킨 d/bぉb/마s테 r/ぉ고/ぉ고. pg

소개



Cluster API 을 시도해 보았을 때, 우선 뭔가 k8s 클러스터를 준비할 필요가 있었다.
Kind를 사용하는 것이 빠르고, 지금까지 사용한 적이 없었기 때문에, 이 기회에 시험해 보았습니다.

설치



전제 조건


  • 다음이 설치되어 있어야 합니다.
  • Docker
  • kubectl (Kind 설치에는 필요하지 않지만 k8s 클러스터를 만든 후 k8s 작업을 수행하는 데 필요)


  • 환경


  • 베어 메탈
  • 우분투 20.04.1
  • Docker 20.10.2
  • kubectl v1.19.1

  • 설치 로그


    $ curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.9.0/kind-linux-amd64
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100    97  100    97    0     0    302      0 --:--:-- --:--:-- --:--:--   303
    100   642  100   642    0     0   1042      0 --:--:-- --:--:-- --:--:--  626k
    100 7247k  100 7247k    0     0   490k      0  0:00:14  0:00:14 --:--:--  998k
    $ chmod +x ./kind
    $ sudo mv kind /usr/local/bin
    $ kind version
    kind v0.9.0 go1.15.2 linux/amd64
    

    각 조작



    클러스터 생성


    $ kind create cluster
    Creating cluster "kind" ...
     ✓ Ensuring node image (kindest/node:v1.19.1) 🖼 
     ✓ Preparing nodes 📦  
     ✓ Writing configuration 📜 
     ✓ Starting control-plane 🕹️ 
     ✓ Installing CNI 🔌 
     ✓ Installing StorageClass 💾 
    Set kubectl context to "kind-kind"
    You can now use your cluster with:
    
    kubectl cluster-info --context kind-kind
    
    Thanks for using kind! 😊
    

    kubeconfig도 만들어졌다.
    내용을 확인하면, apiserver의 URL이 https://127.0.0.1:39055 가 되어 있었다.
    docke ps 에서 kind 의 컨테이너가 되어 있는 것을 확인할 수 있었습니다.
    $ docker ps
    CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS                       NAMES
    55cc6a93dacb   kindest/node:v1.19.1   "/usr/local/bin/entr…"   7 minutes ago   Up 7 minutes   127.0.0.1:39055->6443/tcp   kind-control-plane
    

    호스트의 39055 번호가 컨테이너의 6443 번호로 포트 포워드되었습니다.
    이것에 의해, apiserver 의 엔드 포인트 https://127.0.0.1:39055 에의 요구가, Kind 컨테이너의 6443 차례에 포워드되어 apiserver 에 도착하는 것을 알 수 있다.

    클러스터 목록


    $ kind get clusters
    kind
    

    만든 클러스터 확인


    $ kubectl cluster-info
    Kubernetes control plane is running at https://127.0.0.1:39055
    KubeDNS is running at https://127.0.0.1:39055/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
    
    To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
    $ kubectl get nodes
    NAME                 STATUS   ROLES    AGE   VERSION
    kind-control-plane   Ready    master   25h   v1.19.1
    $ kubectl get all -A
    NAMESPACE            NAME                                             READY   STATUS    RESTARTS   AGE
    kube-system          pod/coredns-f9fd979d6-29hpt                      1/1     Running   0          25h
    kube-system          pod/coredns-f9fd979d6-fcrsh                      1/1     Running   0          25h
    kube-system          pod/etcd-kind-control-plane                      1/1     Running   0          25h
    kube-system          pod/kindnet-sxmz9                                1/1     Running   0          25h
    kube-system          pod/kube-apiserver-kind-control-plane            1/1     Running   0          25h
    kube-system          pod/kube-controller-manager-kind-control-plane   1/1     Running   0          25h
    kube-system          pod/kube-proxy-v5lvt                             1/1     Running   0          25h
    kube-system          pod/kube-scheduler-kind-control-plane            1/1     Running   0          25h
    local-path-storage   pod/local-path-provisioner-78776bfc44-m5zkj      1/1     Running   0          25h
    
    NAMESPACE     NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE
    default       service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP                  25h
    kube-system   service/kube-dns     ClusterIP   10.96.0.10   <none>        53/UDP,53/TCP,9153/TCP   25h
    
    NAMESPACE     NAME                        DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
    kube-system   daemonset.apps/kindnet      1         1         1       1            1           <none>                   25h
    kube-system   daemonset.apps/kube-proxy   1         1         1       1            1           kubernetes.io/os=linux   25h
    
    NAMESPACE            NAME                                     READY   UP-TO-DATE   AVAILABLE   AGE
    kube-system          deployment.apps/coredns                  2/2     2            2           25h
    local-path-storage   deployment.apps/local-path-provisioner   1/1     1            1           25h
    
    NAMESPACE            NAME                                                DESIRED   CURRENT   READY   AGE
    kube-system          replicaset.apps/coredns-f9fd979d6                   2         2         2       25h
    local-path-storage   replicaset.apps/local-path-provisioner-78776bfc44   1         1         1       25h
    

    애플리케이션 배포


    $ kubectl apply -f https://k8s.io/examples/service/access/hello-application.yaml
    deployment.apps/hello-world created
    $ kubectl expose deployment hello-world --type=NodePort --name=example-service
    service/example-service exposed
    $ kubectl port-forward --address localhost svc/example-service 8080:8080
    Forwarding from 127.0.0.1:8080 -> 8080
    Handling connection for 8080> 8080
    

    다른 터미널에서 확인하면 앱에 액세스할 수 있음을 확인할 수 있었습니다.
    $ curl http://localhost:8080
    Hello Kubernetes!
    

    클러스터 삭제


    $ kind delete cluster --name kind
    Deleting cluster "kind" ...
    

    소감



    매우 쉽게 k8s 클러스터를 구축 할 수있었습니다.
    앱 테스트라든지 뭐든지 좋기 때문에 k8s를 간편하게 사용하고 싶을 때 편리합니다.
    이번에는 싱글 노드 구성 만 시도했지만 다중 노드 클러스터을 만들 수도 있습니다.

    참고


  • htps : // 기주 b. 코 m / 쿠베 r 네 s gs / kin d
  • htps : // Kin d. gs. k8s. 이오/도 cs/우세 r/쿠이 ck-s rt/
  • htps // chbぉg. g도-아 p. jp / 2019 / 09 / 19 / 킨 d 쿠베 r
  • 좋은 웹페이지 즐겨찾기