---
apiVersion: v1 #指定api组
kind: Namespace #指定api类型
metadata: #元数据
name: lnmp #定义名称空间名字
---
apiVersion: storage.k8s.io/v1 #指定api组
kind: StorageClass #指定api类型
metadata: #元数据
name: nfs #定义存储类名字
namespace: lnmp #指定名称空间
provisioner: nfs #指定使用的存储类
parameters: #指定存储参数
server: 10.0.0.4 #指定NFS服务器地址
path: /data/lnmp #指定NFS服务器存储路径
vers: "4" #指定协议NFSv4
---
apiVersion: v1 #指定api组
kind: PersistentVolume #指定api类型
metadata: #元数据
name: nfs-mysql #定义持久卷PV名字
namespace: lnmp #指定名称空间
spec: #指定对象规约
capacity: #容量
storage: 100Gi #指定PV存储容量
volumeMode: Filesystem #指定卷模式为文件系统
accessModes: #指定访问模式
- ReadWriteMany #指定卷可以被多个节点以读写方式挂载
storageClassName: nfs #指定存储类的名字
nfs: #指定对nfs进行配置
server: 10.0.0.4 #定义nfs服务器地址
path: /data/lnmp/mysql #定义nfs服务器内存储路径
---
apiVersion: v1 #指定api组
kind: PersistentVolumeClaim #指定api类型
metadata: #元数据
name: nfs-mysql-pvc #定义用户存储请求PVC名字
namespace: lnmp #指定名称空间
spec: #指定对象规约
storageClassName: nfs #指定存储类的名字
accessModes: #指定访问模式
- ReadWriteMany #指定访问模式
resources: #定义资源请求限制
requests: #定义最小资源量
storage: 100Gi #指定请求的存储量
---
apiVersion: v1 #指定api组
kind: PersistentVolume #指定api类型
metadata: #元数据
name: nfs-wordpress #定义持久卷PV名字
namespace: lnmp #指定名称空间
spec: #指定对象规约
capacity: #容量
storage: 50Gi #指定PV存储容量
volumeMode: Filesystem #指定卷模式为文件系统
accessModes: #指定访问模式
- ReadWriteMany #指定卷可以被多个节点以读写方式挂载
storageClassName: nfs #指定存储类的名字
nfs: #指定对nfs进行配置
server: 10.0.0.4 #定义nfs服务器地址
path: /data/lnmp/wordpress #定义nfs服务器内存储路径
---
apiVersion: v1 #指定api组
kind: PersistentVolumeClaim #指定api类型
metadata: #元数据
name: nfs-wordpress-pvc #定义用户存储请求PVC名字
namespace: lnmp #指定名称空间
spec: #指定对象规约
storageClassName: nfs #指定存储类的名字
accessModes: #指定访问模式
- ReadWriteMany #指定访问模式
resources: #定义资源请求限制
requests: #定义最小资源量
storage: 50Gi #指定请求的存储量
---
apiVersion: v1 #指定api组
kind: ConfigMap #指定api类型
metadata: #元数据
name: my-config #定义配置映射的名字
namespace: lnmp #指定名称空间
data: #定义配置项及其对应的值
default.conf: | #nginx反向代理配置文件
server {
listen 80;
server_name localhost;
#root /var/www/html;
location / {
root /var/www/html;
index index.php;
}
location ~ \.php$ {
root /var/www/html;
fastcgi_pass wordpress-service:9000;
#proxy_pass http://wordpress-service:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
#proxy_set_header Host $host;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header X-Forwarded-Proto $scheme;
}
}
nginx.conf: | #nginx主配置文件
user www-data;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
www.conf: | #PHP配置文件
[www]
user = www-data
group = www-data
listen = 0.0.0.0:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
my.cnf: | #MySQL配置文件
[mysqld]
host-cache-size=0
skip-name-resolve
datadir=/var/lib/mysql
log-error = /var/lib/mysql/mysqld_error.log
socket=/var/lib/mysql/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
pid-file=/var/lib/mysql/mysqld.pid
[client]
socket=/var/lib/mysql/mysqld.sock
!includedir /etc/mysql/conf.d/
---
apiVersion: apps/v1 #指定api组
kind: Deployment #指定api类型
metadata: #元数据
labels: #标签
lnmp.home.com/name: wordpress #定义标签
name: wordpress #指定部署对象的名字
namespace: lnmp #指定名称空间
spec: #指定对象规约
replicas: 4 #定义副本集
revisionHistoryLimit: 10 #进行更新后保留的历史版本数
strategy: #配置更新策略
rollingUpdate: #配置滚动更新
maxSurge: 25% #进行滚动更新时,允许超过约定副本数的比例/个数
maxUnavailable: 25% #进行滚动更新时,允许的最大不可用比例/数量
selector: #定义标签选择器
matchLabels: #定义匹配标签
lnmp.home.com/name: wordpress #指定匹配的标签
template: #定义模板
metadata: #元数据
labels: #标签
lnmp.home.com/name: wordpress #指定标签
spec: #指定对象规约
imagePullSecrets: #指定拉取镜像的认证信息
- name: harbor #引用Secret对象
containers: #定义容器
- env: #定义环境变量
- name: "WORDPRESS_DB_HOST"
value: "mysql-service"
- name: "WORDPRESS_DB_USER"
value: "wordpress"
- name: "WORDPRESS_DB_PASSWORD"
value: "wozhenniubi"
- name: "WORDPRESS_DB_NAME"
value: "wordpress"
image: harbor.placjh.com/wordpress/wordpress:php8.3-fpm #指定镜像和版本
imagePullPolicy: IfNotPresent #定义镜像拉取策略
name: wordpress #指定部署对象的名字
resources: #设置资源限制
requests: #资源需求,期望大小
memory: 50Mi #期望内存资源大小
cpu: 100m #期望cpu资源大小
limits: #资源限制,最大限制
memory: 100Mi #请求内存资源最多使用多少
cpu: 200m #请求cpu资源最多使用多少
ports: #指定开放端口
- containerPort: 9000 #开放9000端口
name: php #给端口命名
protocol: TCP #网络协议
readinessProbe: #定义就绪探针
exec: #指定使用命令方式
command: #使用命令
- ls
- /var/www/html/wp-login.php
periodSeconds: 10 #探测周期
timeoutSeconds: 5 #超时时间
successThreshold: 1 #成功次数
failureThreshold: 3 #失败次数
livenessProbe: #定义存活探针
tcpSocket: #指定使用tcp连接方式
port: 9000 #指定探测端口
periodSeconds: 10 #探测周期
timeoutSeconds: 1 #超时时间
successThreshold: 1 #成功次数
failureThreshold: 3 #失败次数
volumeMounts: #配置数据卷挂载
- name: nfs-data #指定存储卷名称
mountPath: /var/www/html #定义挂载点
- name: www-config #指定存储卷名称
mountPath: /usr/local/etc/php-fpm.d/www.conf #定义挂载点
subPath: www.conf #指定configmap子路径
volumes: #定义存储卷
- name: nfs-data #定义存储卷名称
persistentVolumeClaim: #指定pvc
claimName: nfs-worpress-pvc #指定pvc
- name: www-config #定义存储卷
configMap: #定义存储卷类型为configmap
name: my-config #指定存储卷名称
items: #指定使用的键值对
- key: www.conf #指定configMap中的键名
path: www.conf #指定挂载后的文件名
---
apiVersion: apps/v1 #指定api组
kind: Deployment #指定api类型
metadata: #元数据
labels: #标签
lnmp.home.com/name: nginx #定义标签
name: nginx #指定部署对象的名字
namespace: lnmp #指定名称空间
spec: #指定对象规约
replicas: 1 #指定副本集
selector: #定义标签选择器
matchLabels: #定义匹配标签
lnmp.home.com/name: nginx #指定匹配的标签
template: #定义模板
metadata: #元数据
labels: #标签
lnmp.home.com/name: nginx #指定标签
spec: #指定对象规约
imagePullSecrets: #指定拉取镜像的认证信息
- name: harbor #引用Secret对象
containers: #定义容器
- image: harbor.placjh.com/nginx/nginx:1.25.4 #指定镜像和版本
imagePullPolicy: IfNotPresent #定义镜像拉取策略
name: nginx #指定部署对象的名字
resources: #设置资源限制
requests: #资源需求,期望大小
memory: 50Mi #期望内存资源大小
cpu: 100m #期望cpu资源大小
limits: #资源限制,最大限制
memory: 100Mi #请求内存资源最多使用多少
cpu: 200m #请求cpu资源最多使用多少
ports: #指定开放端口
- containerPort: 80 #开放80端口
name: web #给端口命名
protocol: TCP #网络协议
readinessProbe: #定义就绪探针
httpGet: #指定使用http连接方式
path: / #指定访问路径
port: 80 #指定访问端口
scheme: HTTP #指定使用HTTP协议
periodSeconds: 10 #探测周期
timeoutSeconds: 1 #超时时间
successThreshold: 1 #成功次数
failureThreshold: 3 #失败次数
livenessProbe: #定义存活探针
httpGet: #指定使用http连接方式
path: / #指定访问路径
port: 80 #指定访问端口
scheme: HTTP #指定使用HTTP协议
periodSeconds: 10 #探测周期
successThreshold: 1 #超时时间
timeoutSeconds: 1 #成功次数
failureThreshold: 3 #失败次数
volumeMounts: #配置数据卷挂载
- name: default-config #指定存储卷名称
mountPath: /etc/nginx/conf.d/default.conf #定义挂载点
subPath: default.conf #指定configmap子路径
- name: nginx-config #指定存储卷名称
mountPath: /etc/nginx/nginx.conf #定义挂载点
subPath: nginx.conf #指定configmap子路径
- name: nfs-data #指定存储卷名称
mountPath: /var/www/html #定义挂载点
volumes: #定义存储卷
- name: default-config #定义存储卷名称
configMap: #定义存储卷类型为configmap
name: my-config #指定存储卷名称
items: #指定使用的键值对
- key: default.conf #指定configMap中的键名
path: default.conf #指定挂载后的文件名
- name: nginx-config #定义存储卷名称
configMap: #定义存储卷类型为configmap
name: my-config #指定存储卷名称
items: #指定使用的键值对
- key: nginx.conf #指定configMap中的键名
path: nginx.conf #指定挂载后的文件名
- name: nfs-data #定义存储卷名称
persistentVolumeClaim: #指定pvc
claimName: nfs-wordpress-pvc #指定pvc
---
apiVersion: apps/v1 #指定api组
kind: StatefulSet #指定api类型
metadata: #元数据
labels: #标签
lnmp.home.com/name: mysql #定义标签
name: mysql #指定部署对象的名字
namespace: lnmp #指定名称空间
spec: #指定对象规约
replicas: 1 #定义副本集
selector: #定义标签选择器
matchLabels: #定义匹配的标签
lnmp.home.com/name: mysql #指定匹配的标签
template: #定义模板
metadata: #元数据
labels: #标签
lnmp.home.com/name: mysql #指定标签
spec: #指定对象规约
imagePullSecrets: #指定拉取镜像的认证信息
- name: harbor #引用Secret对象
containers: #定义容器
- env: #定义环境变量
- name: "MYSQL_ROOT_PASSWORD"
value: "2Grm-JFJ"
- name: "MYSQL_DATABASE"
value: "wordpress"
- name: "MYSQL_USER"
value: "wordpress"
- name: "MYSQL_PASSWORD"
value: "2Grm-JFJ"
image: harbor.placjh.com/mysql/mysql:oraclelinux8 #指定镜像版本
imagePullPolicy: IfNotPresent #指定镜像拉取策略
name: mysql #指定部署对象的名字
readinessProbe: #定义就绪探针
initialDelaySeconds: 30 #定义容器启动多长时间后探测
periodSeconds: 10 #探测周期
timeoutSeconds: 5 #超时时间
successThreshold: 1 #成功次数
failureThreshold: 3 #失败次数
exec: #指定使用命令方式
command: ["mysqladmin", "-uroot", "-p${MYSQL_ROOT_PASSWORD}", "ping"] #使用命令
livenessProbe: #定义存活探针
periodSeconds: 10 #探测周期
timeoutSeconds: 5 #超时时间
successThreshold: 1 #成功次数
failureThreshold: 3 #失败次数
exec: #指定使用命令方式
command: ["mysqladmin", "-uroot", "-p${MYSQL_ROOT_PASSWORD}", "ping"] #使用命令
ports: #指定开放端口
- containerPort: 3306 #开放3306端口
name: db #给端口命名
protocol: TCP #网络协议
volumeMounts: #配置数据卷挂载
- name: nfs-data #定义存储卷名称
mountPath: /var/lib/mysql #定义挂载点
- name: my-cnf #定义存储卷名称
mountPath: /etc/my.cnf #定义挂载点
subPath: my.cnf #指定configmap子路径
volumes: #定义存储卷
- name: nfs-data #指定存储卷名称
persistentVolumeClaim: #指定pvc
claimName: nfs-mysql-pvc #指定pvc
- name: my-cnf #定义存储卷名称
configMap: #定义存储卷类型为configmap
name: my-config #指定存储卷名称
items: #指定使用的键值对
- key: my.cnf #指定configMap中的键名
path: my.cnf #指定挂载后的文件名
---
apiVersion: v1 #指定api组
kind: Service #指定api类型
metadata: #元数据
labels: #标签
lnmp.home.com/name: wordpress-service #定义标签
name: wordpress-service #指定部署对象的名字
namespace: lnmp #指定名称空间
spec: #指定对象规约
ports: #指定service开放端口
- name: wordpress #指定端口名称
port: 9000 #开放9000端口
protocol: TCP #网络协议
selector: #标签选择器
lnmp.home.com/name: wordpress #指定标签
---
apiVersion: v1 #指定api组
kind: Service #指定api类型
metadata: #元数据
labels: #标签
lnmp.home.com/name: nginx-service #定义标签
name: nginx-service #指定部署对象的名字
namespace: lnmp #指定名称空间
annotations: #注解
lb.kubesphere.io/v1alpha1: openelb #指定使用的负载均衡器
protocol.openelb.kubesphere.io/v1alpha1: layer2 #指定使用的工作协议
eip.openelb.kubesphere.io/v1alpha2: eip-pool #指定使用的EIP(弹性地址池)
spec: #指定对象规约
ports: #指定service开放端口
- name: web #指定端口名称
port: 80 #开放80端口
protocol: TCP #网络协议
selector: #标签选择器
lnmp.home.com/name: nginx #指定标签
type: LoadBalancer #指定service类型
---
apiVersion: v1 #指定api组
kind: Service #指定api类型
metadata: #元数据
labels: #标签
lnmp.home.com/name: mysql-service #定义标签
name: mysql-service #指定部署对象的名字
namespace: lnmp #指定名称空间
spec: #指定对象规约
ports: #指定service开放端口
- name: db #指定端口名称
port: 3306 #开放3306端口
protocol: TCP #网络协议
selector: #标签选择器
lnmp.home.com/name: mysql #指定标签
---
apiVersion: autoscaling/v2 #指定api组
kind: HorizontalPodAutoscaler #指定api类型
metadata: #元数据
labels: #标签
lnmp.home.com/name: wordpress-hpa #定义标签
name: wordpress-hpa #指定部署对象名字
namespace: lnmp #指定名称空间
spec: #指定对象规约
scaleTargetRef: #指定HPA要操作的目标对象
apiVersion: apps/v1 #指定要关联的目标资源的api组
kind: Deployment #指定要关联的目标资源的api类型
name: wordpress #要关联的目标资源的名称
minReplicas: 1 #最小副本数
maxReplicas: 10 #最大副本数
metrics: #扩缩容决策
- type: Resource #指标类型
resource: #指定具体的资源信息
name: cpu #资源名称
target: #定义相关资源配置
type: Utilization #目标类型
averageUtilization: 50 #利用率
name: memory #资源名称
target: #定义相关资源配置
type: RUtilization #目标类型
averageUtilization: 50 #利用率
---
apiVersion: autoscaling/v2 #指定api组
kind: HorizontalPodAutoscaler #指定api类型
metadata: #元数据
labels: #标签
lnmp.home.com/name: nginx-hpa #定义标签
name: nginx-hpa #指定部署对象的名字
namespace: lnmp #指定名称空间
spec: #指定对象规约
scaleTargetRef: #指定HPA要操作的目标对象
apiVersion: apps/v1 #指定要关联的目标资源的api组
kind: Deployment #指定要关联的目标资源的api类型
name: nginx #要关联的目标资源的名称
minReplicas: 1 #最小副本数
maxReplicas: 10 #最大副本数
metrics: #扩缩容决策
- type: Resource #指标类型
resource: #指定具体的资源信息
name: cpu #资源名称
target: #定义相关资源配置
type: Utilization #目标类型
averageUtilization: 50 #利用率
name: memory #资源名称
target: #定义相关资源配置
type: RUtilization #目标类型
averageUtilization: 50 #利用率
---
apiVersion: networking.k8s.io/v1 #指定api组
kind: Ingress #指定api类型
metadata: #元数据
name: ingress-test #指定部署对象的名字
namespace: lnmp #指定名称空间
annotations: #注解
nginx.ingress.kubernetes.io/rewrite-target: / #路径重写
spec: #指定对象规约
ingressClassName: nginx #指定使用的Ingress控制器
rules: #路由规则
- host: test.home.com #指定主机名(类似nginx的server_name)
http: #http相关配置
paths: #定义路径映射
- pathType: Prefix #路径类型
backend: #后端服务配置
service: #后端服务信息
name: nginx-service #指定后端service名字
port: #服务端口
number: 80 #指定端口
path: / #定义路径
---
apiVersion: v1 #指定api组
kind: Secret #指定api类型
data: #提供的数据
.dockerconfigjson: eyJhdXRocyI6eyJodHRwczovL2hhcmJvci5wbGFjamguY29tIjp7InVzZXJuYW1lIjoiYWRtaW4iLCJwYXNzd29yZCI6Ikw0eWgxUVQiLCJhdXRoIjoiWVdSdGFXNDZNa2R5YlMxS1Jrbz0ifX19Cg== #docker的登录信息,其格式为base64编码
metadata: #元数据
name: harbor #资源名称
namespace: lnmp #名称空间
type: kubernetes.io/dockerconfigjson #类型