kubernetes 치트 시트 드릴다운

개발자 여러분, 블로그를 작성한 지 오래되었으므로 kubernetes에 대한 몇 가지 유용한 리소스로 2021년을 시작할 생각입니다. 혜택을 받으시기 바랍니다

쿠버네티스란 🎺



Kubernetes는 컨테이너화된 워크로드를 관리하기 위한 플랫폼입니다. kubernetes는 컴퓨팅, 네트워킹 및 스토리지를 오케스트레이션하여 인프라 공급자 간에 원활한 이식성을 제공합니다.


이 특정 블로그는 kube 명령 및 작업에 대한 noobs를 기반으로 합니다. 또한 이것은 k8s에 대한 빠른 핸드북으로 사용할 수 있습니다.



전개


  • 전개를 이해하기 쉽게 간단한 문장으로 표현하고 있습니다. 기본적으로 배포는 Kubernetes 클러스터 내에서 실행해야 하는 복제본 수를 지정하는 것입니다. 또한 이것이 HA 클러스터[ 고가용성 ]를 처리하는 방법입니다. yaml 파일을 작성하기만 하면 배포를 배포할 수 있습니다. 몇 가지 샘플을 보여드리겠습니다.




  • 이미지 출처: matthewpalmer



    kubectl get deploy
    kubectl get deploy -o wide 
    kubectl get deploy -o yaml 
    kubectl describe deploy
    kubectl edit deploy [ deployment.name ] -n [ namespace.name ]
    kubectl run redis-app --image=redis --replicas=4 --port=6943
    kubectl delete deployment [ deployment.name ] -n [ namespace.name ]
    kubectl scale --replicas=5 deployment/redis-app
    kubectl rollout status deployment/redis-app
    kubectl rollout history deployment/redis-app
    kubectl rollout pause deployment/redis-deployment, resume
    kubectl rollout undo deployment/redis-deployment
    kubectl expose deployment/redis --type=NodePort -n [ namespace.name ]
    


    서비스


  • 쿠버네티스 서비스는 파드의 논리적 세트와 이들에 액세스하는 정책(마이크로 서비스라고도 함)을 정의하는 추상화입니다. 애플리케이션을 외부 세계에 노출할 수 있는 DNS와 같은 것입니다. 이것은 NodePort/Cluster IP라고 불리는 2가지로 나뉩니다.




  • 이미지 출처: matthewpalmer



    kubectl get svc 
    kubectl get svc -o wide 
    kubectl get svc -o yaml 
    kubectl get svc -show-labels
    kubectl describe svc
    kubectl get services –sort-by=.metadata.name
    kubectl delete pods,services -n [ namespace.name ]
    kubectl get endpoints -A 
    kubectl get service redis-service -o go-template='{{.spec.clusterIP}}’
    kubectl get service nginx-service -o go-template='{{(index .spec.ports 0).port}}’
    kubectl patch svc redis-service -p '{"spec": {"type": "LoadBalancer"}}'
    kubectl expose service/redis-svc --type=LoadBalancer -n [ namespace.name ]
    kubectl port-forward svc/redis-master 6379:6379
    


    노드


  • 노드는 포드가 실행되는 호스트 머신일 뿐입니다!

  • kubectl get nodes
    kubectl get nodes -o wide 
    kubectl get nodes -o yaml 
    kubectl get nodes --selector=[label_name] 
    kubectl get nodes -o json 
    kubectl describe nodes 
    kubectl top nodes
    


    포드


  • Kubernetes의 Pod는 Docker 컨테이너로 구성된 큐브 상자입니다. 포드가 배포되면 해당 포드에 대한 고유한 IP 주소를 갖게 됩니다. 또한 모두와 마찬가지로 포드도 yaml 파일에서 정의할 수 있습니다.

  • kubectl get pods 
    kubectl get pods -o wide 
    kubectl get pods -o yaml 
    kubectl get pods --show-labels 
    kubectl top pod --all-namespaces
    kubectl edit pod [pod.name] -n [namespace.name]
    kubectl get pods --field-selector status.phase=Running
    kubectl get pods | grep -e ContainerCannotRun -e Pending -e Unknown -e Error
    kubectl get pods –sort-by=’.status.containerStatuses[0].restartCount’
    kubectl get pods -o=’custom-columns=PODS:.metadata.name,Images:.spec.containers[*].image’
    kubectl get pods nginx -o yaml --export > nginx_pod_info.yaml 
    kubectl get pods –sort-by=’.status.containerStatuses[0].restartCount’
    


    네임스페이스


  • kube의 네임스페이스는 더 쉽게 배포하고 삭제할 수 있도록 배포가 격리된 별도의 블록과 같습니다. 기본적으로 kubernetes는 3개의 네임스페이스(Kube-system, Kube-public, default)를 생성합니다.

  • kubectl get namespace 
    kubectl get namespace [ namespace-name ] -o yaml 
    kubectl describe namespace [ namespace-name ] 
    kubectl edit namespace [ namespace-name ]
    kubectl get events --all-namespace 
    kubectl get events -sort-by=.metadata.creationTimestamp
    kubectl -n [ namespace-name ] delete po,svc,deploy --all
    


    로그


  • 간혹 팟이 실패하는 이유를 확인해야 할 수 있으므로 아래 명령으로 배포된 팟의 로그를 확인해야 합니다.

  • kubectl get events
    kubectl get events -n default 
    kubectl get events -w 
    kubectl exec -it -n “$ns” “$podname” – sh -c “echo $msg >>/logs/poderror.log”
    


    레이블


  • 레이블을 사용하여 개체의 하위 집합을 구성하고 선택할 수 있습니다. 예를 들어 릴리스(베타, 안정), 환경(개발, 프로덕션) 또는 계층(프론트엔드, 백엔드)을 식별하는 데 자주 사용됩니다.

  • kubectl label pods redis-master owner=sunil
    kubectl label pods redis-master owner-   #this command is to remove label
    kubectl label [node.name] disktype=ssd
    kubectl label [pod.name] env=prod
    


    서비스 계정




    kubectl edit sa [service.account.name]
    kubectl delete sa [service.account.name]
    


    일부 kube 유지 관리 명령




    kubectl cordon [node.name]
    kubectl uncordon [node.name]
    kubectl drain [node.name]
    


    더러움




    kubectl taint [node.name] [taint.name]
    


    더 빠른 통찰력을 위한 Kube-shell 터미널



  • 요즘 kube-shell 터미널을 사용하면 k8s 충돌을 해결하고 클러스터 정보를 더 빠르게 검색할 수 있습니다. 클라이언트 구내에서 사용할 수 있는지 확실하지 않습니다[보안 승인 필요]. 그러나 로컬 시스템에서 사용하십시오. 이것이 명령을 입력하는 시간을 절약하고 내 블로그를 다시 보지 않기를 바랍니다 xD



  • Download kube-shell click here

    일부 해킹



    클러스터 내부에 있는 모든 이미지를 나열하려면






    그리고 이 영상도 포함하고 있으니 믿고 보시면 재미있고 이해하기 쉬울거에요 😅


    이 비디오에 대해 Matt Butcher와 Bailey Beougher에게 감사드립니다.

    좋은 웹페이지 즐겨찾기