k8s wordpress部署。
目的:使用实例理解k8s。
形式:使用文字描述,yaml文件给出参考地址。
deployment部署
功能:无pvc,一个 deployment,一个 service(使用节点端口访问形式),一个pod,2个容器:mysql和wordpress。(建议先下载好用到的镜像)
配置文件:
步骤1:先创建1个副本。
查看信息,得到端口(会映射出来的)。
1 | kubectl get deployment |
结果:可使用节点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 | kubectl get pod |
新建容器(退出即删除)查看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