首页 > 其他分享 >3-1、Pod控制器-deployment

3-1、Pod控制器-deployment

时间:2022-11-14 23:58:55浏览次数:43  
标签:kubectl 控制器 name deploy myapp deployment Pod pod

Pod控制器:
ReplicationController(简称RC,已经淘汰)
ReplicaSet
Deployment
DaemonSet
Job
Cronjob
StatefulSet

k8s名词解释:https://www.kubernetes.org.cn/deployment

自主式POD:delete pod后不会被重新拉起的,不是由pod控制器控制和管理的pod
deployment: 只能管控无状态应用

1. Deployment概述

Deployment对象,顾名思义,是用于部署应用的对象。它使Kubernetes中最常用的一个对象,它为ReplicaSet和Pod的创建提供了一种声明式的定义方法,从而无需像前两篇文章中那样手动创建ReplicaSet和Pod对象(使用Deployment而不直接创建ReplicaSet是因为Deployment对象拥有许多ReplicaSet没有的特性,例如滚动升级和回滚)

deployment

vi deployment-demo.yml
apiVersion: apps/v1
kind: Deployment
metadata:
    name: myapp-deploy
    namespace: default
spec:
    replicas: 2
    selector:
        matchLabels:
            app: myapp
            release: canary
    template:
        metadata:
           labels:
            app: myapp
            release: canary
        spec:
            containers:
            - name: myapp
              image: ikubernetes/myapp:v1
              ports:
              - name: http
                containerPort: 80

# kubectl apply -f deployment-demo.yml 
NAME           READY   UP-TO-DATE   AVAILABLE   AGE
myapp-deploy   2/2     2            2           2m4s

# kubectl get pods
NAME                            READY   STATUS             RESTARTS   AGE
myapp-deploy-67b6dfcd8-wbflb    1/1     Running            0          2m27s
myapp-deploy-67b6dfcd8-wdkxv    1/1     Running            0          2m27s

# kubectl get rs
NAME                      DESIRED   CURRENT   READY   AGE
myapp-deploy-67b6dfcd8    2         2         2       3m49s

若修改了deployment-demo.yml,直接再次apply就生效:
# kubectl apply -f deployment.yaml

修改pod的数量(扩容/缩容),patch打补丁的方法:
# kubectl patch deployment myqpp-deploy -p '{"spec":{"replicas":3}}'

版本升级:由vi升级到v2,直接修改yml文件或打补丁的方法
# kubectl set image deployment myapp-deploy  myapp=ikubernetes/myapp:v2
# kubectl rollout pause deploument myapp-deploy #暂停更新
# kubectl rollout resume  deploument myapp-deploy #继续更新


回滚:
查看回滚的历史记录:
# kubectl rollout history deployment myapp-deploy
deployment.apps/myapp-deploy 

REVISION  CHANGE-CAUSE

1         <none>

2         <none>
3         <none>
# kubectl rollout undo deployment myapp-deploy  #默认是回滚到上一版本
# kubectl rollout undo deployment myapp-deploy --to-revision=3  #回滚到指定版本


定义多个资源:

apiVersion: apps/v1
kind: Deployment
metadata:
    name: redis
    namespace: default
spec:
    replicas: 1
    selector:
        matchLabels:
            app: redis
            role: logstor
    template:
        metadata:
           labels:
            app: redis
            release: logstor
        spec:
            containers:
            - name: redis
              image: redis:4.0-alpine
              ports:
              - name: redis
                containerPort: 6379


################
# kubectl describe deployment myapp-deploy
Name:                   myapp-deploy
Namespace:              default
CreationTimestamp:      Sat, 06 Apr 2019 20:23:40 +0800
Labels:                 <none>
Annotations:            deployment.kubernetes.io/revision: 1
                        kubectl.kubernetes.io/last-applied-configuration:
                          {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"myapp-deploy","namespace":"default"},"spec":{"replicas":2...
Selector:               app=myapp,release=canary
Replicas:               2 desired | 2 updated | 2 total | 2 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=myapp
           release=canary
  Containers:
   myapp:
    Image:        ikubernetes/myapp:v1
    Port:         80/TCP
    Host Port:    0/TCP
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
  Progressing    True    NewReplicaSetAvailable
OldReplicaSets:  <none>
NewReplicaSet:   myapp-deploy-67b6dfcd8 (2/2 replicas created)
Events:
  Type    Reason             Age    From                   Message
  ----    ------             ----   ----                   -------
  Normal  ScalingReplicaSet  6m57s  deployment-controller  Scaled up replica set myapp-deploy-67b6dfcd8 to 2

k8s探测:
  liveness 存活性探测
  readiness 服务就绪与否的探测
  lifecycle 

# liveness 存活性探测
# exec探针
vi  pod-liveness-exec.yml
apiVersion: v1

kind: Pod

metadata:

  name: liveness-exec-pod

  namespace: default

spec:

  containers:

  - name: liveness-exec-contaienr

    image: busybox:latest

    imagePullPolicy: IfNotPresent

    command: ["/bin/sh","-c","touch /tmp/healthy","sleep 30","rm -f /tmp/healthy","sleep 3600"]

    livenessProbe:

      exec:

        command: ["test","e","/tmp/healthy"]

      initialDelaySeconds: 1

      periodSeconds: 3
# kubectl create -f  pod-liveness-exec.yml

# httpGet探针
vi  pod-liveness-httpGet.yml
apiVersion: v1

kind: Pod

metadata:

  name: liveness-httpget-pod

  namespace: default

spec:

  containers:

  - name: liveness-httpget-container

    image: ikubernetes/myapp:v1

    imagePullPolicy: IfNotPresent
    ports:
    - name: http
      containerPort: 80



    livenessProbe:

      httpGet:

        port: http
        path: /index.html

      initialDelaySeconds: 1

      periodSeconds: 3
# kubectl create -f  pod-liveness-httpget.yml


readiness 服务就绪与否的探测
vi  pod-readiness.yml
apiVersion: v1

kind: Pod

metadata:

  name: readiness-httpget-pod

  namespace: default

spec:

  containers:

  - name: readiness-httpget-container

    image: ikubernetes/myapp:v1

    imagePullPolicy: IfNotPresent
    ports:
    - name: http
      containerPort: 80



    readinessProbe:

      httpGet:

        port: http
        path: /index.html

      initialDelaySeconds: 1

      periodSeconds: 3
# kubectl create -f pod-readiness.yml

 

标签:kubectl,控制器,name,deploy,myapp,deployment,Pod,pod
From: https://www.cnblogs.com/skyzy/p/16890984.html

相关文章

  • 3-2、pod containers
    podcontainers#kubectlexplainpod.spec.containersKIND:PodVERSION:v1RESOURCE:containers<[]Object>#数组,代表可以有多个容器FIELDS:name<......
  • 3-3、Pod控制住-pod yml配置解释
    podyml配置参数解释apiVersion:v1#必选,版本号,例如v1kind:Pod#必选,Podmetadata:#必选,元数据name:string#必选,Pod名称,命名需要规范n......
  • 3-5、Pod控制器-Daemonset
    DaemonSetDaemonSet确保全部(或者某些)节点上运行一个Pod的副本。当有节点加入集群时,会为他们新增一个Pod。当有节点从集群移除时,这些Pod也会被回收。删除DaemonSe......
  • 3-4、Pod控制器-ReplicaSet
    Pod控制器:ReplicationController(简称RC,已经淘汰)ReplicaSetDeploymentDaemonSetJobCronjobStatefulSet自主式POD:deletepod后不会被重新拉起的,不是由pod控制器控......
  • 3-5、Pod控制器-StatefulSet
    StatefulSet有状态的集合,管理所有有状态的服务,比如MySQL、MongoDB集群等。StatefulSet:是一种给Pod提供唯一标志的控制器,它可以保证部署和扩展的顺序。Pod一致性:包含......
  • 1-4 pod生命周期
    1pod生命周期pod的创建过程用户通过kubectl或其他api客户端提交podspec给apiserverapiserver尝试着将pod对象的相关信息存入etcd中,待写入操作执行完成,apiserver即......
  • 实验6:开源控制器实践——RYU
    搭建下图所示SDN拓扑,协议使用OpenFlow1.0,并连接Ryu控制器,通过Ryu的图形界面查看网络拓扑。阅读Ryu文档的TheFirstApplication一节,运行当中的L2Switch,h1pingh2或h3,......
  • 实验4:开源控制器实践——OpenDaylight + 实验2:Open vSwitch虚拟交换机实践
    实验4:开源控制器实践——OpenDaylight1.基础要求1)扑生成并连接控制器的结果2)启动ODL3)打开Postman接口调试工具4)DELETEURL:http://127.0.0.1:8181/restconf/conf......
  • Pod详解之Pod生命周期
    Pod生命周期我们一般将pod对象从创建至终的这段时间范围称为pod的生命周期,它主要包含下面的过程:-pod创建过程-运行初始化容器(initcontainer)过程-运行主容器(mainc......
  • 实验6:开源控制器实践——RYU
     一、实验目的能够独立部署RYU控制器;能够理解RYU控制器实现软件定义的集线器原理;能够理解RYU控制器实现软件定义的交换机原理。二、实验环境Ubuntu20.04Desktop......