Deployment部署实例

文章目录

Nginx

apiVersion: apps/v1                   # api版本声明:1、extensions/v1beta1 是用于kubernetes版本在1.6之前 2、apps/v1beta1 是用于1.6-1.9版本之间 3、apps/v1 是1.9版本以后使用。目前使用的Kubernetes版本: v1.17.4。
kind: Deployment                      # 指定创建资源的类型
metadata:                             # 资源的元数据/属性
  name: nginx-deployment              # 资源名称,在同一个namespace中唯一
  namespace: liuli-space              # 指定namespace
spec:                                 # 资源规格定义
  revisionHistoryLimit: 10            # 保存最近的10个历史版本
  replicas: 2                         # 指定pod副本数量
  strategy:                           # 滚动升级策略
    type: RollingUpdate               # 滚动更新。策略:重建(recreate):停止旧版本部署新版本;滚动更新(rolling-update):一个接一个地以滚动更新方式发布新版本;蓝绿(blue/green):新版本与旧版本一起存在,然后切换流量;金丝雀(canary):将新版本面向一部分用户发布,然后继续全量发布
    rollingUpdate:
      maxSurge: 1                     # 一次可以添加多少个Pod
      maxUnavailable: 0               # 滚动更新期间最大多少个Pod不可用
  selector:                           # 定义标签选择器
    matchLabels:                      # 标签匹配
      app: nginx-server               # 这里选择需要管理的pod的标签名
  template:                           # pod模版定义
    metadata:                         # 资源的元数据/属性
      labels:                         # 定义pod标签
        app: nginx-server             # pod标签名(自定义)
    spec:                             # 指定该资源的内容
      restartPolicy: Always           # 容器重启策略。只要退出就重启(Always),失败退出(exit code不等于0)时重启(OnFailure),只要退出就不再重启(Never)
      imagePullSecrets:               # 私有仓库镜像密钥
      - name: liuli-secret            # 密钥名称
      containers:                     # 定义一个容器
      - name: nginx-container         # 容器名称
        image: 192.168.1.40/liuli/nginx:v1.18    # 镜像名称
        imagePullPolicy: IfNotPresent # 镜像拉取策略。 不管镜像是否存在都会进行一次拉取。(Always),只有镜像不存在时,才会进行镜像拉取。(IfNotPresent),只使用本地镜像,从不拉取(Never)
        ports:                        # 端口定义
        - name: nginx-port            # 端口名称
          containerPort: 80           # 容器对外暴露的端口
          protocol: TCP               # 端口通讯协议
        resources:                    # 容器资源管理
          requests:                   # 容器的请求资源
            memory: "2Gi"             # 请求内存资源:2G
            cpu: "1"                  # 请求CPU资源:1v
          limits:                     # 容器的限制资源
            memory: "4Gi"             # 容器的限制内存:4G
            cpu: "2"                  # 容器的限制CPU:2v
        volumeMounts:				  # 挂载数据卷
        - name: config-volume         # 挂载的数据卷名称
          mountPath: /config          # 挂载到的目录
        startupProbe:                 # 启动探针,根据规则检测容器内程序启动情况,启动探针结束后,其他探针才会开始工作。
          httpGet:                    # HTTP探测。向指定路径发送http请求,返回值为200-400之间则为测试通过。
            path: /index.html         # HTTP的探测路径。
            port: 80                  # HTTP请求的端口。
          initialDelaySeconds: 5      # 在执行第一次探测前应该等待5秒。
          failureThreshold: 10        # 最少连续探测失败多少次才被认定为失败,即重试探测次数。默认是3。最小值是1。
          periodSeconds: 5            # 探测失败后,进行下一次探测等待的时间。
        readinessProbe:               # 就绪探针。用于判断容器是否启动完成(ready状态)
          httpGet:                    # HTTP探测。向指定路径发送http请求,返回值为200-400之间则为测试通过。
            path: /index.html         # HTTP的探测路径。
            port: 80                  # HTTP请求的端口。
          failureThreshold: 3         # 最少连续探测失败多少次才被认定为失败,即重试探测次数。默认是3。最小值是1。
          periodSeconds: 5            # 探测失败后,进行下一次探测等待的时间。
        livenessProbe:                # 存活探针。用于判断容器是否存活(running状态),则kubelet杀掉该容器,并根据容器的重启策略做相应的处理。
          httpGet:                    # HTTP探测。向指定路径发送http请求,返回值为200-400之间则为测试通过。
            path: /index.html         # HTTP的探测路径。
            port: 80                  # HTTP请求的端口。
          failureThreshold: 1         # 最少连续探测失败多少次才被认定为失败,即重试探测次数。默认是3。最小值是1。
          periodSeconds: 10           # 探测失败后,进行下一次探测等待的时间。
        lifecycle:                    # Pod 生命周期控制,有postStart、PreStop两个函数
          preStop:                    # 在容器被终止前执行的任务
            exec:                     # 在容器内执行命令
              command: ["/bin/bash", "-c", "sleep 40"] # 沉睡40秒命令
      volumes:						  # 创建数据卷
      - name: config-volume           # 数据卷名称
        configMap:                    # 从confimap读取数据
          name: nginx-configmap       # configmap名称
          items:                      # 项目
          - key: nginx-conf           # configmap中的键
            path: nginx.conf          # 挂载到指定路径
---
apiVersion: v1                        # api版本声明
kind: Service                         # 指定创建资源的类型
metadata:                             # 资源的元数据/属性
  name: nginx-service                 # service名称
  namespace: liuli-space              # service的命名空间
  labels:                             # 定义标签
    name: nginx-service               # service的标签名称
spec:                                 # 资源规格定义
  type: NodePort                      # 类型是NodePort。Service有四种type: ClusterIP(默认)、NodePort、LoadBalancer、ExternalName. 其中NodePort和LoadBalancer两类型的Services可以对外提供服务。
  selector:                           # 定义标签选择器
    app: nginx-server                 # 这里选择需要管理的pod的标签名
  ports:                              # 端口定义
    - protocol: TCP                   # 端口通讯协议
      port: 8081                      # 集群内部通讯端口(自定义)
      targetPort: 80                  # 容器对外暴露的端口,即containerPort
      nodePort: 32334                 # 所有的节点都会开放此端口,此端口供外部调用
---
apiVersion: extensions/v1beta1        # api版本声明
kind: Ingress                         # 指定创建资源的类型
metadata:                             # 资源的元数据/属性
  name: nginx-ingress                 # ingress名称
  namespace: liuli-space              # ingress的命名空间
spec:                                 # 资源规格定义
  rules:                              # 路由规则
  - host: liuli.com                   # 域名,填写IP无效
    http:                             # 类型,目前只支持http/tls
      paths:                          # 路由路径
      - backend:                      # 代理的后端配置
          serviceName: nginx-service  # Service的名称
          servicePort: 8081           # Service的端口,非nodePort端口
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值