摘要: 无

部署redis,mysql,clickhosue

path是文件夹就是对应文件夹,是文件的话,一定要用subPath指定,这样才规范

1.部署MySQL

创建config文件

apiVersion: v1
kind: ConfigMap
metadata:
  name: mysql-config
  namespace: middle
data:
  mysql.conf: |
   # myconfig
   [mysqld]
   skip-host-cache
   skip-name-resolve
   datadir=/var/lib/mysql
   socket=/var/run/mysqld/mysqld.sock
   secure-file-priv=/var/lib/mysql-files
   user=mysql

   pid-file=/var/run/mysqld/mysqld.pid
   [client]
   socket=/var/run/mysqld/mysqld.sock

   !includedir /etc/mysql/conf.d/


创建pvc文件

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
  namespace: middle
spec:
  storageClassName: nfs-tencent
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 0.5Gi

创建statefulset

kind: StatefulSet
apiVersion: apps/v1
metadata:
  name: mysql-middle
  namespace: middle
  labels:
    k8s.kuboard.cn/name: mysql-middle
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: mysql
    spec:
      volumes:
        - name: mysql-store
          persistentVolumeClaim:
            claimName: mysql-pv-claim
        - name: mysql-config
          configMap:
             name: mysql-config
             items:
               - key: mysql.conf
                 path: my.cnf

      containers:
        - name: mysql
          image: 'docker.m.daocloud.io/mysql:8.0.36'
          args:
            - '--default-authentication-plugin=mysql_native_password'
          ports:
            - containerPort: 3306
              protocol: TCP
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: 123456
          resources:
            limits:
              cpu: 50m
              memory: 1Gi
            requests:
              cpu: 50m
              memory: 1Gi
          volumeMounts:
            - name: mysql-store
              mountPath: /var/lib/mysql
            - name: mysql-config
              mountPath: /etc/my.cnf
              subPath: my.cnf
          imagePullPolicy: Always
      restartPolicy: Always

创建service

apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: middle
spec:
  ports:
  - port: 3306
  selector:
    app: mysql

2.部署Clickhouse

默认密码:123456 sha256加密

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: clickhouse-pv-claim
  namespace: middle
spec:
  storageClassName: nfs-tencent
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 0.5Gi
---

apiVersion: v1
kind: ConfigMap
metadata:
  name: clickhouse-config
  namespace: middle
data:
  pwd.xml: |
    <clickhouse>
      <users>
        <default>
            <password remove='1' />
            <password_sha256_hex>8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92</password_sha256_hex>
            <access_management>1</access_management>
            <named_collection_control>1</named_collection_control>
            <show_named_collections>1</show_named_collections>
            <show_named_collections_secrets>1</show_named_collections_secrets>
        </default>
      </users>
    </clickhouse>  
  access.xml: |
    <clickhouse>
      <listen_host>0.0.0.0</listen_host>
    </clickhouse>
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: clickhouse
  namespace: middle
spec:
  replicas: 1
  selector:
    matchLabels:
      app: clickhouse
  template:
    metadata:
      labels:
        app: clickhouse
    spec:
      containers:
      - name: clickhouse
        image: m.daocloud.io/clickhouse/clickhouse-server:23.12.2.59
        ports:
        - containerPort: 9000
        volumeMounts:
        - name: clickhouse-data
          mountPath: /var/lib/clickhouse
        - name: clickhouse-config
          mountPath: /etc/clickhouse-server/users.d/default-password.xml
          subPath: default-password.xml
        - name: clickhouse-config
          mountPath: /etc/clickhouse-server/config.d/config.xml
          subPath: config.xml

      volumes:
      - name: clickhouse-data
        persistentVolumeClaim:
          claimName: clickhouse-pv-claim
      - name: clickhouse-config
        configMap: 
          name: clickhouse-config
          items:
             - key: pwd.xml
               path: default-password.xml
             - key: access.xml
               path: config.xml 
---
apiVersion: v1
kind: Service
metadata:
  name: clickhouse
  namespace: middle
spec:
  ports:
  - port: 9000
  selector:
    app: clickhouse

3.部署redis

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: redis-pv-claim
  namespace: middle
spec:
  storageClassName: nfs-tencent
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 0.5Gi
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: redis-config
  namespace: middle
data:
  single.conf: |-
    dir /data/redis
    port 6379
    bind 0.0.0.0
    appendonly yes
    daemonize no
    #protected-mode no
    requirepass 123456
    pidfile /data/redis/redis-6379.pid
    logfile /data/redis/redis.log
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis
  namespace: middle
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - name: redis
        args:
            - /etc/redis/redis.conf
        command:
            - redis-server
        image: m.daocloud.io/redis:7.0.8
        ports:
        - containerPort: 6379
        volumeMounts:
        - name: redis-data
          mountPath: /data/redis
        - name: redis-config
          mountPath: /etc/redis/redis.conf
          subPath: redis.conf
      volumes:
      - name: redis-data
        persistentVolumeClaim:
          claimName: redis-pv-claim
      - name: redis-config
        configMap: 
          name: redis-config
          items:
             - key: single.conf
               path: redis.conf
---
apiVersion: v1
kind: Service
metadata:
  name: redis
  namespace: middle
spec:
  ports:
  - port: 6379
  selector:
    app: redis

4.部署pg

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: postgres-config
  labels:
    app: postgres
  namespace: middle
data:
  POSTGRES_DB: postgresdb
  POSTGRES_USER: postgres
  POSTGRES_PASSWORD: 1234567
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgresql-disk
  namespace: middle
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
  storageClassName: local-nfs
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgresql
  namespace: middle
  labels:
    app: postgresql
spec:
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: postgresql
  template:
    metadata:
      labels:
        app: postgresql
    spec:
      containers:
        - image: postgres:15
          name: postgresql
          ports:
            - containerPort: 5432
              name: postgresql
          envFrom:
            - configMapRef:
                name: postgres-config
          volumeMounts:
            - name: postgresql-disk
              mountPath: /var/lib/postgresql/data
      volumes:
        - name: postgresql-disk
          persistentVolumeClaim:
            claimName: postgresql-disk
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: postgresql
  name: postgresql-svc
  namespace: middle
spec:
  ports:
    - name: postgresql
      port: 5432
      protocol: TCP
      targetPort: 5432
  selector:
    app: postgresql

最后修改:2024 年 12 月 25 日
如果觉得我的文章对你有用,请随意赞赏