mysql是tcp连接,使用traefik2.5.7来进行tcp路由
注意每个资源的端口配置,理解这个很重要!!
这些都可随意配置,加深理解
本机host配置:127.0.0.1 mysql.cream.com
本机docker nginx容器:3312:3312(本机:nginx容器),nginx容器内服务监听3312端口,转发到k8s Node的4306端口
traefik Pod:3312:4306(traefik Pod:k8s Node),3312是traefik配置的mysql入口点的端口,4306是k8s Node的端口,traefik请求入口
mysql IngressRouteTcp:mysql(spec.entryPoints),HostSNI(`*`)(spec.routes.match),配置traefik的tcp路由规则
mysql Service:3307:3306(clusterIp:mysql Pod),3307是Service的集群ip暴露的端口,3306是mysql Pod的暴露端口
mysql Pod:3306,mysql服务启动的端口
1、镜像
docker pull mysql:8.0.27
2、tag
docker images | grep mysql
mysql 8.0.27 3218b38490ce 4 weeks ago 516MB
docker tag 3218b38490ce registry.cn-shenzhen.aliyuncs.com/hqyinfra/mysql:v8.0.27
3、推送
docker push registry.cn-shenzhen.aliyuncs.com/hqyinfra/mysql:v8.0.27
4、pvc.yaml
kubectl apply -f pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql
namespace: app
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
5、cm.yaml
kubectl apply -f cm.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql
labels:
app: mysql
namespace: app
data:
my.cnf: |
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-character-set-client-handshake = 1
default-storage-engine = INNODB
max_allowed_packet = 500M
explicit_defaults_for_timestamp = 1
long_query_time = 10
6、dp.yaml
kubectl apply -f dp.yaml
apiVersion: apps/v1
kind: Deployment
metadata