Kubnetes 테스트

11274 단어 kubernetes
개시하다
Docker는 개발 환경 구축에 자주 사용되지만 업무상 컨테이너를 사용하기 때문에 지금은 Kubernetes를 계속 배우고 싶습니다.
이 보도는 아래 책의 비망록이다.
설치하다. Docker Desktop은 Kubernetes를 지원하므로 Docker Desktop이 이미 설치된 환경에서는 사용만 하면 됩니다. 작업 표시줄의 Docker의 "Pregerences..."누름단추
  • "Kubbernetes를 선택하고""Enable Kubernetes""를 확인한 후""Apply & Restart""를 누르십시오."
  • kubernetes의 기초
    선언문을 사용해 실례를 만들어 보자.
    1. 선언문 작성
    용기를 관리하는 자원 정의 파일을 yaml 형식으로 만듭니다.
    필수 항목은 apiVersion,kind,metadata,spec입니다.kind의 자원 유형은 다음과 같은 내용을 참조한다.
    정의된 견본
    apiVersion: v1
    kind: Pod
    metadata:
      # Podの名前
      name: nginx
    spec:
      # 実行するコンテナの定義
      containers:
      - name: nginx
        image: nginx:1.15.7
        ports:
        - containerPort: 80
    
    kind: Deployment 여러 Pod 관리 리소스
    3개의 Pod Deployment 정의 샘플 실행
    # APIバージョン
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      selector:
        matchLabels:
          app: nginx
      # 実行するPodの数
      replicas: 3
      # Pod定義のテンプレード
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.15.7
            ports:
            - containerPort: 80
    
    API 버전은 kind의 종류에 따라 다릅니다.
    조사하려면 kubectl api-resources를 사용하세요.

    2. 선언문 등록
    작성된 선언 파일을 Kubernetes에 로그인합니다.
    여기, 선언문건deployment.yaml으로 제작되었습니다.
    $ kubectl apply -f deployment.yaml
    deployment.apps/nginx-deployment created
    
    Pod의 시작을 확인합니다.
    $ kubectl get pods
    NAME                                READY   STATUS    RESTARTS   AGE
    nginx-deployment-7d4d8467d9-kr6m9   1/1     Running   0          117s
    nginx-deployment-7d4d8467d9-mwhdf   1/1     Running   0          117s
    nginx-deployment-7d4d8467d9-srb8g   1/1     Running   0          117s
    
    3. Pod의 부하 분산
    방금 시작한 3개의 Pod에 대한 로드 분산을 위한 리소스Service를 정의합니다.
    우선 제작service.yaml.
    service.yaml
    # APIバージョン
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
    spec:
      # 外部からもアクセス可能にする
      type: LoadBalancer
      selector:
        # 先ほど作成したdeploymentのpod(app: nginx)にトラフィックを分散する
        app: nginx
      # Port8080への通信をPodの80ポートに転送する
      ports:
      - protocol: TCP
        port: 8080
        targetPort: 80
    
    Kubbernetes에 로그인
    $ kubectl apply -f service.yaml
    service/nginx-service created
    
    서비스 상태 확인
    $ kubectl get service
    NAME            TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
    kubernetes      ClusterIP      10.96.0.1      <none>        443/TCP          56m
    nginx-service   LoadBalancer   10.98.68.206   localhost     8080:32539/TCP   61s
    
    부하 분산을 실현하기 위해 서비스는 가상 IP 주소(Cluster IP)를 만들었다.
    EXTERNAL-IP 는 외부 액세스 가능한 가상 IP 주소입니다.
    Docker에서 설치한 Kubernetes의 EXTERNAL-IP는 항상 localhost입니다.
    브라우저에서 액세스해 보십시오http://localhost:8080.

    nginx의 화면을 표시했습니다.
    객체 관리 방법
    다음 세 가지가 있습니다.
  • 명령 유형 명령
  • 명령 유형 객체 설정
  • 선언 유형 객체 설정
  • 명령형
    ①MySQL5.7.21 DB②에 설치하고nginx버전 1.14.2를 WEB에 설치한다. 이러한 절차를 실제 스크립트나 설정 파일에 기록하고 관리 도구가 이 절차를 수행한다.
    선언형
    ①MySQL5.7.21에서 DB,nginx1로 변경됩니다.14.2 WEB에 설치된 시스템의 이상적인 형태를 정의합니다.
    명령 유형 명령
    단일 컨테이너 인스턴스 시작하기
    명령
    $ kubectl run nginx --image nginx
    
    서로 다른 문법을 사용하여 같은 조작을 하다
    명령 페이지
    $ kubectl create deployment nginx --image nginx
    
    컨테이너 버전 업데이트
    set 명령
    $ kubectl create deployment nginx --image nginx:1.14.2
    $ kubectl set image deployment/nginx nginx=nginx:1.15.8
    
    nginx 용기의 복사본을 3으로 변경
    scale 명령
    $ kubectl create deployment nginx --image nginx
    $ kubectl scale deployment/nginx --replicas 3
    
    객체 삭제
    delete 명령
    $ kubectl delete deployment nginx
    
    명령 유형 객체 설정
    설정 파일에 정의된 객체 만들기
    명령 페이지
    $ kubectl create -f nginx.v1.14.2.yaml
    
    설정 파일에 정의된 정보로 현재 설정을 덮어씁니다
    replace 명령
    $ kubectl replace -f nginx.v1.15.8.yaml
    
    설정 파일에서 정의된 객체 삭제
    delete 명령
    $ kubectl delete -f nginx.yaml -f redis.yaml
    
    질문
    $ kubectl create -f nginx.v1.14.2.yaml
    $ kubectl scale deployment/nginx --replicas 3
    $ kubectl replace -f nginx.v1.15.8.yaml //2つ目のコマンドの変更が消失
    
    이런 문제를 방지하기 위해서는 제3자가 변경하지 않는 방법을 활용할 필요가 있다.
    선언 유형 객체 설정
    성명 유형 사용apply.
    디렉토리를 지정할 수도 있습니다.
    // 更新前にdiffで確認
    $ kubectl diff -R -f configs/
    $ kubectl apply -R -f configs/
    
    성명 형식의 차분 계산
    차이점
    원본 파일
    설명
    부가 부분
    실제 대상
    실제 대상에는 없지만 적용된 선언 파일에 존재하는 필드가 추가되었습니다
    업데이트 섹션
    실제 대상
    실제 대상에 적용되는 선언 파일의 차이점 업데이트
    부분 삭제
    마지막으로 적용된 선언 파일
    적용된 선언 파일에 존재하지 않는 마지막 적용된 선언 파일에 존재하는 필드 삭제
    삭제분은 실제 대상이 아닌 지난번 선언문건과 비교하는 점이 눈에 띈다.
    즉, 실제 객체에 대한 수정 사항을 유지할 수 있습니다.
    다음은 실제 대상replicas:3image:nginx:1.16을 수정한 경우다.
    적용 가능한 선언문
    마지막으로 적용된 선언 파일
    실제 대상
    적용 후 객체
    kind:Deploymentspec: containers:  - name:nginx  image:nginx:1.15
    kind:Deploymentspec: containers:  - name:nginx  image:nginx:1.14
    kind:Deploymentspec: replicas:3 containers:  - name:nginx  image:nginx:1.16
    kind:Deploymentspec: replicas:3 containers:  - name:nginx  image:nginx:1.15replicas:3 적용된 선언문에 존재하지 않는 필드지만 지난번에 적용된 선언문건에도 존재하지 않기 때문에 삭제하지 않는다.image:nginx:1.16는 이번에 적용된 선언문서의 내용으로 업데이트된다.

    좋은 웹페이지 즐겨찾기