kubernetes集群核心技术---Controller(Deployment)(五)

目录

1.什么是controller

2.pod和controller关系

3.deployment控制器应用场景

4.使用deployment部署应用(yaml)

4.1.导出deployment部署yaml文件

4.2.运行deployment部署文件

4.3.导出deployment发布yaml文件,对外发布该服务,暴露ip和端口

5.应用升级回滚和弹性伸缩


1.什么是controller

  • 在集群上管理和运行容器的对象
  • 确保预期的pod副本数量,确保所有的node运行同一个pod

2.pod和controller关系

pod是通过controller实现运用的运维,比如伸缩,滚动升级

通过label标签和selector标签选择器来管理pod

3.deployment控制器应用场景

  • 部署无状态应用
  • 管理pod和replicaSet(副本)数量
  • 部署,滚动升级等功能
  • 应用场景:web服务,微服务

4.使用deployment部署应用(yaml)

4.1.导出deployment部署yaml文件

kubectl create deployment web --image=nginx --dry-run -o yaml > web.yaml

#内容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: web
  name: web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: web
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {}
status: {}

其中标签和标签选择器的位置截图如下:

4.2.运行deployment部署文件

kubectl apply -f web.yaml
kubectl get pods -A

4.3.导出deployment发布yaml文件,对外发布该服务,暴露ip和端口

kubectl expose deployment web --port=80 --target-port=80 --type=NodePort --name=web1 -o yaml > web1.yaml

#内容如下:
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2021-03-26T03:19:25Z"
  labels:
    app: web
  managedFields:
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:labels:
          .: {}
          f:app: {}
      f:spec:
        f:externalTrafficPolicy: {}
        f:ports:
          .: {}
          k:{"port":80,"protocol":"TCP"}:
            .: {}
            f:port: {}
            f:protocol: {}
            f:targetPort: {}
        f:selector:
          .: {}
          f:app: {}
        f:sessionAffinity: {}
        f:type: {}
    manager: kubectl
    operation: Update
    time: "2021-03-26T03:19:25Z"
  name: web1
  namespace: default
  resourceVersion: "1839035"
  selfLink: /api/v1/namespaces/default/services/web1
  uid: 779ccd35-4513-48ea-a706-19137f31a27a
spec:
  clusterIP: 10.0.0.76
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 31558
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: web
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}

#运行发布文件
kubectl apply -f web1.yaml
kubectl get pods,svc -A

运行截图如下:

5.应用升级回滚和弹性伸缩

应用升级:镜像版本升级

弹性伸缩

#版本替换,应用升级
kubectl set image deployment web nginx=nginx:1.15

#查看升级状态,是否成功
kubectl rollout status deployment web
#deployment "web" successfully rolled out

#查看升级的历史版本
kubectl rollout history deployment web
#REVISION CHANGE-CAUSE
#1        <none>
#2        <none>

#回滚到上一个版本
kubectl rollout undo deployment web
#查看回滚状态
kubectl rollout status deployment web

#回滚到指定的版本
kubectl rollout undo deployment web --to-revision=2
#查看回滚状态
kubectl rollout status deployment web

#弹性伸缩 10个pod
kubectl scale deployment web --replicas=10
kubectl get pods -A

上一章:kubernetes集群核心技术----pod(四)

https://blog.csdn.net/weixin_42211693/article/details/115210951

下一章:kubernetes集群核心技术----service和ingress(六)

https://blog.csdn.net/weixin_42211693/article/details/115242960

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彼岸花@开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值