我使用Mac进行本地的服务开发,因为整体的服务治理使用K8s+Istio,所以在引入Seata时,也就引入了Nacos配合开展工作。
在我在本地部署时遇到一个奇怪的问题。我使用官方的K8s部署指引参考链接,向nacos进行注册时,发现启动的Seata pod日志内,压根不向nacos发起注册申请。
Ⅱ. Describe what happened我的配置文件如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: seata-server
namespace: ltgw
labels:
k8s-app: seata-server
spec:
replicas: 1
selector:
matchLabels:
k8s-app: seata-server
template:
metadata:
labels:
k8s-app: seata-server
spec:
containers:
- name: seata-server
image: docker.io/seataio/seata-server:1.6.1
imagePullPolicy: IfNotPresent
env:
- name: SEATA_CONFIG_NAME
value: file:/root/seata-config/registry
ports:
- name: http
containerPort: 8091
protocol: TCP
volumeMounts:
- name: seata-config
mountPath: /root/seata-config
volumes:
- name: seata-config
configMap:
name: seata-server-config
---
apiVersion: v1
kind: ConfigMap
metadata:
name: seata-server-config
namespace: ltgw
data:
registry.conf: |
registry {
type = "nacos"
nacos {
application = "seata-server"
server-addr = "nacos:8848"
group = "SEATA_GROUP"
namespace = ""
cluster = "default"
username = "nacos"
password = "nacos"
context-path = ""
}
}
config {
type = "file"
}
我又重新使用Docker进行部署,经过一番尝试,我部署成功了。在Docker内,Seata正常注册到Nacos中。
然后我又重新回来折腾K8s部署,可无论如何修改还是无济于事。最终,我使用文件挂载的方式,不使用ConfigMap,直接将Docker关联的配置resources挂载到pod中,这种方式成功了!
但这仅仅是我单机开发环境,还可以凑合这样用,我还是希望能使用ConfigMap方式挂载,这样的话,我未来才好进行远程云化部署。
Just paste your stack trace here!
因为是个部署问题,所以暂时不贴大量日志于此。
Ⅲ. Describe what you expected to happen我希望得到一个可用的K8s通过ConfigMap部署的指导方案。
Ⅳ. How to reproduce it (as minimally and precisely as possible)- Mac环境,安装Docker Desktop,并且成功启动K8s
- 在K8s按照参考链接进行K8s部署
- 应该会观察到Seata并未向Nacos发起注册
- JDK version(e.g.
java -version
): 1.8 - Seata client/server version: 1.6.2
- Database version:
- OS(e.g.
uname -a
):Darwin MacBook-Pro.local 22.1.0 Darwin Kernel Version 22.1.0: Sun Oct 9 20:14:54 PDT 2022; root:xnu-8792.41.9~2/RELEASE_X86_64 x86_64 - Others: Nacos 2.2.3