【k8s学习笔记】wordpress + mariadb + mariadb-operator in kubernetes

使用helm部署mariadb-operator,并部署wordpress+mariaDB应用

一、部署mariadb-operator + mariadb实例

  1. 部署mariadb-operator
    使用helm部署
helm repo add mariadb-operator https://mariadb-operator.github.io/mariadb-operator
helm install mariadb-operator mariadb-operator/mariadb-operator
  1. helm release
    https://github.com/mariadb-operator/mariadb-operator/releases

  2. 部署相关config和secret

kubectl apply -f config/samples/config
  1. 部署storageclass和pv(在官方文档中没有这个步骤,如果集群中没有pv资源的话,创建mariadb实例会一直pending)
kubectl apply -f /k8s-study/pv.yml
kubectl apply -f /k8s-study/storageclass.yml

sample output:

persistentvolume/pv1 created
persistentvolume/pv2 created
persistentvolume/pv3 created
  1. 部署mariaDB实例
kubectl apply -f config/samples/mariadb_v1alpha1_mariadb.yaml

sample output:

kubectl get mariadbs
NAME      READY   STATUS    AGE
mariadb   True    Running   75s

kubectl get statefulsets
NAME      READY   AGE
mariadb   1/1     2m12s

kubectl get services
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
mariadb      ClusterIP   10.96.235.145   <none>        3306/TCP,9104/TCP   2m17s
  1. 部署数据库实例、user、grant
kubectl apply -f config/samples/mariadb_v1alpha1_database.yaml
kubectl apply -f config/samples/mariadb_v1alpha1_user.yaml
kubectl apply -f config/samples/mariadb_v1alpha1_grant.yaml

sample output:

kubectl get databases
NAME        READY   STATUS    CHARSET   COLLATE           AGE
data-test   True    Created   utf8      utf8_general_ci   22s

kubectl get users
NAME              READY   STATUS    MAXCONNS   AGE
mariadb-metrics   True    Created   3          19m
user              True    Created   20         29s

kubectl get grants
NAME              READY   STATUS    DATABASE   TABLE   USERNAME          GRANTOPT   AGE
mariadb-metrics   True    Created   *          *       mariadb-metrics   false      19m
user              True    Created   *          *       user              true       36s

部署mariadb-operator中遇到的问题:

  1. 部署maridb实例pod pending的问题
    • 解决方法:手动创建pv和storageclass(是否有其他方法?
  2. 部署mariadb实例时,readiness探针会报错ERROR 2002 (HY000): Can't connect to local server through socket '/run/mysqld/mysqld.sock' (2)
    • 百度和Google了一通后,似乎是和容器的host有关系,最后在https://serverfault.com/questions/337818/how-to-force-mysql-to-connect-by-tcp-instead-of-a-unix-socket中找到答案
    • 解决方法:在mariadb的yaml文件中spec.myCnf字段增加
    [client]
    protocol=tcp
    
  3. 无法通过pod.svc的方式访问具体的mariadb pod
    • 进入一个带ping工具的pod,比如redis
    kubectl exec -it redis-sts-0 -- sh
    # ping mariadb-0.mariadb 不通
    
    • 解决方法:删除kube-system中的coredns,让其重新创建

二、 部署wordpress容器

  1. wordpress-deployment
# wp-dep.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: wp-dep
  name: wp-dep

spec:
  replicas: 2
  selector:
    matchLabels:
      app: wp-dep

  template:
    metadata:
      labels:
        app: wp-dep
    spec:
      containers:
      - image: wordpress:5
        name: wordpress
        ports:
        - containerPort: 80

        envFrom:
        - prefix: 'WORDPRESS_DB_'
          configMapRef:
            name: wp-cm
  1. wordpress-service
apiVersion: v1
kind: Service
metadata:
  labels:
    app: wp-dep
  name: wp-svc

spec:
  ports:
  - name: http80
    port: 80
    protocol: TCP
    targetPort: 80
    nodePort: 30088

  selector:
    app: wp-dep
  type: NodePort

  1. wordpress-configmap
apiVersion: v1
kind: ConfigMap
metadata:
  name: wp-cm

data:
  HOST: 'mariadb-0.mariadb' #host是pod.svc的形式
  USER: 'root'
  PASSWORD: 'mariadb' 
  NAME: 'data-test'
  1. 部署wordpress
kubectl apply -f wp-svc.yml 
kubectl apply -f wp-cm.yml 
kubectl apply -f wp-dep.yml

三、测试是否安装成功

  1. 查看wordpress部署在哪个节点
kubectl get pod -o wide
  1. 访问相应主机的相应端口
    添加一些注册信息

  2. 查看数据库是否有数据

kubectl exec -it mariadb-0 /bin/bash
root@mariadb-0:/# mysql -uroot -pmariadb
...

MariaDB [(none)]> show databases;
...

MariaDB [(none)]> use data-test;

MariaDB [data-test]> show tables;
+-----------------------+
| Tables_in_data-test   |
+-----------------------+
| wp_commentmeta        |
| wp_comments           |
| wp_links              |
| wp_options            |
| wp_postmeta           |
| wp_posts              |
| wp_term_relationships |
| wp_term_taxonomy      |
| wp_termmeta           |
| wp_terms              |
| wp_usermeta           |
| wp_users              |
+-----------------------+
12 rows in set (0.000 sec)

MariaDB [data-test]> select user_login from wp_users;
+------------+
| user_login |
+------------+
| huyiqiu    |
+------------+
1 row in set (0.000 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值