我们在 Azure Kubernetes 服务中部署了我们的应用程序、Pod 和服务,但我们无法从另一个虚拟网络的 VM 连接到我们的容器应用程序。与 AKS Pod 相比,当我们想要从来自另一个虚拟网络/子网的 Azure 资源 (VM) 建立网络连接时,服务类型内部负载均衡器似乎无法用于这些目的。 我阅读了文档 https://docs.microsoft.com/en-us/azure/aks/ingress-internal-ip 但我仍然很困惑我应该如何修改我的 YAML 定义以便使用“Ingress-Controller with type Internal LB”部署我们的应用程序。 你能帮我修改 YAML 吗?我是否真的需要使用 Helm 安装某些东西(我以前从未使用过它)以及需要安装的地方.. 如果可能的话,我想避免这种情况。我不明白文档中描述的概念。 对我们来说,我认为如果我们在同一个命名空间中有入口控制器就可以了。
谢谢!
apiVersion: apps/v1
kind: Deployment
metadata:
name: fa-ads-deployment
labels:
app: fa-ads-deployment
spec:
replicas: 1
template:
metadata:
name: frontarena-ads-aks-test
labels:
app: frontarena-ads-aks-test
spec:
nodeSelector:
"beta.kubernetes.io/os": linux
restartPolicy: Always
containers:
- name: frontarena-ads-aks-test
image: faselect.dev/frontarena/ads:test1
ports:
- containerPort: 9000
selector:
matchLabels:
app: frontarena-ads-aks-test
---
apiVersion: v1
kind: Service
metadata:
name: frontarena-ads-aks-test
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 9000
selector:
app: frontarena-ads-aks-test
答案 0 :(得分:0)
您分享的文章是创建 Ingress 控制器和资源。 Ingress 控制器不会随集群自动启动,它们充当反向代理和负载均衡器,并监视来自所有命名空间的 Ingress 对象。使用此页面选择最适合您的集群的入口控制器实现。每个人都会有自己的配置。 https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/。
一旦控制器开始观察入口流量,我们需要定义称为入口资源的路由规则,您将在其中定义路由规则,例如,在下面,如果用户导航到 test.com /icons 然后将调用服务测试。您不必定义主机。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-resource-backend
spec:
rules:
- host: test.com
http:
paths:
- path: /icons
pathType: ImplementationSpecific
backend:
service:
name: test
port:
number: 9999
您可以使用以下命令检查您的入口资源。
kubectl get ingress
root@ip-172-31-54-44:/home/ubuntu# k get ingress -n logiq
NAME CLASS HOSTS ADDRESS PORTS AGE
ingress-resource-backend public test.com 127.0.0.1 80 1d
总结:
如果还有疑问,这里有详细视频。 https://www.youtube.com/watch?v=u948CURLDJA