1.部署NFS-SERVER
[root@nfs-server k8s]# hostnamectl set-hostname NFS-Server [root@nfs-server k8s]# setenforce 0 [root@nfs-server k8s]# systemctl stop firewalld [root@nfs-server k8s]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config [root@nfs-server k8s]# yum -y install nfs-utils rpcbind [root@nfs-server k8s]# mkdir -p /data/k8s [root@nfs-server k8s]# chmod -R 755 /data/k8s/ [root@nfs-server k8s]# cat /etc/exports /data/k8s *(rw,sync,no_root_squash) [root@nfs-server k8s]# systemctl start rpcbind.service [root@nfs-server k8s]# systemctl enable rpcbind
2.部署StorageClass
2-1.部署NFS-Client
[root@master storageclass]# cat nfs-client.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
name: nfs-client-provisioner
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app: nfs-client-provisioner
template:
metadata:
labels:
app: nfs-client-provisioner
spec:
serviceAccountName: nfs-client-provisioner
containers:
- name: nfs-client-provisioner
image: quay.io/external_storage/nfs-client-provisioner:latest
volumeMounts:
- name: nfs-client-root
mountPath: /persistentvolumes
env:
- name: PROVISIONER_NAME
value: fuseim.pri/ifs
- name: NFS_SERVER
value: 192.168.1.239
- name: NFS_PATH
value: /data/k8s
volumes:
- name: nfs-client-root
nfs:
server: 192.168.1.239
path: /data/k8s
2-2.定义为storageclass
[root@master storageclass]# cat nfs-client-class.yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: course-nfs-storage provisioner: fuseim.pri/ifs
2-3.设置role规则
[root@master storageclass]# cat nfs-client-class.yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: course-nfs-storage provisioner: fuseim.pri/ifs [root@master storageclass]# cat nfs-client-sa.yaml apiVersion: v1 kind: ServiceAccount metadata: name: nfs-client-provisioner kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: nfs-client-provisioner-runner rules: apiGroups: [""] resources: ["persistentvolumes"] verbs: ["get", "list", "watch", "create", "delete"] apiGroups: [""] resources: ["persistentvolumeclaims"] verbs: ["get", "list", "watch", "update"] apiGroups: ["storage.k8s.io"] resources: ["storageclasses"] verbs: ["get", "list", "watch"] apiGroups: [""] resources: ["events"] verbs: ["list", "watch", "create", "update", "patch"] apiGroups: [""] resources: ["endpoints"] verbs: ["create", "delete", "get", "list", "watch", "patch", "update"] kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: run-nfs-client-provisioner subjects: kind: ServiceAccount name: nfs-client-provisioner namespace: default roleRef: kind: ClusterRole name: nfs-client-provisioner-runner apiGroup: rbac.authorization.k8s.io
2-4.检查pod是否正常
[root@master storageclass]# kubectl get pod NAME READY STATUS RESTARTS AGE …….. nfs-client-provisioner-57f77648dc-v5d7r 1/1 Running 8 12d
3.部署NGINX前端
[root@master configmap]# cat nginx-nfs.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: nfs-blog-2
spec:
serviceName: "nginx"
replicas: 1
selector:
matchLabels:
app: nfs-blog-2
template:
metadata:
labels:
app: nfs-blog-2
spec:
terminationGracePeriodSeconds: 10
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 443
name: web
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
- name: conf
mountPath: /etc/nginx/conf.d/wordpress.conf
subPath: wordpress.conf
volumes:
- name: www
persistentVolumeClaim:
claimName: www-nfs-blog-0
- name: conf
configMap:
name: nginx-configmap
items:
- key: blog_conf
path: wordpress.conf
apiVersion: v1
kind: Service
metadata:
name: blog2
labels:
name: blog2
spec:
ports:
port: 443
targetPort: 443
nodePort: 30004
type: NodePort
selector:
app: nfs-blog-2
3-1. 创建configmap
[root@master configmap]# cat nginx-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-configmap
data:
blog_conf: |-
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /usr/share/nginx/html/cert/blog.pem;
ssl_certificate_key /usr/share/nginx/html/cert/blog.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
root /usr/share/nginx/html;
if (!-e $request_filename){
rewrite ^/(.*) /index.php last;
}
location / { index index.php index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~* \.php$ { fastcgi_index index.php; fastcgi_pass php:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; } }
3-2 创建PHP服务
[root@master lnmp]# cat php-nfs.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: nfs-php
spec:
serviceName: "php"
replicas: 1
selector:
matchLabels:
app: nfs-php
template:
metadata:
labels:
app: nfs-php
spec:
terminationGracePeriodSeconds: 10
containers:
- name: php
image: 192.168.1.154/library/php7-fpm:latest
ports:
- containerPort: 9000
name: php
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumes:
- name: www
persistentVolumeClaim:
claimName: www-nfs-blog-0
apiVersion: v1
kind: Service
metadata:
name: php
labels:
name: php
spec:
ports:
port: 9000
targetPort: 9000
selector:
app: nfs-php
4.部署MYSQL
[root@master lnmp]# cat mysql-nfs.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: nfs-db
spec:
serviceName: "mysql"
replicas: 1
selector:
matchLabels:
app: nfs-db
template:
metadata:
labels:
app: nfs-db
spec:
terminationGracePeriodSeconds: 10
containers:
- name: mysql
image: mysql:5.6
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-pass
key: password
ports:
- containerPort: 3306
name: db
volumeMounts:
- name: mysql
mountPath: /var/lib/mysql
volumeClaimTemplates:
metadata:
name: mysql
annotations:
volume.beta.kubernetes.io/storage-class: course-nfs-storage
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 2Gi
apiVersion: v1
kind: Service
metadata:
name: db
labels:
name: db
spec:
ports:
port: 33306
targetPort: 3306
nodePort: 30003
type: NodePort
selector:
app: nfs-db
5.设置secret选项
[root@master mysqlsecret]# cat kustomization.yaml secretGenerator: name: mysql-pass literals: password=XXXXXXXXX resources: mysql-nfs.yaml
6.创建前端服务
[root@master configmap]# ls nginx-configmap.yaml nginx-nfs.yaml php-nfs.yaml [root@master configmap]# kubectl create -f ./
7.创建MYSQL服务
[root@master mysqlsecret]# ls kustomization.yaml mysql-nfs.yaml [root@master mysqlsecret]# kubectl create -k ./
8.上传前端代码到nfs服务器
[root@nfs-server k8s]# ls default-mysql-nfs-db-0-pvc-d341c981-7c5a-49d4-b544-d61d8d829fd2 # MYSQL的存储路径 default-www-nfs-blog-0-pvc-dad5db2d-c726-4311-ab45-0585f5ea4908 # 前端的存放路径 [root@nfs-server default-www-nfs-blog-0-pvc-dad5db2d-c726-4311-ab45-0585f5ea4908]# ls cert readme.html wp-admin wp-config-sample.php wp-links-opml.php wp-settings.php index.php readme.txt wp-blog-header.php wp-content wp-load.php wp-signup.php jwplayer.js wordpress.conf wp-comments-post.php wp-cron.php wp-login.php wp-trackback.php license.txt wp-activate.php wp-config.php wp-includes wp-mail.php xmlrpc.php [root@nfs-server default-www-nfs-blog-0-pvc-dad5db2d-c726-4311-ab45-0585f5ea4908]# cat wp-config.php …….. // ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define( 'DB_NAME', 'wordpress'); /** MySQL database username */ define( 'DB_USER', 'wp'); /** MySQL database password */ define( 'DB_PASSWORD', 'XXXXXXXXX'); /** MySQL hostname */ define( 'DB_HOST', 'db.default.svc.cluster.local:33306'); #此处是数据库的Services地址 ……
9.设置数据库
[root@master mysqlsecret]# kubectl exec -it nfs-db-0 /bin/bash root@nfs-db-0:/# mysql -u root -p mysql> create database wordpress; mysql> grant all privileges on wordpress.* to "wp"@"%" Identified by "XXXXXXXXX"; mysql> flush privilegs; 10-1.导入准备好的备份数据库 [root@docker temp]# mysql -h 192.168.1.150 -P 30003 -u wp -p wordpress < wordpress_20210126.sql #我这边设置了DB可以所有网段登陆,通过mysql-cilent登陆导入数据库库即可
10.检查POD状态
[root@master database]# kubectl get pod NAME READY STATUS RESTARTS AGE hpa-nginx-deploy-64b889f7dc-krpvm 1/1 Running 8 39d jenkins-demo-5469c947c8-p8dnm 0/1 ImagePullBackOff 0 7d nfs-blog-0 1/1 Running 10 12d nfs-blog-2-0 1/1 Running 4 10d nfs-client-provisioner-57f77648dc-v5d7r 1/1 Running 8 12d nfs-client-provisioner2-7996f87b55-9swdr 1/1 Running 1 5d3h nfs-db-0 1/1 Running 6 12d nfs-php-0 1/1 Running 3 10d
11.登陆页面效果

原创文章,作者:admin,如若转载,请注明出处:https://www.starz.top/2021/01/26/k8s%e9%83%a8%e7%bd%b2wordpress%e6%95%b4%e5%90%88%e5%a4%9a%e4%b8%aak8s%e6%8a%80%e6%9c%af%e7%82%b9/
