我正在尝试访问.NET Web API,该Web服务是我在docker上实现的,并安装在Microsoft Azure的Kubernet群集中。
该应用程序在本地docker机器上运行良好。 集群正在运行,我的部署是正确的,并且已在Pod中创建了集群。我检查的所有内容都很好,但是我无法通过外部群集IP(负载平衡器)访问我的应用程序。这是我的YAML部署文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: ohmioapi-deployment
spec:
selector:
matchLabels:
app: ohmioapi
replicas: 1
template:
metadata:
labels:
app: ohmioapi
spec:
containers:
- name: ohmioapi
image: ohmiocontainers.azurecr.io/ohmioapi:latest
imagePullPolicy: Always
ports:
- containerPort: 15200
imagePullSecrets:
- name: acr-auth
---
apiVersion: v1
kind: Service
metadata:
name: ohmioapi
labels:
app: ohmioapi
spec:
selector:
app: ohmioapi
ports:
- port: 15200
nodePort: 30200
protocol: TCP
type: LoadBalancer
任何人都可以提示从哪里开始寻找? 谢谢!
答案 0 :(得分:1)
我会给部署/吊舱端口起一个名字(例如http
),然后使服务从80端口开始服务,但要按名称定位吊舱端口...那样,您不必担心连接到服务时的端口号。
此外,如果您使用的是nodePort
类型,则不需要或不想使用LoadBalancer
。
例如
apiVersion: apps/v1
kind: Deployment
metadata:
name: ohmioapi-deployment
spec:
selector:
matchLabels:
app: ohmioapi
replicas: 1
template:
metadata:
labels:
app: ohmioapi
spec:
containers:
- name: ohmioapi
image: ohmiocontainers.azurecr.io/ohmioapi:latest
imagePullPolicy: Always
ports:
- name: http
containerPort: 15200
imagePullSecrets:
- name: acr-auth
---
apiVersion: v1
kind: Service
metadata:
name: ohmioapi
labels:
app: ohmioapi
spec:
selector:
app: ohmioapi
ports:
- name: http
port: 80
targetPort: http
protocol: TCP
type: LoadBalancer
答案 1 :(得分:1)
您可以使用命令kubectl get service
获取服务的所有信息并检查服务ohmioapi
,结果如下:
或者您可以使用命令kubectl describe service serviceName
获取有关服务的更多详细信息,结果将如下所示:
您可以在负载均衡器中检查端口映射,并可以通过外部IP和端口从浏览器进行访问。
您还可以使用命令kubectl edit service serviceName
编辑和检查Kunernetes创建的配置文件,结果将如下所示:
答案 2 :(得分:0)
确定要使用“ targetport”而不是“ nodeport”(如果端口相同,则只需将其删除)。
https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer