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"
<p> </p>
<h1 id="创建namespace">创建namespace</h1>
<p>[root@k8s-n1 ~]# kubectl create ns mysql</p>
<h1 id="部署">部署</h1>
<p>[root@k8s-n1 ~]# helm install mysql-33061 bitnami/mysql -n mysql --values mysql33061.values.conf
</p>
<p>
再部署一个仅供集群内访问的mysql,在端口映射那里使用默认values参数就是仅供集群内访问的方式,可以使用集群内dns访问。
# 获取自定义values
[root@k8s-n1 ~]# helm show values bitnami/mysql > mysql-cluster1.values.conf
</p>
<h1 id="修改内容">修改内容</h1><h1 id="修改默认root密码">修改默认root密码</h1>
<p>auth:
rootPassword: "root账号的密码"
</p>
<h2 id="磁盘持久化方式,这里使用上面部署的nfs存储类">磁盘持久化方式,这里使用上面部署的nfs存储类</h2>
<p>primary:
persistence:
storageClass: "nas-nfs"
</p>
<h1 id="创建namespace">创建namespace</h1>
<p>[root@k8s-n1 ~]# kubectl create ns mysql</p>
<h1 id="部署">部署</h1>
<p>[root@k8s-n1 ~]# helm install mysql-cluster1 bitnami/mysql -n mysql --values mysql-cluster1.values.conf
</p>
<h1 id="集群内访问该实例的域名: mysql-cluster1.mysql.svc.cluster.local</code></pre><p></p><p></p><h3 style="text-align: start" id="heading-2"><strong>2. postgresql</strong></h3><p style="text-align: start">前置环境:</p><ul><li><p>k8s集群</p></li><li><p>nfs存储类 <a target="_blank" rel="noopener noreferrer nofollow" href="https://www.bfmiaodi.cn/archives/k8s%E9%83%A8%E7%BD%B2nfs%E5%AD%98%E5%82%A8%E7%B1%BB">k8s部署nfs存储类 - 喵小弟 (</a><a target="_blank" rel="noopener noreferrer nofollow" href="http://bfmiaodi.cn">bfmiaodi.cn</a><a target="_blank" rel="noopener noreferrer nofollow" href="https://www.bfmiaodi.cn/archives/k8s%E9%83%A8%E7%BD%B2nfs%E5%AD%98%E5%82%A8%E7%B1%BB">)</a></p></li></ul><p style="text-align: start">这里安装 的是9.6版本。因为后面想要部署kong 和konga,这两个服务都不兼容高版本的postgresql。</p><p style="text-align: start">编辑清单:</p><p style="text-align: start"><code>vim pgsql.yaml</code></p><pre><code>apiVersion: v1">集群内访问该实例的域名: mysql-cluster1.mysql.svc.cluster.local
2. postgresql
前置环境:
k8s集群
这里安装 的是9.6版本。因为后面想要部署kong 和konga,这两个服务都不兼容高版本的postgresql。
编辑清单:
vim pgsql.yaml
apiVersion: v1</h1><h2 id="kind: PersistentVolumeClaim
metadata:
name: pgsql
namespace: kong
spec:
storageClassName: nas-nfs
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi">kind: PersistentVolumeClaim
metadata:
name: pgsql
namespace: kong
spec:
storageClassName: nas-nfs
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi</h2><h2 id="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: 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</h2>
<p>apiVersion: v1
kind: Service
metadata:
name: pgsql-kong-svc
namespace: kong
labels:
app: pgsql-kong-svc
spec:
ports:</p>
<ul>
<li>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
?
</li>
</ul>
<h1 id="列出所有的数据库">列出所有的数据库</h1>
<p>\l
</p>
<h1 id="进入数据库">进入数据库</h1>
<p>\c +数据库名
</p>
<h1 id="查看数据库下的所有表">查看数据库下的所有表</h1>
<p>\d
</p>
<h1 id="退出">退出</h1>
<p>\q