1. mysql
前置环境:
k8s集群
helm3
使用helm安装。
# 获取自定义values
[root@k8s-n1 ~]# helm show values bitnami/mysql > mysql33061.values.conf
# 修改mysql33061.values.conf
# 修改默认root密码
auth:
rootPassword: "root账号的密码"
## 修改端口映射方式,这个是暴露在集群外,33061端口
primary:
service:
type: NodePort
nodePorts:
mysql: "33061"
## 磁盘持久化方式,这里使用上面部署的nfs存储类
primary:
persistence:
storageClass: "nas-nfs"
# 创建namespace
[root@k8s-n1 ~]# kubectl create ns mysql
# 部署
[root@k8s-n1 ~]# helm install mysql-33061 bitnami/mysql -n mysql --values mysql33061.values.conf
再部署一个仅供集群内访问的mysql,在端口映射那里使用默认values参数就是仅供集群内访问的方式,可以使用集群内dns访问。
# 获取自定义values
[root@k8s-n1 ~]# helm show values bitnami/mysql > mysql-cluster1.values.conf
# 修改内容
# 修改默认root密码
auth:
rootPassword: "root账号的密码"
## 磁盘持久化方式,这里使用上面部署的nfs存储类
primary:
persistence:
storageClass: "nas-nfs"
# 创建namespace
[root@k8s-n1 ~]# kubectl create ns mysql
# 部署
[root@k8s-n1 ~]# helm install mysql-cluster1 bitnami/mysql -n mysql --values mysql-cluster1.values.conf
# 集群内访问该实例的域名: mysql-cluster1.mysql.svc.cluster.local
2. postgresql
前置环境:
k8s集群
这里安装 的是9.6版本。因为后面想要部署kong 和konga,这两个服务都不兼容高版本的postgresql。
编辑清单:
vim pgsql.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pgsql
namespace: kong
spec:
storageClassName: nas-nfs
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: pgsql-kong
namespace: kong
spec:
serviceName: "postgres"
replicas: 1
selector:
matchLabels:
app: postgresql
template:
metadata:
labels:
app: postgresql
spec:
containers:
- name: postgresql
image: postgres:9.6
imagePullPolicy: IfNotPresent
env:
- name: POSTGRES_PASSWORD
value: kong
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
ports:
- containerPort: 5432
protocol: TCP
name: postgresql-port
volumeMounts:
- name: postgresql-data
mountPath: /var/lib/postgresql/data
subPath: kong-pgsql
volumes:
- name: postgresql-data
persistentVolumeClaim:
claimName: pgsql
securityContext:
runAsUser: 1001
fsGroup: 1001
---
apiVersion: v1
kind: Service
metadata:
name: pgsql-kong-svc
namespace: kong
labels:
app: pgsql-kong-svc
spec:
ports:
- name: postgresql-port
port: 5432
protocol: TCP
type: ClusterIP
selector:
app: postgresql
创建pgsql.yaml
第一部分是申请8g空间nfs做持久存储
第二部分需要注意下
securityContext
这个地方,这里如果是nfs之类的外置存储的话,不加这一段默认会报错挂载目录权限不足:chown: changing ownership of '/var/lib/postgresql/data': Operation not permitted
POSTGRES_PASSWORD
的value是设置的管理员密码env:
name: POSTGRES_PASSWORD value: kong # 数据库密码
第三部分是创建端口映射,ClusterIP代表不开放集群外访问,集群内可以根据dns或者ip访问。
这里顺便记录下pgsql的简单操作:
# help
\?
# 列出所有的数据库
\l
# 进入数据库
\c +数据库名
# 查看数据库下的所有表
\d
# 退出
\q