Kubernetes进阶实验:wordpress部署

作者注:本文仅供参考,请谨慎阅读

k8s wordpress部署。

目的:使用实例理解k8s。

形式:使用文字描述,yaml文件给出参考地址。

deployment部署

功能:无pvc,一个 deployment,一个 service(使用节点端口访问形式),一个pod,2个容器:mysql和wordpress。(建议先下载好用到的镜像)
配置文件:

步骤1:先创建1个副本。
查看信息,得到端口(会映射出来的)。

1
2
3
4
5
6
kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
wordpress 1/1 1 1 12m

# kubectl get svc
wordpress-svc NodePort 10.96.85.224 <none> 80:32628/TCP 10m // !! 此处端口号为32628

结果:可使用节点IP+端口形式访问。初始化wordpress,输入站名myweb111、用户名、邮箱地址。因临时测试,可不记密码。

步骤2: 先不停止,再扩容2个副本。

1
kubectl scale deployment wordpress --replicas=2

由于有2台节点主机,此时调度新的副本到另一节点。使用该节点IP+上述端口(注:端口没变)。初始化wordpress同上,但站名为myweb222。使用IP+端口访问,不断刷新web,结果:页面在myweb111和myweb222跳转。原因:负载均衡,跳转到不同的pod,而2个pod完全独立,内容不同。这也验证了 deployment 是无状态的。
注:使用nodePort方式,只要使用集群的节点IP就行,不管pod被调度到哪个节点上。

分离

功能:mysql和wordpress分别作 deployment 和 service。mysql使用pvc存储。存储形式为nfs。创建要先创建yaml文件指定的nfs目录。
配置文件:

查看各种资源:

1
2
3
4
5
kubectl get pod
kubectl get svc
kubectl get pvc
kubectl get pv
kubectl get deploy

新建容器(退出即删除)查看mysql容器是否正常:

1
kubectl run -it --rm --image=mysql:5.7 --restart=Never mysql-client -- mysql -h wp-mysql-svc -ppassword

或直接指定pod:

1
kubectl exec -it wp-mysql-68bfb49fcb-sqqs2  -- mysql -h wp-mysql-svc -ppassword 

扩容:

1
kubectl scale deployment wp-wordpress --replicas=2

此时网页内容无变化(但实际访问了不同的pod)。

加secrect

问题

1
The Service "wordpress-svc" is invalid: spec.ports[0].nodePort: Invalid value: 3000: provided port is not in the valid range. The range of valid ports is 30000-32767

指定的nodePort地址不合法,应该是30000-32767

参考

Example: Deploying WordPress and MySQL with Persistent Volumes
k8s-hands-on