背景
项目中的侧边栏是后端返回给前端渲染展示的,每次需要维护一份sql【部署的环境不同,侧边栏不一样】,人工维护成本巨大,因此想做一个系统来维护,直接写入每个环境的mysql。
问题
以前使用docker部署已经很轻车熟路了,而我们的业务环境自己用的是k8s部署在集群中的,因此这个系统的mysql也得部署在集群中,通过k8s集群来访问各个环境的mysql。
部署报错信息
直接通过deployment部署
kubectl create deployment mysql-fe --image=mysql -- env MYSQL_ROOT_PASSWORD=123456
kubectl describe pod xxx查询日志
这个创建的时候 命令行加参数 一直不知道怎么加,导致容器无法创建
查阅api
kubernetes.kansea.com/docs/user-g…
这里始终不知道参数怎么传,有知道的同学可以留言
如果我们想查询某个pod的详细日志
kubectl get logs xxx无法查询
kubectl logs idaas-oms-85d55b6577-bx2sd这个命令可以
解决
通过yaml文件
下面是我自己用的
apiVersion: v1
kind: Service
metadata:
name: mysql-fe
spec:
ports:
- port: 8889
# 这是新增的
targetPort: 3306
nodePort: 8889
selector:
app: mysql-fe
clusterIP: None
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-fe
spec:
selector:
matchLabels:
app: mysql-fe
strategy:
type: Recreate
template:
metadata:
labels:
app: mysql-fe
spec:
containers:
- image: mysql-fe
name: mysql-fe
env:
# Use secret in real usage
- name: MYSQL_ROOT_PASSWORD
value: '123456'
ports:
- containerPort: 3306
name: mysql-fe
volumeMounts:
- name: mysql-fe-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-fe-storage
最后创建service
kubectl expose deployment mysql-fe --port=8889 --target-port=3306 --type=NodePort --overrides '{ "apiVersion": "v1","spec":{"ports": [{"port":8889,"protocol":"TCP","targetPort":3306,"nodePort":8889}]}}'
结果
初步完成了这次集群的部署,这里面要学的知识还有很多。