k8s部署中,数据库用外部,要怎么修改
Closed this issue · 6 comments
k8s部署中,数据库用外部,要怎么修改
只需将env
中的数据库地址改成目标地址即可.
containers:
- env:
# 替换为 DEV_DB / FAT_DB / UAT_DB / PRO_DB / PORTAL_DB
- name: XX_DB
# 或者用域名 jdbc:mysql://mysql.addr.com:3306/xxx ,确保内部能够解析出IP且能访问即可.
value: jdbc:mysql://1.2.3.4:3306/DbName?characterEncoding=utf8
- name: XX_DB_USER
value: username
- name: XX_DB_PWD
value: password
请问一下,k8s部署apollo多环境,在您的示例配置文件如何追加yaml文件呢,能给模板吗?
同时admin 如何配置呢,示例中没有admin
admin
不需要特殊的配置,这个服务是给portal
用的,在k8s环境中的绝大部分场景是客户端访问config
获取配置,因此可以设置ONLY_CONFIG
参数不启动admin
以节约资源.
k8s中部署多个Apollo环境, 是指用多个Deployment
类型部署不同的Apollo环境,还是在一个Deployment
的Pod
中启动多个Apollo环境呢?
用多个Deployment
的话,只需修改为对应Apollo环境的env
参数,再和Service
绑定默认端口即可.
如果是在一个Pod
中启动多个Apollo环境,只用添加你想要的环境的env
参数,再开放相应的端口即可,例如你想开启dev和fat的Apollo环境:
kind: Deployment
# ...
containers:
- name: multie-apollo-env
env:
- name: DEV_DB
value: jdbc:mysql://1.2.3.4:3306/DevDbName?characterEncoding=utf8
# ... set db account & pwd
- name: FAT_DB
value: jdbc:mysql://1.2.3.4:3306/FatDbName?characterEncoding=utf8
# ...
ports:
- name: dev-cfg-port
containerPort: 8080
# 如果启动admin了,则暴露端口
- name: dev-adm-port
containerPort: 8090
- name: fat-cfg-port
containerPort: 8081
- name: fat-adm-port
containerPort: 8091
# 在一个pod中启动多个Apollo环境则readiness和liveness的检测方式使用exec
readinessProbe:
initialDelaySeconds: 100
periodSeconds: 20
exec:
command:
- healthcheck
# liveness的配置类似readiness,但initialDelaySeconds要设置稍大些.
---
kind: Service
# ...
spec:
ports:
- name: dev-cfg-port
port: 你要暴露dev config的端口
targetPort: 8080
- name: def-adm-port
port: 你要暴露dev admin的端口
- name: fat-cfg-port
port: 你要暴露fat config的端口
targetPort: 8081
- name: fat-adm-port
port: 你要暴露fat admin的端口
targetPort: 8091
# ...
可以参考wiki
中docker-compose
的yaml部署模板,里面其实和在k8s中的部署是极其类似的,**都是一样的.
好的
2018-12-19 12:21:16.491 ERROR 532 --- [Apollo-EnvHealthChecker-1] c.c.f.a.portal.component.PortalSettings : Env health check failed, maybe because of meta server down or configure wrong meta server address. env: UAT, meta server address: http://localhost:
com.ctrip.framework.apollo.common.exception.ServiceException: No available admin server. Maybe because of meta server down or all admin server down. Meta server address: http://localhost:
at com.ctrip.framework.apollo.portal.component.RetryableRestTemplate.getAdminServices(RetryableRestTemplate.java:172)
at com.ctrip.framework.apollo.portal.component.RetryableRestTemplate.execute(RetryableRestTemplate.java:90)
at com.ctrip.framework.apollo.portal.component.RetryableRestTemplate.get(RetryableRestTemplate.java:56)
at com.ctrip.framework.apollo.portal.api.AdminServiceAPI$HealthAPI.health(AdminServiceAPI.java:43)
at com.ctrip.framework.apollo.portal.component.PortalSettings$HealthCheckTask.isUp(PortalSettings.java:127)
at com.ctrip.framework.apollo.portal.component.PortalSettings$HealthCheckTask.run(PortalSettings.java:103)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)