【发布时间】:2019-08-12 13:24:15
【问题描述】:
我有两个通过 http 协议进行通信的微服务。
AC6K:从阿特拉斯·科普柯 6000 设备获取数据的 C# 微服务。
LocalWriter:从 AC6K 获取数据并将信息存储在数据库中的 python 应用程序
我已经在 Windows 和 Linux 环境中对其进行了测试,并且运行良好。当我对每个微服务进行竞争并进行部署时,没有通信。请在此处找到用于容器化和部署应用程序的相应 docker 和 yaml 文件
ac6k docker 文件:
FROM microsoft/aspnetcore-build
EXPOSE 5010
WORKDIR /app
COPY . .
RUN dotnet restore
ENTRYPOINT ["dotnet", "ac6kcore.dll"]
- ac6kUp.yaml
apiVersion: v1
kind: Service
metadata:
name: ac6kcore
labels:
run: ac6kcore
spec:
type: NodePort
ports:
- port: 5010
name: ac6kcore
targetPort: 5010
nodePort: 32766
protocol: TCP
selector:
run: ac6kcore
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ac6kcore
spec:
selector:
matchLabels:
run: ac6kcore
replicas: 1
template:
metadata:
labels:
run: ac6kcore
spec:
hostNetwork: true
containers:
- image: afierro/ac6kcore:lw
name: ac6kcore
ports:
- containerPort: 5010
restartPolicy: Always
本地写入器 docker 文件:
FROM python:3.6
RUN mkdir -p /mongodbapp
WORKDIR /mongodbapp
COPY requirements.txt /mongodbapp
RUN pip install --no-cache-dir -r requirements.txt
ADD . /mongodbapp
EXPOSE 9090
CMD ["python", "runapp.py"]
- LocalWriter.yaml
apiVersion: v1
kind: Service
metadata:
annotations:
service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
name: localwriter
labels:
app: localwriter
spec:
type: NodePort
ports:
- port: 9090
name: localwriter
targetPort: 9090
nodePort: 32756
protocol: TCP
selector:
app: localwriter
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: localwriter
spec:
replicas: 1
selector:
matchLabels:
app: localwriter
template:
metadata:
labels:
app: localwriter
spec:
containers:
- name: flasknode
image: afierro/localwriter:v1
imagePullPolicy: Always
ports:
- containerPort: 9090
提前致谢
【问题讨论】:
-
您是否尝试过不使用 K8s 而在 Docker 中运行您的服务?
-
根据您的描述,您的微服务在单个集群中运行,因此您必须通过将 ServiceType 设置为
type: ClusterIP来将服务暴露在集群内部 IP 上。另外,能否请您显示kubectl get svc -o wide的输出
标签: kubernetes containers microservices