7.kubernetes示例:wordpress部署实例
[toc]
需求
MySQL需求
- 名称空间:- blog
 
- 镜像- mysql:5.7
 
- 环境变量- root密码:123
- 数据库:wp
- 用户:wp_user
- 参数:字符集
 
- root密码:
- 数据持久化
- 映射到宿主机的/data/mysql/data
wordpress需求
- 镜像:- 官方
 
- 数据库地址- cluster ip
 
- 数据库名称- wp
 
- 用户- www
 
- wordpress数量- 单独起2pod
 
- mysql数量- 单独起1个pod
 
使用资源
- ns
- Controller- pod
- initContainer
- 存活探针
- 就绪探针
 
- clusterIP
- ingress
交付方案
规划
| 1 | # 镜像 | 
部署NFS服务器
- 安装NFS - 1 
 2- # 安装nfs-utils 
 yum install -y nfs-utils
- 创建 - www用户组进行管理- 1 
 2
 3
 4
 5- # 创建www组 
 groupadd www -g 666
 # 创建www用户
 useradd www -u 666 -s /sbin/nologin -M -g 666
- 创建文件共享目录并授权 - 1 
 2
 3
 4
 5- # 创建文件共享目录 
 mkdir /data
 # 授权www用户、组
 chown www:www /data/
- 编辑NFS的配置文件 - 1 
 2
 3- # 编辑NFS的配置文件 
 vim /etc/exports
 /data/wp 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
- 启动NFS服务 - 1 
 2- # 启动nfs服务 
 systemctl start nfs
资源清单
- 创建名称空间清单 - 1 
 2
 3
 4
 5- # vim ns-blog.yaml 
 apiVersion: v1
 kind: Namespace
 metadata:
 name: blog
- 创建mysql-dp清单 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41- # vim mysql-dp.yaml 
 apiVersion: apps/v1
 kind: Deployment
 metadata:
 name: mysql-dp
 namespace: blog
 spec:
 replicas: 1
 selector:
 matchLabels:
 run: mysql
 template:
 metadata:
 name: mysql-pod
 labels:
 run: mysql
 spec:
 volumes:
 - name: db-data
 hostPath:
 path: /data/mysql/
 containers:
 - name: mysql-container
 image: mysql:5.7
 imagePullPolicy: IfNotPresent
 ports:
 - containerPort: 3306
 env:
 - name: MYSQL_ROOT_PASSWORD
 value: "123"
 - name: MYSQL_DATABASE
 value: "wp"
 - name: MYSQL_USER
 value: "wp_user"
 - name: MYSQL_PASSWORD
 value: "123"
 volumeMounts:
 - name: db-data
 mountPath: /var/lib/mysql
 args:
 - --character-set-server=utf8
- 创建mysql的service网络资源(Cluster) - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15- # vim mysql-service.yaml 
 apiVersion: v1
 kind: Service
 metadata:
 name: mysql-cluster
 namespace: blog
 spec:
 selector:
 run: mysql
 ports:
 - name: mysql-port
 port: 3306
 protocol: TCP
 targetPort: 3306
 type: ClusterIP
- 创建wp清单 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38- # vim wordpress-dp.yaml 
 apiVersion: apps/v1
 kind: Deployment
 metadata:
 name: wp-dp
 namespace: blog
 spec:
 replicas: 2
 selector:
 matchLabels:
 run: wp
 template:
 metadata:
 name: wp-pod
 labels:
 run: wp
 spec:
 volumes:
 - name: wp-data
 nfs:
 path: /data/wp
 server: 172.16.1.31
 containers:
 - name: wp-container
 image: wordpress
 imagePullPolicy: IfNotPresent
 env:
 - name: WORDPRESS_DB_HOST
 value: "mysql-cluster"
 - name: WORDPRESS_DB_NAME
 value: "wp"
 - name: WORDPRESS_DB_USER
 value: "wp_user"
 - name: WORDPRESS_DB_PASSWORD
 value: "123"
 volumeMounts:
 - name: wp-data
 mountPath: /var/www/html
- 创建wp的service网络资源(Cluster) - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15- # vim wp-svc.yaml 
 apiVersion: v1
 kind: Service
 metadata:
 name: wp-cluster
 namespace: blog
 spec:
 selector:
 run: wp
 ports:
 - name: wp-port
 port: 80
 protocol: TCP
 targetPort: 80
 type: ClusterIP
- 创建wp的ingress资源 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18- # wp-ingress 
 apiVersion: networking.k8s.io/v1
 kind: Ingress
 metadata:
 name: wp-ingress
 namespace: blog
 spec:
 rules:
 - host: blog.xxx.com
 http:
 paths:
 - path: /
 pathType: ImplementationSpecific
 backend:
 service:
 name: wp-cluster
 port:
 number: 80
- 优化合并资源清单 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138- # vim wp_mysql.yaml 
 ---
 apiVersion: v1
 kind: Namespace
 metadata:
 name: blog
 ---
 apiVersion: apps/v1
 kind: Deployment
 metadata:
 name: mysql-dp
 namespace: blog
 spec:
 replicas: 1
 selector:
 matchLabels:
 run: mysql
 template:
 metadata:
 name: mysql-pod
 labels:
 run: mysql
 spec:
 volumes:
 - name: db-data
 hostPath:
 path: /data/mysql/
 containers:
 - name: mysql-container
 image: mysql:5.7
 imagePullPolicy: IfNotPresent
 ports:
 - containerPort: 3306
 env:
 - name: MYSQL_ROOT_PASSWORD
 value: "123"
 - name: MYSQL_DATABASE
 value: "wp"
 - name: MYSQL_USER
 value: "wp_user"
 - name: MYSQL_PASSWORD
 value: "123"
 volumeMounts:
 - name: db-data
 mountPath: /var/lib/mysql
 args:
 - --character-set-server=utf8
 ---
 apiVersion: v1
 kind: Service
 metadata:
 name: mysql-cluster
 namespace: blog
 spec:
 selector:
 run: mysql
 ports:
 - name: mysql-port
 port: 3306
 protocol: TCP
 targetPort: 3306
 type: ClusterIP
 ---
 apiVersion: apps/v1
 kind: Deployment
 metadata:
 name: wp-dp
 namespace: blog
 spec:
 replicas: 2
 selector:
 matchLabels:
 run: wp
 template:
 metadata:
 name: wp-pod
 labels:
 run: wp
 spec:
 volumes:
 - name: wp-data
 nfs:
 path: /data/wp
 server: 172.16.1.31
 containers:
 - name: wp-container
 image: wordpress
 imagePullPolicy: IfNotPresent
 env:
 - name: WORDPRESS_DB_HOST
 value: "mysql-cluster"
 - name: WORDPRESS_DB_NAME
 value: "wp"
 - name: WORDPRESS_DB_USER
 value: "wp_user"
 - name: WORDPRESS_DB_PASSWORD
 value: "123"
 volumeMounts:
 - name: wp-data
 mountPath: /var/www/html
 ---
 apiVersion: v1
 kind: Service
 metadata:
 name: wp-cluster
 namespace: blog
 spec:
 selector:
 run: wp
 ports:
 - name: wp-port
 port: 80
 protocol: TCP
 targetPort: 80
 type: ClusterIP
 ---
 apiVersion: networking.k8s.io/v1
 kind: Ingress
 metadata:
 name: wp-ingress
 namespace: blog
 spec:
 rules:
 - host: blog.xxx.com
 http:
 paths:
 - path: /
 pathType: ImplementationSpecific
 backend:
 service:
 name: wp-cluster
 port:
 number: 80
应用资源清单
| 1 | # 应用资源清单 | 
资源检查
| 1 | # 检查pod启动状态 | 
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 奥利奥の麦旋风!




