文章目录
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端口