51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

k8s 实现wordpress集群 部署

第一部分:

准备 镜像:

mysql: docker部署mysql并且初始化数据库

WordPress:使用Dockerfile构建WordPress实战案例解法一

第2部分: 给数据增加 servic 管理

拆分:

思路: 先 单独部署 mysql :

# 指定apiserver版本号
apiVersion: v1
# 指定资源的类型
kind: Pod
# 定义源数据信息
metadata:
  # Pod的名称
  name: mysqlpod
  labels:
    apps: mysql57
# 用户定义资源期望运行的状态
spec:
  hostNetwork: true
  # 指定在worker232的工作节点运行
  nodeName: worker232
  # 在Pod内运行的容器定义
  containers:
    # 容器的名称
  - name: mysqlhuaxiang
    # 镜像名称
    image: harbor.baimei.com/huaxiang-mysql/init_mysql57:v0.2
    ports:
    - containerPort: 3306
      hostIP: 10.0.0.232
      hostPort: 3306
      name: db
    # 向容器传递环境变量
    env:
      # 变量的名称
    - name: MYSQL_ALLOW_EMPTY_PASSWORD
      # 指定变量的值
      value: "yes"
    - name: MYSQL_DATABASE
      value: "wordpress"
    - name: MYSQL_USER
      value: "baimei"
    - name: MYSQL_PASSWORD
      value: "123456"

这样操作, 数据库的 ip 会 被外网被暴露。

如何实现只实现内网访问呢?

我们可以 用service控制器来 进行管理

01-deploy-db.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: db
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql57
  template:
    metadata:
      labels:
        app: mysql57
    spec:
      containers:
      - name: mysql
        image: harbor.baimei.com/huaxiang-mysql/init_mysql57:v0.2
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"
        - name: MYSQL_DATABASE
          value: wordpress
        - name: MYSQL_USER
          value: wordpress
        - name: MYSQL_PASSWORD
          value: wordpress

这个可以单独的部署的:

接下来我们 增加一个 service 来管理 DB ,这样做的目的,是 控制数据库的ip 不变。 可以实现内网访问。

02-svc-db.yaml

apiVersion: v1
kind: Service
metadata:
  name: db
spec:
  clusterIP: 10.200.100.100
  type: ClusterIP
  selector:
    app: mysql57
  ports:
  - port: 3306
    targetPort: 3306

直接加载 svc

kubectl apply -f 02-svc-db.yaml 

检查 svc 是否管理 了db

kubectl describe -f 02-svc-db.yaml

kubectl describe svc db

kubectl get pods --show-labels

第3阶段: 给数据 加入 nfs 存储卷

apiVersion: apps/v1
kind: Deployment
metadata:
  name: db
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql57
  template:
    metadata:
      labels:
        app: mysql57
    spec:
      volumes:
      - name: data
        nfs:
          server: master231
          path: /baimei/data/kubernetes/mysql57
      containers:
      - name: mysql
        image: harbor.baimei.com/baimei-db/mysql:5.7
        volumeMounts:
        - name: data
          mountPath: /var/lib/mysql/
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: baimei
        - name: MYSQL_DATABASE
          value: wordpress
        - name: MYSQL_USER
          value: wordpress
        - name: MYSQL_PASSWORD
          value: wordpress

自己运行有问题

kubectl apply -f 01-deploy-db.yaml

问题解决:

原因是 nfs 下边没有 目录, 需要自己创建, 并且要 可读可写的权限

修改后,再次执行 成功:

第4阶段: 给 WordPress deploymen 管理 namespace

需要对WordPress 用 deployment 部署, 还要用 sevice 近行管理,定义namespace

网络需要用到哦 coreDns

01.02 的yam配置 同 第3阶段, 不需要改变,已经独立出去了

配置如下:

00-baimei-linux86-ns.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: baimei-linux86
  labels:
    school: baimei
    class: linux86

03-deploy-wp-nfs.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: wp
  namespace: baimei-linux86
spec:
  # replicas: 1
  replicas: 3
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      volumes:
      - name: data
        nfs:
          server: master231
          path: /baimei/data/kubernetes/wordpress/
      containers:
      - name: wordpress
        image: harbor.baimei.com/wordpress/wordpress:latest
        volumeMounts:
        - name: data
          mountPath: /var/www/html/wp-content/uploads
        ports:
        - containerPort: 80
        env:
        - name: WORDPRESS_DB_HOST
          # value: 10.200.100.100
          # value: db
          # value: db.baimei-linux86.svc.baimei.com
          value: db.baimei-linux86
        - name: WORDPRESS_DB_USER
          value: wordpress
        - name: WORDPRESS_DB_PASSWORD
          value: wordpress 

04-svc-wp.yaml

apiVersion: v1
kind: Service
metadata:
  name: wp
  namespace: baimei-linux86
spec:
  type: NodePort
  selector:
    app: wordpress
  ports:
  - port: 80
    targetPort: 80
    nodePort: 8080

运行 后

kubectl apply -f .

要检查是否给 db svc 加入了 名称空间:

赞(9)
未经允许不得转载:工具盒子 » k8s 实现wordpress集群 部署