k8s系列文章目录
基于k8s构建WordPress可以快速且能实现资源的弹性伸缩,自动服务发现,自动故障监测。下面以一个master节点两个node节点的k8s节点实现WordPress。
一、安装mysql?
- 编写对应的名称空间配置清单
apiVersion: v1
kind: Namespace
metadata:
name: app
- 创建在同一名称空间下mysql的pod。
apiVersion: v1
kind: Pod
metadata:
name: mysql
namespace: app
labels:
app: mysql
spec:
containers:
- name: mysql
image: "mysql:latest"
ports:
- containerPort: 3306
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
value: logn
- name: MYSQL_DATABASE
value: wordpress
- name: MYSQL_USER
value: wpuser
- name: MYSQL_PASSWORD
value: wppasswd
mysql的pod无需暴露端口到宿主机 WordPress Pod可以通过pod网络直接访问mysql。
二、安装WordPress
为了降低入门的复杂度,故使用WordPress中的官方镜像并部署在pod中。
- 编写对应的pod配置清单
apiVersion: v1
kind: Pod
metadata:
name: "web"
namespace: app
labels:
app: "wordpress"
spec:
hostNetwork: true
containers:
- name: wordpress
image: "wordpress:latest"
ports:
- containerPort: 80
name: http
env:
- name: WORDPRESS_DB_HOST
value: 10.244.
- name: WORDPRESS_DB_USER
value: wpuser
- name: WORDPRESS_DB_PASSWORD
value: wppasswd
- name: WORDPRESS_DB_NAME
value: wordpress
- name: WORDPRESS_TABLE_PREFIX
value: wp_
配置文件中定义了hostNetwork 共享宿主机的网络名称空间 以便nginx调度器访问。并在WORDPRESS_DB_HOST中使用mysql的pod网络地址。可以使用kubectl get -n app mysql -o wide
获取
三、配置NGINX调取器
- yum安装配置NGINX
vim /etc/nginx/nginx.conf
stream{
upstream web {
server 10.0.2.1:80;
server 10.0.2.2:80;
}
server {
listen 80;
proxy_pass web;
}
}
#注释默认的web站点防止端口冲突
# server {
# listen 80 default_server;
# listen [::]:80 default_server;
# server_name _;
# root /usr/share/nginx/html;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# location / {
# }
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
访问NGINX的结果如下
总结
mysql和WordPress镜像的env参数可以在官方文档中查找到。
注意:在pod中无法访问不是本机的其他宿主机 因此mysql共用宿主机地址时无法通过宿主机地址访问。