摘要: 无
部署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