K8S部署WordPress-v0.1
前言:
注意:本文档的所有操作请先在测环境进行实践,请不要直接在真实的服务器中操作!
如有疑问或建议,均可联系本人。
版权声明:
本文档以开源的形式发布,所有条款如下:
- 无担保:作者不保证文档内容的准确无误,亦不承担由于使用此文档所导致的任何后果;
- 自由使用:任何人可以出于任何目的而自由地 阅读/链接/打印/转载/引用/再创作 此文档,无需任何附加条件;
若您 阅读/链接/打印/转载/引用/再创作 本文档,则说明接受以上2个条款。
版本:v0.1
相关资源:
链接:https://pan.baidu.com/s/17r3apl34jg-jeI2q1LBuAQ?pwd=pu72
提取码:pu72
导入资源
- 创建工作目录
[root@k8s181.westudy.com ~]# mkdir -p /westudy/resources
[root@k8s181.westudy.com ~]# cd /westudy/resources/
- 导入镜像资源
[root@k8s181.westudy.com resources]# ls
mysql:8.0.32-oracle.tar.gz wordpress.tar.gz
[root@k8s181.westudy.com resources]#
[root@k8s181.westudy.com resources]# docker load -i mysql\:8.0.32-oracle.tar.gz
[root@k8s181.westudy.com resources]# docker load -i wordpress.tar.gz
# 镜像打包
[root@k8s181.westudy.com resources]# docker save harbor188.westudy.com/db/mysql:8.0.32-oracle -o mysql:8.0.32-oracle.tar.gz
[root@k8s181.westudy.com resources]# docker save harbor188.westudy.com/web/wordpress:latest -o wordpress.tar.gz
- 上传镜像资源到harbor仓库
# 1.要先在harbor仓库中新建项目
# 2 如果项目与如下的不一致,要使用docker tag先进行修改,再docker push
[root@k8s181.westudy.com resources]# docker push harbor188.westudy.com/db/mysql:8.0.32-oracle
[root@k8s181.westudy.com resources]# docker push harbor188.westudy.com/web/wordpress
编写资源
- 创建工作目录
[root@k8s181.westudy.com arch01]# mkdir -p /manifests/project
[root@k8s181.westudy.com arch01]# cd /manifests/project
- deploy资源
[root@k8s181.westudy.com arch01]# cat > 01-deploy-wp.yaml <<'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
spec:
replicas: 2
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
hostNetwork: true
containers:
- name: mysql
image: harbor188.westudy.com/db/mysql:8.0.32-oracle
ports:
- containerPort: 3306
env:
- name: MYSQL_ALLOW_EMPTY_PASSWORD
value: "true"
- name: MYSQL_DATABASE
value: wordpress
- name: MYSQL_USER
value: jason
- name: MYSQL_PASSWORD
value: westudy
- name: wordpress
image: harbor188.westudy.com/web/wordpress
ports:
- containerPort: 80
env:
- name: WORDPRESS_DB_HOST
value: "127.0.0.1"
- name: WORDPRESS_DB_USER
value: jason
- name: WORDPRESS_DB_PASSWORD
value: westudy
EOF
[root@k8s181.westudy.com arch01]#
- svc资源
[root@k8s181.westudy.com arch01]# cat > 02-svc-NodePort.yaml <<'EOF'
apiVersion: v1
kind: Service
metadata:
name: wordpress
spec:
selector:
app: wordpress
type: NodePort
ports:
- port: 80
targetPort: 80
protocol: TCP
nodePort: 30080
EOF
[root@k8s181.westudy.com arch01]#
执行并查看结果
[root@k8s181.westudy.com arch01]# kubectl apply -f 01-deploy-wp.yaml
[root@k8s181.westudy.com arch01]# kubectl apply -f 02-svc-NodePort.yaml
[root@k8s181.westudy.com arch01]# kubectl get pods -o wide
[root@k8s181.westudy.com arch01]# kubectl describe pod wordpress-7c4ddcf5-2548k
[root@k8s181.westudy.com arch01]# kubectl get svc
[root@k8s181.westudy.com arch01]# kubectl describe svc wordpress
页面访问成功
缺陷
- 数据库资源没有共享,当一个请求调度到另一个pod处理时,又要初始化;
见图
用另一个浏览器打开,发现又要初始化
- 数据没有做持久化存储,也就是说,当pod重启的时候,数据会丢失;
- 数据库与应用在同一个pod中,pod一挂,所有都挂了。
总结
- deploy资源中的nodeNetwork字段要配合svc资源的nodePort字段使用;
- 做到的应用的高可用,但是数据没有跟随一起高可用;
- 加深了deploy资源、svc资源的编写与使用。