Yaml文件部署实例

文章目录

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              # 端口通讯协议
        livenessProbe:				 # 存活探针。用于判断容器是否存活(running状态),则kubelet杀掉该容器,并根据容器的重启策略做相应的处理。
          failureThreshold: 30       # 探测成功后,最少连续探测失败多少次才被认定为失败。默认是3。最小值是1。
          initialDelaySeconds: 30    # 在执行第一次探测前应该等待30秒。
          periodSeconds: 10          # 每10秒执行一次存活探测。默认是10秒,最小1秒。
          successThreshold: 1        # 探测失败后,最少连续探测成功多少次才被认定为成功。默认是1。对于liveness必须是1。最小值是1。
          tcpSocket:                 # TCP端口存活检测
            port: 80                 # 容器端口
          timeoutSeconds: 2          # 探测超时时间。默认1秒,最小1秒。
        readinessProbe:              # 就绪探针。用于判断容器是否启动完成(ready状态)
          failureThreshold: 30       # 探测成功后,最少连续探测失败多少次才被认定为失败。默认是3。最小值是1。
          initialDelaySeconds: 30    # 在执行第一次探测前应该等待30秒。
          periodSeconds: 10          # 每10秒执行一次存活探测。默认是10秒,最小1秒。
          successThreshold: 2        # 探测失败后,最少连续探测成功多少次才被认定为成功。默认是1。
          tcpSocket:                 # TCP端口存活检测
            port: 80                 # 容器端口
          timeoutSeconds: 2          # 探测超时时间。默认1秒,最小1秒。
        lifecycle:                   # Pod 生命周期控制,有postStart、PreStop两个函数
          preStop:                   # 在容器被终止前执行的任务
            exec:                    # 在容器内执行命令
              command: ["/bin/bash", "-c", "sleep 40"] # 沉睡40秒命令
---
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端口
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章