k8s部署wordpress记录

1.部署说明

wordpress和mysql分开部署,各部署一个svc。

wordpress svc通过kube-dns组件服务访问mysql svc

配置NFS(实验环境测试用nfs方便)

配置PV,PVC存储wordpress和mysql数据

需要用到的变量:

mysql

MYSQL_ROOT_PASSWORD

root的密码

wordpress

WORDPRESS_DB_HOST

后端mysql主机

WORDPRESS_DB_PASSWORD

连接wordpress 数据的密码

WORDPRESS_DB_USER

连接wordpress的用户名,如果不指定,默认使用root

2.配置secret

配置mysql root密码

[[email protected] wp]# echo -n abc123! |base64

YWJjMTIzIQ==

[[email protected] wp]#

[[email protected] wp]# cat secret1.yml

apiVersion: v1

kind: Secret

metadata:

name: mysecret

data:

password: YWJjMTIzIQ==

[[email protected] wp]# kubectl apply -f secret1.yml

secret "mysecret" configured

[[email protected] wp]#

wordpress相关,HOST使用mysql svc的名字,连接数据库用户就用root,密码就是上面配置的那个密码,所以无需额外再配置secret。

3.配置PV和PVC

mysql-pv

[[email protected] wp]# cat mysql-pv.yml

apiVersion: v1

kind: PersistentVolume

metadata:

name: mysql-pv

spec:

capacity:

storage: 5Gi

accessModes:

- ReadWriteMany

persistentVolumeReclaimPolicy: Retain

storageClassName: mysql-pv-nfs

nfs:

path: /data/k8s/mysql-pv

server: 192.168.211.135

[[email protected] wp]#

[[email protected] wp]# kubectl apply -f mysql-pv.yml

persistentvolume "mysql-pv" created

mysql-pvc

[[email protected] wp]# cat mysql-pvc.yml

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: mysql-pvc

spec:

accessModes:

- ReadWriteMany

resources:

requests:

storage: 5Gi

storageClassName: mysql-pv-nfs

[[email protected] wp]#

[[email protected] wp]# kubectl apply -f mysql-pvc.yml

persistentvolumeclaim "mysql-pvc" created

wordpess-pv

[[email protected] wp]# cat wordpress-pvc.yml

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: wordpress-pvc

spec:

accessModes:

- ReadWriteMany

resources:

requests:

storage: 5Gi

storageClassName: wordpress-pv-nfs

[[email protected] wp]# kubectl apply -f wordpress-pv.yml

persistentvolume "wordpress-pv" created

[[email protected] wp]#

wordpress-pvc

[[email protected] wp]# kubectl apply -f wordpress-pv.yml

persistentvolume "wordpress-pv" created

[[email protected] wp]# cat wordpress-pvc.yml

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: wordpress-pvc

spec:

accessModes:

- ReadWriteMany

resources:

requests:

storage: 5Gi

storageClassName: wordpress-pv-nfs

[[email protected] wp]# kubectl apply -f wordpress-pvc.yml

persistentvolumeclaim "wordpress-pvc" created

[[email protected] wp]#

[[email protected] wp]# kubectl get pv

NAME           CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS    CLAIM                   STORAGECLASS       REASON    AGE

mysql-pv       5Gi        RWX            Retain           Bound     default/mysql-pvc       mysql-pv-nfs                 17m

wordpress-pv   5Gi        RWX            Retain           Bound     default/wordpress-pvc   wordpress-pv-nfs             1m

[[email protected] wp]# kubectl get pvc

NAME            STATUS    VOLUME         CAPACITY   ACCESS MODES   STORAGECLASS       AGE

mysql-pvc       Bound     mysql-pv       5Gi        RWX            mysql-pv-nfs       10m

wordpress-pvc   Bound     wordpress-pv   5Gi        RWX            wordpress-pv-nfs   46s

[[email protected] wp]#

4.配置mysql

[[email protected] wp]# cat mysql-svc.yml

apiVersion: v1

kind: Service

metadata:

name: mysql

spec:

ports:

- port: 3306

selector:

app: mysql

---

apiVersion: apps/v1beta1

kind: Deployment

metadata:

name: mysql

spec:

selector:

matchLabels:

app: mysql

template:

metadata:

labels:

app: mysql

spec:

containers:

- image: mysql:5.7

name: mysql

env:

- name: MYSQL_ROOT_PASSWORD

valueFrom:

secretKeyRef:

name: mysecret

key: password

ports:

- containerPort: 3306

name: mysql

volumeMounts:

- name: mysql-data

mountPath: /var/lib/mysql

volumes:

- name: mysql-data

persistentVolumeClaim:

claimName: mysql-pvc

[[email protected] wp]# kubectl apply -f mysql-svc.yml

service "mysql" created

deployment.apps "mysql" created

5.配置wordpress

[[email protected] wp]# cat wordpress.yml

apiVersion: v1

kind: Service

metadata:

name: wordpress

spec:

type: NodePort

ports:

- protocol: TCP

nodePort: 30000

port: 8080

targetPort: 80

selector:

run: wordpress-pod

---

apiVersion: apps/v1beta1

kind: Deployment

metadata:

name: wordpress-pod

spec:

replicas: 1

template:

metadata:

labels:

run: wordpress-pod

spec:

containers:

- image: docker.io/wordpress

name: wordpress1

env:

- name: WORDPRESS_DB_HOST

value: mysql

- name: WORDPRESS_DB_PASSWORD

valueFrom:

secretKeyRef:

name: mysecret

key: password

ports:

- containerPort: 80

name: wordpress1

volumeMounts:

- name: wordpress-data

mountPath: /var/www/html

volumes:

- name: wordpress-data

persistentVolumeClaim:

claimName: wordpress-pvc

[[email protected] wp]#

[[email protected] wp]# kubectl apply -f wordpress.yml

service "wordpress" created

deployment.apps "wordpress-pod" created

6.检查服务和端口

[[email protected] wp]# kubectl get svc

NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE

kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP          55d

mysql        ClusterIP   10.99.233.22   <none>        3306/TCP         9d

wordpress    NodePort    10.109.38.87   <none>        8080:30000/TCP   9d

[[email protected] wp]#

[[email protected] wp]# kubectl get pod -o wide

NAME                                READY     STATUS    RESTARTS   AGE       IP                NODE

mysql-5bbbf49b4f-6ktxg              1/1       Running   1          9d        10.244.1.152      kubernetes2

wordpress-pod-7dd7659959-kx9wg      1/1       Running   1          9d        10.244.1.150      kubernetes2

wordpress 和mysql都起来了。

请注意,wordpress启用了NodePort,如果没有出问题,已经可以通过node的IP和这个30000端口访问web

如果不能访问,参考如下简单思路

检查service pod起来了吗?

在k8s部署节点,telnet  service 的ip加端口,pod的ip加端口,看看能正常连接进去吗?

部署完成。

原文地址:http://blog.51cto.com/goome/2144667

时间: 2024-11-07 03:48:57

k8s部署wordpress记录的相关文章

(转)Kubernetes部署WordPress+MySQL

转:http://www.showerlee.com/archives/2336 这部分我们结合之前的k8s知识点给大家展示如何使用kubernetes部署wordpress+MySQL, 并利用NFS去保存我们容器的源代码以及DB数据. 安装环境 System: CentOS 7.4 Kubernetes: Kubernetes1.9 Docker: 17.03.2-ce kube-master 10.110.16.10 kube-node-1 10.110.16.11 一. NFS配置: 1

在CentOS 6.7部署wordpress博客系统Discuz论坛系统

在CentOS 6.7部署wordpress博客系统Discuz论坛系统 服务器操作系统:CentOS6.7 博客部署服务器:Httpd-2.2 后台语言:PHP 数据库:MySql 前端框架:WordPress 1.首先安装需要的软件 yum -y install mysql-server httpd phpphp-mysql 2.启动mysql以及httpd服务 service mysqld start service httpd start 3.创建虚拟主机 4.测试 PHP 和Httpd

Linux下部署docker记录(1)-Volume使用

之前部署了Linux下部署docker记录(0)-基础环境安装,接下来看看Docker Volume的使用. Docker volume使用1)一个数据卷是一个特别指定的目录,该目录利用容器的UFS文件系统可以为容器提供一些稳定的特性或者数据共享.数据卷可以在多个容器之间共享.2)创建数据卷,只要在docker run命令后面跟上-v参数即可创建一个数据卷,当然你也可以跟多个-v参数来创建多个数据卷,当创建好带有数据卷的容器后,你就可以在其他容器中通过--volumes-froms参数来挂载该数

centos7.3搭建LNMP并部署wordpress站点

centos7.3搭建LNMP并部署wordpress站点 一.拓扑图 二.准备工作: 1.三台独立主机(虚拟机) nginx:10.0.0.11 php-fpm:10.0.0.2 mariadb:10.0.0.13 准备好yum环境(推荐阿里云yum源,请百度搜索) 2.相关的软件包准备 10.0.0.11(nginx) yum install nginx -y 10.0.0.2(php-fpm) yum install php-fpm php-mysql  php-mbstring php-

openstack手动部署简单记录

1,关于网络规划部分,之前写的都好好的了,浏览器TM的崩溃了,我写几天的笔记 记录全给我丢了,我TM的多心疼啊! 大致说了关于openstack手动安装关于网络规划的问题 第一种legacy networking architecture  design :controller(跑单网卡management) + N computerNodes(跑2块网management+虚机实例隧道口卡) 第二种 openstack networking (neutron) architecture des

lnmp下实现部署wordpress和phpmyadmin,并实现https和URL重定向

项目要求:1.lnmp实现多个虚拟主机,分别部署wordpress和phpmyadmin应用,并设置phpmyadmin仅能通过https协议访问:2.配置即使客户端通过http协议访问phpmyadmin站点,最终也可以让用户使用https重新请求访问:3.将图片保存至一台单独的服务器,上传的图片也放置于该图片服务器上: 一.环境:lnmp=Linux+Nginx+MariaDB+PHP在Linux中配置所需必要的环境:1.在CentOS系和RHEL系列的发行版操作系统中,本地光盘并没有提供N

k8s部署ingress及http、https-实战篇

一.简介ingress:ingress-nginx #用于实现反代https://kubernetes.github.io/ingress-nginx/deploy/#generic-deployment kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yamlhttps://kubernetes.github.io/ingress-nginx/

Centos7.4下用Docker-Compose部署WordPress

原文:Centos7.4下用Docker-Compose部署WordPress 前言 最近在学习Docker相关知识,通过阅读第一本Docker书后,正想着手实战用一下这个技术,但又不太敢直接在项目环境下动手.考虑足足三秒钟之后决定买个阿里云ECS搭建一个属于自己的基于Docker的WordPress博客Daniel Fu's hut传送门. 本博客搭建环境(阿里云ECS的购买与基本的安全组配置等工作在文中省略,各位看官可自行研究): 阿里云ECS Centos 7.4 部署工具: Docker

k8s部署etcd集群

1.k8s部署高可用etcd集群时遇到了一些麻烦,这个是自己其中一个etcd的配置文件 例如: [Unit] Description=Etcd Server After=network.target After=network-online.target Wants=network-online.target Documentation=https://github.com/coreos [Service] User=k8s Type=notify WorkingDirectory=/var/l