Kubernetes Deployment(部署無狀態應用)

Kubernetes Deployment(部署無狀態應用)

Pod與controllers的關係
  • controllers:在集羣上管理和運行容器的對象
  • 經過label-selector相關聯
  • Pod經過控制器實現應用的運維,如伸縮,升級等vim

 

Deployment
  • 部署無狀態應用
  • 管理Pod和ReplicaSet(副本控制、更新回滾)
  • 具備上線部署、副本設定、滾動升級、回滾等功能
  • 提供聲明式更新,例如只更新一個新的Imageapi

應用場景:Web服務tomcat

案例

一、建立deploymentapp

vim tomcat-deployment.yaml運維

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  labels:
    app: tomcat
  name: tomcat
spec:
  replicas: 3
  selector:
    matchLabels:
      app: tomcat
  template:
    metadata:
      labels:
        app: tomcat
    spec:
      imagePullSecrets:
      - name: registry-pull-secret
      containers:
      - image: tomcat
        imagePullPolicy: Always
        name: tomcat
        ports:
        - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: tomcat-service
  labels:
    app: tomcat
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app: tomcat

二、建立deploymentui

kubectl apply -f tomcat-deployment.yaml

三、建立一個deployment後查看結果:kubectl get pods,deploy,rsspa

  • 對用戶有一個隱藏的控制器 replicaset
  • deploymen是用來管理 replicaset 與 pod

kubectl get pod,deploy,rsrest

NAME READY STATUS RESTARTS AGE
pod/tomcat-b7cf876c5-6fqq2 1/1 Running 0 117s
pod/tomcat-b7cf876c5-p94cx 1/1 Running 0 118s
pod/tomcat-b7cf876c5-znd2r 1/1 Running 0 117s

NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.extensions/tomcat 3 3 3 3 118s

NAME DESIRED CURRENT READY AGE
# 隱藏控制器,控制pod副本數

replicaset.extensions/tomcat-b7cf876c5 3 3 3 118s

四、查看deployment全部涉及字段code

kubectl edit deployment/tomcat對象

------------------------------------------------
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  annotations:
    deployment.kubernetes.io/revision: "1"
    kubectl.kubernetes.io/last-applied-configuration: |
  creationTimestamp: 2019-08-27T02:09:45Z
  generation: 1
  labels:
    app: tomcat
  name: tomcat
  namespace: default
  resourceVersion: "141715"
  selfLink: /apis/extensions/v1beta1/namespaces/default/deployments/tomcat
  uid: bd75f48e-c86f-11e9-9db0-000c292e28d6
spec:
  progressDeadlineSeconds: 600
  # 副本設定
  replicas: 3
  revisionHistoryLimit: 2
  # 標籤管理
  selector:
    matchLabels:
      app: tomcat
  # 滾動更新
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: tomcat
    spec:
      # 容器定義
      containers:
      - image: tomcat
        imagePullPolicy: Always
        name: tomcat
        ports:
        - containerPort: 8080
          protocol: TCP
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      imagePullSecrets:
      - name: registry-pull-secret
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
status:
  availableReplicas: 3
  conditions:
  - lastTransitionTime: 2019-08-27T02:11:23Z
    lastUpdateTime: 2019-08-27T02:11:23Z
    message: Deployment has minimum availability.
    reason: MinimumReplicasAvailable
    status: "True"
    type: Available
  - lastTransitionTime: 2019-08-27T02:09:45Z
    lastUpdateTime: 2019-08-27T02:11:23Z
    message: ReplicaSet "tomcat-b7cf876c5" has successfully progressed.
    reason: NewReplicaSetAvailable
    status: "True"
    type: Progressing
  observedGeneration: 1
  readyReplicas: 3
  replicas: 3
  updatedReplicas: 3
------------------------------------------------
相關文章
相關標籤/搜索