我试图使用AWS EKS在Docker和K8s中运行一个相当标准的.NET WebApi应用程序(可悲的是.NET 4.7.2,而不是.NET核心)
我可以看到该服务和POD已显示为正在运行,并且可以交互地进入POD并查看其日志,并看到它似乎开始正常,但是我很难触及正在运行的WebApi端点
这是我正在进行的事情的完整列表
就像我说的那样,该服务看起来正常启动,但是我似乎无法连接到它
我也习惯于看到一大堆额外的环境变量,如此处所述:https://kubernetes.io/docs/concepts/services-networking/service/#environment-variables
此外,由于CoreDNS(似乎正在运行),使用 [servicename]。[namespace] 格式的服务的DNS记录也应可用:{{3} }
无论如何这里是相关文件
Docker文件
FROM mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-1803
ADD . /app
WORKDIR /app
RUN DIR
RUN echo 10.46.140.93 gb01wanaapp01q.global.icap.com >> "C:\Windows\System32\drivers\etc\hosts"
RUN ping gb01wanaapp01q.global.icap.com
ENTRYPOINT "WebApiService.exe"
K8s POD /服务
---
apiVersion: apps/v1
kind: Deployment
{{ $envparams := .Values.global.env | lower }}
metadata:
name: "{{ .Values.global.name }}-{{ .Values.global.env | lower }}-deployment"
labels:
app.kubernetes.io/name: "{{ .Values.global.name }}-{{ .Values.global.env | lower }}"
app.kubernetes.io/part-of: "{{ .Values.global.name }}"
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: "{{ .Values.global.name }}"
template:
metadata:
labels:
app.kubernetes.io/name: "{{ .Values.global.name }}"
app.kubernetes.io/part-of: "{{ .Values.global.name }}"
appname: "{{ .Values.global.name }}-{{ .Values.global.env | lower }}-{{ .Values.global.appname }}"
annotations:
prometheus.io/port: "10254"
prometheus.io/scrape: "true"
spec:
nodeSelector:
kubernetes.io/os: windows
containers:
- name: "{{ .Values.global.name }}-{{ .Values.global.env | lower }}"
image: "{{ .Values.containers.axiom.image.repository }}:{{ .Values.containers.axiom.image.tag }}"
imagePullPolicy: Always
command: ["C:\\app\\WebApiService.exe"]
ports:
- containerPort: 9873
---
apiVersion: v1
kind: Service
metadata:
name: "{{ .Values.global.name }}-{{ .Values.global.env | lower }}-{{ .Values.global.appname }}-service"
spec:
selector:
appname: "{{ .Values.global.name }}-{{ .Values.global.env | lower }}-{{ .Values.global.appname }}"
ports:
- protocol: TCP
port: 9873
targetPort: 9873
type: NodePort
我们正在使用HELM将变量注入这些文件中
我们可以看到,当我们描述服务时,它会在30000-32767范围内分配一个随机端口,如下所示:https://kubernetes.io/docs/concepts/services-networking/service/#dns
这似乎可行,因此我们设置了一个AWS安全组,以确保自动创建的端口处于打开状态
然后我们尝试获取EC2节点IP地址,并将其与自动分配的端口结合使用
但这似乎不起作用
但是,检查POD日志后,代码/ docker容器看起来不错,它们已经启动,并且运行良好。这似乎是纯粹的网络问题
所以我有几个问题
type: NodePort
的服务,我的意思是[cluster_Ip]:[cluster_port]应该可以工作,其中cluster_ip
应该是集群中EC2 Windows节点的IP,cluster_port
应该是如上面的Service YAML中所示是端口有人知道为什么这些东西在Windows主机的AWS EKS中不起作用吗?