案例一、
apiVersion: v1
kind: Namespace
metadata:
name: test-tomcat
---
apiVersion: apps/v1
kind: Deployment #绑定的是Deployment模板
metadata: #元数据
name: tomcat-deployment # deployment模板的名字
namespace: test-tomcat
labels: # 标签
app: tomcat # app 名字,需要和后面的service.yaml 一致
spec: # pod 的描述信息
replicas: 3 # 开启两个pods
selector: #关联pod 选择器
matchLabels:
app: tomcat # 需要和app 一致
template:
metadata:
labels:
app: tomcat # 需要和app 名字一致
spec:
nodeSelector:
deploy.type: biz_app #指定节点运行
volumes: # 宿主机挂载目录
- name: web-app-webapps # 给需要挂载的宿主机路径起个名字
hostPath: # 宿主机路径
path: /home/yida/test/webapps # 路径: 宿主机路径目录
- name: web-app-logs
hostPath:
path: /home/yida/test/logs
containers: # 容器描述
- name: tomcat # 容器的名字
image: 10.143.133.15:5000/tomcat9 # 要拉取的镜像地址
resources:
limits:
memory: 4Gi
requests:
memory: 2Gi
ports: # 容器内部映射的端口号
- containerPort: 8080 # 容器内部映射的端口号
volumeMounts: # 容器内部映射的目录路径
- name: web-app-webapps # 给需要映射的目录路径起个名字,名字要和上面的宿主机器的名字对应
mountPath: /usr/local/tomcat/webapps # 容器内部映射挂载的目录路径
- name: web-app-logs
mountPath: /usr/local/tomcat/logs
---
apiVersion: v1 # service api版本
kind: Service # 使用service 模块
metadata: # 元数据
name: tomcat-service # 新建自定义service 模块的名字
namespace: test-tomcat
spec: # service 信息
type: NodePort # 使用Nodeport协议,对外提供开放端口
ports: # 端口信息
- port: 8080 # service 的端口
targetPort: 8080 # 容器tomcat的端口
nodePort: 8026 # 自定义对外开发的端口
selector: # 选择标签器
app: tomcat # app tomcat 此名字要匹配deployment 的app: tomcat
案例二、
apiVersion: v1
kind: Namespace
metadata:
name: test-tomcat
---
apiVersion: apps/v1
kind: Deployment #绑定的是Deployment模板
metadata:
name: tomcat-deployment # deployment模板的名字
namespace: test-tomcat
labels: # 标签
app: tomcat # app 名字,需要和后面的service.yaml 一致
spec: # pod 的描述信息
replicas: 5 # 开启两个pods
selector: # 选择器
matchLabels:
app: tomcat # 需要和app 一致
template:
metadata:
labels:
app: tomcat # 需要和app 名字一致
spec:
affinity: #定义硬亲和性
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution: # 硬策略
nodeSelectorTerms:
- matchExpressions: #可由 一到多 个标签选择器组成,多个标签选择器彼此间为“逻辑与”的关系
- key: node
operator: In
values:
- master01
- master02
volumes: # 宿主机挂载目录
- name: web-app-webapps # 给需要挂载的宿主机路径起个名字
hostPath: # 宿主机路径
path: /home/yida/test/webapps # 路径: 宿主机路径目录
- name: web-app-logs
hostPath:
path: /home/yida/test/logs
containers: # 容器描述
- name: tomcat # 容器的名字
image: 10.143.133.15:5000/tomcat9 # 要拉取的镜像地址
imagePullPolicy: IfNotPresent #默认值,本地有则使用本地镜像,不拉取
resources:
limits:
memory: 4Gi
requests:
memory: 2Gi
ports: # 容器内部映射的端口号
- containerPort: 8080 # 容器内部映射的端口号
volumeMounts: # 容器内部映射的目录路径
- name: web-app-webapps # 给需要映射的目录路径起个名字,名字要和上面的宿主机器的名字对应
mountPath: /usr/local/tomcat/webapps # 容器内部映射挂载的目录路径
- name: web-app-logs
mountPath: /usr/local/tomcat/logs
---
apiVersion: v1 # service api版本
kind: Service # 使用service 模块
metadata: # 元数据
name: tomcat-service # 新建自定义service 模块的名字
namespace: test-tomcat
spec: # service 信息
type: NodePort # 使用Nodeport协议,对外提供开放端口
ports: # 端口信息
- port: 8080 # service 的端口
targetPort: 8080 # 容器tomcat的端口
nodePort: 8066 # 自定义对外开发的端口
selector: # 选择标签器
app: tomcat # app tomcat 此名字要匹配deployment 的app: tomcat
案例三、
#apiVersion: v1
#kind: Namespace
#metadata:
# name: test-tomcat
#---
apiVersion: apps/v1
kind: Deployment #绑定的是Deployment模板
metadata:
name: tomcat3-deployment # deployment模板的名字
namespace: test-tomcat
labels: # 标签
app: tomcat3 # app 名字,需要和后面的service.yaml 一致
spec: # pod 的描述信息
replicas: 5 # 开启两个pods
selector: # 选择器
matchLabels:
app: tomcat3 # 需要和app 一致
template:
metadata:
labels:
app: tomcat3 # 需要和app 名字一致
spec:
affinity: #定义硬亲和性
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution: # 硬策略
nodeSelectorTerms:
- matchExpressions: #可由 一到多 个标签选择器组成,多个标签选择器彼此间为“逻辑与”的关系
- key: node
operator: In
values:
- master03
- node01
- node02
volumes: # 宿主机挂载目录
- name: web-app-webapps # 给需要挂载的宿主机路径起个名字
hostPath: # 宿主机路径
path: /home/yida/test/webapps # 路径: 宿主机路径目录
- name: web-app-logs
hostPath:
path: /home/yida/test/logs
containers: # 容器描述
- name: tomcat # 容器的名字
image: 10.143.133.15:5000/tomcat9 # 要拉取的镜像地址
imagePullPolicy: IfNotPresent #默认值,本地有则使用本地镜像,不拉取
resources:
limits:
memory: 4Gi
requests:
memory: 2Gi
ports: # 容器内部映射的端口号
- containerPort: 8080 # 容器内部映射的端口号
livenessProbe: #探测pod是否健康
httpGet:
path: /
port: 8080
initialDelaySeconds: 60
timeoutSeconds: 20
periodSeconds: 30 # 探测周期,每30s探测一次
successThreshold: 1 # 连续探测1次成功表示成功
failureThreshold: 3 # 连续探测3次失败表示失败
readinessProbe: #探测访问状态请求
httpGet:
path: /
port: 8080
initialDelaySeconds: 60 #容器启动多久后开始探测
timeoutSeconds: 20 #表示容器必须在5s内做出相应反馈给probe,否则视为探测失败
periodSeconds: 30 # 探测周期,每30s探测一次
successThreshold: 1 # 连续探测1次成功表示成功
failureThreshold: 3 # 连续探测3次失败表示失败
volumeMounts: # 容器内部映射的目录路径
- name: web-app-webapps # 给需要映射的目录路径起个名字,名字要和上面的宿主机器的名字对应
mountPath: /usr/local/tomcat/webapps # 容器内部映射挂载的目录路径
- name: web-app-logs
mountPath: /usr/local/tomcat/logs
---
apiVersion: v1 # service api版本
kind: Service # 使用service 模块
metadata: # 元数据
name: tomcat-service3 # 新建自定义service 模块的名字
namespace: test-tomcat
spec: # service 信息
type: NodePort # 使用Nodeport协议,对外提供开放端口
ports: # 端口信息
- port: 8080 # service 的端口
targetPort: 8080 # 容器tomcat的端口
nodePort: 8076 # 自定义对外开发的端口
selector: # 选择标签器
app: tomcat3 # app tomcat 此名字要匹配deployment 的app: tomcat
案例四、
apiVersion: v1
kind: Namespace
metadata:
name: test-tomcat2
---
apiVersion: apps/v1
kind: Deployment #绑定的是Deployment模板
metadata: #元数据
name: tomcat-deployment2 # deployment模板的名字
namespace: test-tomcat2
labels: # 标签
app: tomcat # app 名字,需要和后面的service.yaml 一致
spec: # pod 的描述信息
replicas: 2 # 开启两个pods
selector: #关联pod 选择器
matchLabels:
app: tomcat # 需要和app 一致
template:
metadata:
labels:
app: tomcat # 需要和app 名字一致
spec:
nodeSelector:
node: master02 #指定节点运行
volumes: # 宿主机挂载目录
- name: web-app-webapps # 给需要挂载的宿主机路径起个名字
hostPath: # 宿主机路径
path: /home/yida/test/webapps # 路径: 宿主机路径目录
- name: web-app-logs
hostPath:
path: /home/yida/test/logs
containers: # 容器描述
- name: tomcat # 容器的名字
image: 10.143.133.15:5000/tomcat9 # 要拉取的镜像地址
resources:
limits:
memory: 4Gi
requests:
memory: 2Gi
ports: # 容器内部映射的端口号
- containerPort: 8080 # 容器内部映射的端口号
volumeMounts: # 容器内部映射的目录路径
- name: web-app-webapps # 给需要映射的目录路径起个名字,名字要和上面的宿主机器的名字对应
mountPath: /usr/local/tomcat/webapps # 容器内部映射挂载的目录路径
- name: web-app-logs
mountPath: /usr/local/tomcat/logs
---
apiVersion: v1 # service api版本
kind: Service # 使用service 模块
metadata: # 元数据
name: tomcat-service # 新建自定义service 模块的名字
namespace: test-tomcat2
spec: # service 信息
type: NodePort # 使用Nodeport协议,对外提供开放端口
ports: # 端口信息
- port: 8080 # service 的端口
targetPort: 8080 # 容器tomcat的端口
nodePort: 8026 # 自定义对外开发的端口
selector: # 选择标签器
app: tomcat # app tomcat 此名字要匹配deployment 的app: tomcat