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/