kubernetes 之 yaml
Pod yaml 格式
yaml 分为几部分,示例如下:
kubectl explain pod # 可以产看 pod yaml 支持的定义内容
# 第一部分:apiversion 标记api版本;api版本定义参考链接:https://www.cnblogs.com/Star-Haitian/p/16483762.html#api-%E7%89%88%E6%9C%AC%E7%9A%84%E5%AE%9A%E4%B9%89
apiVersion: v1
kind: Pod # 定义资源名;可以通过 kubectl api-resources 查看支持的资源名称
metadata: # 定义 资源 的 名称、名称空间、labels 等;可以通过 kubectl explain pod.metadata 查看支持的所有内容
name: myblog
namespace: demo
labels:
component: myblog # 给pod 打的标签
spec: # 定义具体的 容器 信息 ;可以通过 kubectl explain pod.spec 查看支持的内容
containers: # 容器定义,可以定义多个容器
- name: myblog # 一个 name 定义一个容器;
image: 172.21.32.6:5000/myblog
env: # myblog 容器内的环境变量
- name: MYSQL_HOST # 指定root用户的用户名
value: "127.0.0.1"
- name: MYSQL_PASSWD
value: "123456"
ports:
- containerPort: 8002
- name: mysql # 第二个容器
image: 172.21.32.6:5000/mysql:5.7-utf8
ports:
- containerPort: 3306
env: # mysql 容器内的环境变量
- name: MYSQL_ROOT_PASSWORD
value: "123456"
- name: MYSQL_DATABASE
value: "myblog"
Deployment yaml
Deployment yaml 就是在 pod 最外层包了 一层 ReplicaSet 配置,具体如下配置;
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql
namespace: demo
spec: # Deployment 第一层 spec 定义的是 ReplicaSet 内容,第二层定义的是 pod 内容
replicas: 1 #指定Pod副本数
selector: #指定Pod的选择器
matchLabels:
app: mysql # deployment 管理的pod标签为 key=app ;value=mysql
template:
metadata:
labels: #给Pod打label
app: mysql
spec:
hostNetwork: true # 声明pod的网络模式为host模式,效果通docker run --net=host
volumes:
- name: mysql-data
hostPath:
path: /opt/mysql/data
nodeSelector: # 使用节点选择器将Pod调度到指定label的节点
component: mysql
containers:
- name: mysql
image: 172.21.32.15:5000/mysql:5.7-utf8
ports:
- containerPort: 3306
env:
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: myblog
key: MYSQL_USER
- name: MYSQL_PASSWD
valueFrom:
secretKeyRef:
name: myblog
key: MYSQL_PASSWD
- name: MYSQL_DATABASE
value: "myblog"
resources:
requests:
memory: 100Mi
cpu: 50m
limits:
memory: 500Mi
cpu: 100m
readinessProbe:
tcpSocket:
port: 3306
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
tcpSocket:
port: 3306
initialDelaySeconds: 15
periodSeconds: 20
volumeMounts:
- name: mysql-data
mountPath: /var/lib/mysql
svc yaml 格式
apiVersion: v1
kind: Service
metadata:
name: myblog
namespace: demo
spec:
ports:
- port: 80 # svc 端口
protocol: TCP # 协议
targetPort: 8002 # 容器端口
selector:
app: myblog # 转发到 标签 key = app;value = myblog 的pod上
type: ClusterIP # svc 类型
本文来自博客园, 作者:Star-Hitian, 转载请注明原文链接:https://www.cnblogs.com/Star-Haitian/p/16493365.html