• Kubernetes Deployment(部署无状态应用)


    Kubernetes Deployment(部署无状态应用)

    Pod与controllers的关系
      • controllers:在集群上管理和运行容器的对象
      • 通过label-selector相关联
      • Pod通过控制器实现应用的运维,如伸缩,升级等

    Deployment
      • 部署无状态应用
      • 管理Pod和ReplicaSet(副本控制、更新回滚)
      • 具有上线部署、副本设定、滚动升级、回滚等功能
      • 提供声明式更新,例如只更新一个新的Image

    应用场景:Web服务

    案例

    1、创建deployment

    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

    2、创建deployment

    kubectl apply -f tomcat-deployment.yaml

    3、创建一个deployment后查看结果:kubectl get pods,deploy,rs

    • 对用户有一个隐藏的控制器 replicaset
    • deploymen是用来管理 replicaset 与 pod

    kubectl get pod,deploy,rs

    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

    4、查看deployment所有涉及字段

    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
    ------------------------------------------------
  • 相关阅读:
    oracle游标
    PLSQL
    git移除target目录下已经提交的内容案例
    git全局配置
    [github]Windows系统下将本地仓库的项目上传到远程仓库(含仅单独上传更新文件情况)
    小试Python交互模式(Python Shell)与读文件操作报错(OSError)的解决办法
    C盘内存“侵略者”——Unity开发环境中GI Cache默认目录的修改
    Hibernate学习——Hibernate Tools for Eclipse Plugins的下载与安装
    博客开篇——应用Markdown编辑器呈现样式和内容
    pt-table-checksum使用dsn方式连接检测从库
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/11424015.html
Copyright © 2020-2023  润新知