构建Nginx资源
root@deploy:/dockerfile/project/Nginx# cat Nginx.conf
user Nginx;
worker_processes auto;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/Nginx.pid;
#daemon off;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
client_max_body_size 10M;
client_body_buffer_size 16k;
gzip on;
server {
listen 80;
server_name blogs.magedu.net;
location / {
root html/wordpress;
index index.PHP index.html index.htm;
}
location ~ \.PHP$ {
root html/wordpress;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.PHP;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
创建Nginx运行脚本
root@deploy:/dockerfile/project/Nginx# cat run_Nginx.sh
#!/bin/bash
/usr/local/Nginx/sbin/Nginx
tail -f /usr/local/Nginx/logs/access.log /usr/local/Nginx/logs/error.log
创建Nginx业务镜像Dockerfile
root@deploy:/dockerfile/project/Nginx# cat Dockerfile
FROM harbor.cncf.net/web/Nginx:1.20.2
ADD Nginx.conf /usr/local/Nginx/conf/Nginx.conf
ADD run_Nginx.sh /usr/local/Nginx/sbin/run_Nginx.sh
RUN mkdir /usr/local/Nginx/html/wordpress
RUN chown Nginx.Nginx /usr/local/Nginx/html/wordpress/ -R
EXPOSE 80 443
CMD ["/usr/local/Nginx/sbin/run_Nginx.sh"]
创建构建脚本
root@deploy:/dockerfile/project/Nginx# cat build-command.sh
#!/bin/bash
TAG=$1
docker build -t harbor.cncf.net/project/wordpress-Nginx:${TAG} .
docker push harbor.cncf.net/project/wordpress-Nginx:${TAG}
构建PHP镜像
创建Dockerfile
root@deploy:/dockerfile/project/PHP# cat Dockerfile
FROM harbor.cncf.net/os/centos:7.9
RUN useradd Nginx
RUN yum install -y https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm && yum install PHP56-PHP-fpm PHP56-PHP-MysqL -y
ADD www.conf /opt/remi/PHP56/root/etc/PHP-fpm.d/www.conf
ADD run_PHP.sh /usr/local/bin/run_PHP.sh
EXPOSE 9000
CMD ["/usr/local/bin/run_PHP.sh"]
创建PHP-fpm容器运行脚本
root@deploy:/dockerfile/project/PHP# cat run_PHP.sh
#!/bin/bash
#echo "nameserver 10.20.254.254" > /etc/resolv.conf
/opt/remi/PHP56/root/usr/sbin/PHP-fpm
#/opt/remi/PHP56/root/usr/sbin/PHP-fpm --nodaemonize
tail -f /etc/hosts
root@deploy:/dockerfile/project/PHP# grep -Ev "^;|^$" www.conf
[www]
user = Nginx
group = Nginx
listen = 0.0.0.0:9000
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
slowlog = /opt/remi/PHP56/root/var/log/PHP-fpm/www-slow.log
PHP_admin_value[error_log] = /opt/remi/PHP56/root/var/log/PHP-fpm/www-error.log
PHP_admin_flag[log_errors] = on
PHP_value[session.save_handler] = files
PHP_value[session.save_path] = /opt/remi/PHP56/root/var/lib/PHP/session
PHP_value[soap.wsdl_cache_dir] = /opt/remi/PHP56/root/var/lib/PHP/wsdlcache
创建镜像构建脚本
root@deploy:/dockerfile/project/PHP# cat build-command.sh
#!/bin/bash
TAG=$1
docker build -t harbor.cncf.net/project/wordpress-PHP-5.6:${TAG} .
docker push harbor.cncf.net/project/wordpress-PHP-5.6:${TAG}
创建wordpress资源
准备nfs共享目录
root@harbor:/data/k8sdata# mkdir /data/k8sdata/wordpress
root@harbor:/data/k8sdata/wordpress# cat /etc/exports
/data/volumes2 *(rw,sync,no_root_squash)
root@harbor:/data/k8sdata/wordpress# exportfs -r
root@harbor:/data/k8sdata/wordpress# wget https://cn.wordpress.org/wordpress-5.0.16-zh_CN.tar.gz
root@harbor:/data/k8sdata/wordpress# tar xf wordpress-5.0.16-zh_CN.tar.gz
root@harbor:/data/k8sdata/wordpress# mv wordpress/* .
root@harbor:/data/k8sdata/wordpress# rm -fr wordpress
root@harbor:/data/k8sdata/wordpress# rm -f wordpress-5.0.16-zh_CN.tar.gz
获取Nginx用户uid和gid并给与nfs站点目录相应权限
k8s节点查看用户属主属组对应uid和gid号
root@deploy:/dockerfile/project/PHP# kubectl exec -it wordpress-app-deployment-78cfdc88f7-psvc4 -c wordpress-app-PHP -- id Nginx
uid=1000(Nginx) gid=1000(Nginx) groups=1000(Nginx)
root@deploy:/dockerfile/project/PHP# kubectl exec -it wordpress-app-deployment-78cfdc88f7-psvc4 -c wordpress-app-Nginx -- id Nginx
uid=1000(Nginx) gid=1000(Nginx) groups=1000(Nginx)
nfs-server设置查看NFS共享目录赋予wordpress容器用户和组权限
root@harbor:/data/k8sdata# chown 1000.1000 -R wordpress
创建namespace命名空间
root@deploy:/dockerfile/project/wordpress# kubectl create ns wordpress
namespace/wordpress created
root@deploy:/dockerfile/project# cat wordpress/wordpress.yaml
kind: Deployment
#apiVersion: extensions/v1beta1
apiVersion: apps/v1
Metadata:
labels:
app: wordpress-app
name: wordpress-app-deployment
namespace: wordpress
spec:
replicas: 1
selector:
matchLabels:
app: wordpress-app
template:
Metadata:
labels:
app: wordpress-app
spec:
containers:
- name: wordpress-app-Nginx
image: harbor.cncf.net/project/wordpress-Nginx:1.0
imagePullPolicy: Always
ports:
- containerPort: 80
protocol: TCP
name: http
- containerPort: 443
protocol: TCP
name: https
volumeMounts:
- name: wordpress
mountPath: /usr/local/Nginx/html/wordpress
readOnly: false
- name: wordpress-app-PHP
image: harbor.cncf.net/project/wordpress-PHP-5.6:1.0
imagePullPolicy: Always
ports:
- containerPort: 9000
protocol: TCP
name: http
volumeMounts:
- name: wordpress
mountPath: /usr/local/Nginx/html/wordpress
readOnly: false
volumes:
- name: wordpress
nfs:
server: 192.168.100.15
path: /data/k8sdata/wordpress
---
kind: Service
apiVersion: v1
Metadata:
labels:
app: wordpress-app
name: wordpress-app-spec
namespace: wordpress
spec:
type: NodePort
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
nodePort: 30031
- name: https
port: 443
protocol: TCP
targetPort: 443
nodePort: 30033
selector:
app: wordpress-app
查看资源创建
root@deploy:/dockerfile/project# kubectl get pods
root@deploy:/dockerfile/project# kubectl get svc
数据库MysqL主库全名称DNS地址:MysqL-0.MysqL.MysqL-test.svc.cluster.local,pod名称.service名称.名称空间.svc.集群名称
root@deploy:/dockerfile/project/wordpress# kubectl exec -it wordpress-app-deployment-78cfdc88f7-psvc4 -c wordpress-app-Nginx -- bash -c "ping MysqL-0.MysqL.MysqL-test.svc.cluster.local"
PING MysqL-0.MysqL.MysqL-test.svc.cluster.local (10.200.104.8) 56(84) bytes of data.
64 bytes from MysqL-0.MysqL.MysqL-test.svc.cluster.local (10.200.104.8): icmp_seq=1 ttl=62 time=0.236 ms
64 bytes from MysqL-0.MysqL.MysqL-test.svc.cluster.local (10.200.104.8): icmp_seq=2 ttl=62 time=0.527 ms
64 bytes from MysqL-0.MysqL.MysqL-test.svc.cluster.local (10.200.104.8): icmp_seq=3 ttl=62 time=0.705 ms
^C
--- MysqL-0.MysqL.MysqL-test.svc.cluster.local ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2010ms
rtt min/avg/max/mdev = 0.236/0.489/0.705/0.193 ms
root@deploy:~# kubectl exec -it -n MysqL-test MysqL-0 -c MysqL -- bash
root@MysqL-0:/# MysqL -u root -p123456 -P3360
MysqL> grant all on wordpress.* to "wordpress"@"%" identified by 'wordpress123456';
MysqL> create database wordpress;
客户端访问wordpress
由于MysqL端口是非默认3306,所以需要修改wordpress数据库连接PHP代码文件
输入密码 wordpress123456
输入数据库主机为k8s 创建的MysqL主库全名称:端口号MysqL-0.MysqL.MysqL-test.svc.cluster.local:3360
登录账户
创建完成
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。