1 编写资源清单
sh
[root@k8s-node01 /data/manifests/rc]# cat wordpress-nfs.yaml
apiVersion: v1
kind: Namespace
metadata:
name: wp-blog
spec: {}
status: {}
---
apiVersion: v1
kind: ReplicationController
metadata:
name: wp-mysql
namespace: wp-blog
labels:
app: mysql
spec:
replicas: 1
selector:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
volumes:
- name: wp-mysql
nfs:
server: 11.0.1.8
path: /data/nfs-server/wp-mysql
containers:
- name: mysql
image: mysql:8.0
imagePullPolicy: IfNotPresent
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
- name: MYSQL_USER
value: "wpuser"
- name: MYSQL_PASSWORD
value: "wppass"
- name: MYSQL_DATABASE
value: "wordpress"
volumeMounts:
- mountPath: "/var/lib/mysql"
name: wp-mysql
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: mysql-svc
namespace: wp-blog
spec:
#clusterIP: 10.99.100.100
ports:
- name: 3306-3306
port: 3306
protocol: TCP
targetPort: 3306
selector:
app: mysql
type: ClusterIP
---
apiVersion: v1
kind: ReplicationController
metadata:
name: wordpress
namespace: wp-blog
labels:
app: wordpress
spec:
replicas: 3
selector:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
volumes:
- name: wp-data
nfs:
server: 11.0.1.8
path: /data/nfs-server/wp-data
containers:
- name: wordpress
image: wordpress:latest
imagePullPolicy: IfNotPresent
env:
- name: WORDPRESS_DB_HOST
#value: 10.99.100.100
value: mysql-svc
- name: WORDPRESS_DB_NAME
value: wordpress
- name: WORDPRESS_DB_USER
value: wpuser
- name: WORDPRESS_DB_PASSWORD
value: wppass
volumeMounts:
- name: wp-data
mountPath: /var/www/html
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: wp-svc
namespace: wp-blog
spec:
ports:
- name: 80-80
port: 80
targetPort: 80
nodePort: 30090
selector:
app: wordpress
type: NodePort
2 创建资源并上传数据
2.1 创建资源并验证
sh
[root@k8s-node01 /data/manifests/rc]# kubectl apply -f wordpress-nfs.yaml
namespace/wp-blog created
replicationcontroller/wp-mysql created
service/mysql-svc created
replicationcontroller/wordpress created
service/wp-svc created
[root@k8s-node01 /data/manifests/rc]# kubectl -n wp-blog get pods,svc -owide --show-labels
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES LABELS
pod/wordpress-hkd64 1/1 Running 0 64s 10.244.1.170 k8s-node01.dinginx.org <none> <none> app=wordpress
pod/wordpress-wmdl5 1/1 Running 0 64s 10.244.2.230 k8s-node02.dinginx.org <none> <none> app=wordpress
pod/wordpress-x4x5n 1/1 Running 0 64s 10.244.2.229 k8s-node02.dinginx.org <none> <none> app=wordpress
pod/wp-mysql-l67t5 1/1 Running 0 64s 10.244.2.228 k8s-node02.dinginx.org <none> <none> app=mysql
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR LABELS
service/mysql-svc ClusterIP 10.103.169.68 <none> 3306/TCP 64s app=mysql <none>
service/wp-svc NodePort 10.108.68.58 <none> 80:30090/TCP 64s app=wordpress <none>
2.2 访问测试

2.3 上传数据

3 验证删除Pod数据不丢失
3.1 删除所有资源并再次创建
sh
#删除所有资源
[root@k8s-node01 /data/manifests/rc]# kubectl delete -f .
namespace "wp-blog" deleted
replicationcontroller "wp-mysql" deleted from wp-blog namespace
service "mysql-svc" deleted from wp-blog namespace
replicationcontroller "wordpress" deleted from wp-blog namespace
service "wp-svc" deleted from wp-blog namespace
[root@k8s-node01 /data/manifests/rc]#
#再次创建验证数据
[root@k8s-node01 /data/manifests/rc]# kubectl apply -f .
namespace/wp-blog created
replicationcontroller/wp-mysql created
service/mysql-svc created
replicationcontroller/wordpress created
service/wp-svc created
#查看资源及对外访问端口
[root@k8s-node01 /data/manifests/rc]# kubectl -n wp-blog get pods,svc -owide --show-labels
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES LABELS
pod/wordpress-7gdg9 1/1 Running 0 3s 10.244.2.217 k8s-node02.dinginx.org <none> <none> app=wordpress
pod/wordpress-tnp44 1/1 Running 0 3s 10.244.2.218 k8s-node02.dinginx.org <none> <none> app=wordpress
pod/wordpress-wkzv4 1/1 Running 0 3s 10.244.1.166 k8s-node01.dinginx.org <none> <none> app=wordpress
pod/wp-mysql-7dkrw 1/1 Running 0 3s 10.244.2.216 k8s-node02.dinginx.org <none> <none> app=mysql
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR LABELS
service/mysql-svc ClusterIP 10.99.100.100 <none> 3306/TCP 3s app=mysql <none>
service/wp-svc NodePort 10.99.135.202 <none> 80:30090/TCP 3s app=wordpress <none>
3.2 验证数据
