我正在尝试设置K8s部署,ingress的控制器可以将服务定义为子域。i、 e.app1可以定义自身以从app1.sub.domain获取流量。io在其入口配置中。
我有一个DNS a记录。子域。io指向负载平衡器。该负载平衡器指向集群的实例组。
所以,如果我是对的,所有的流量都会转到子域中的任何内容。io将在集群内着陆,只需要路由所述流量。
下面是k8配置,它有一个pod、一个服务和一个入口。这些豆荚是健康和工作的,我相信这项服务是不需要的,但会希望其他豆荚通过内部DNS对话,所以它被添加。
入口规则有一个主机app1.sub.domain。io,所以在理论上,curl'ing app1.sub.domain。io应遵循:DNS-
当我尝试点击app1.sub.domain时。io只是挂起。我试着没有服务,做外部名称服务,但不起作用。
我不想走使用loadBalancer入口的路线,因为这会产生一个新的外部IP,需要手动应用于DNS记录,或者使用一个讨厌的bash脚本等待服务外部IP并运行GCP命令,我们不想为每个服务这样做。
参考链接:https://kubernetes.io/docs/concepts/services-networking/ingress/#name-基于虚拟主机
部署
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: app1
namespace: default
labels:
app: app1
spec:
replicas: 3
selector:
matchLabels:
app: app1
template:
metadata:
labels:
app: app1
spec:
containers:
- image: xxxx:latest
name: app1
ports:
- containerPort: 80
env:
- name: NODE_ENV
value: production
服务
---
kind: Service
apiVersion: v1
metadata:
name: app1
labels:
app: app1
spec:
ports:
- port: 80
targetPort: 80
selector:
app: app1
type: ClusterIP
进入
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: app1-ingress
labels:
app: app1
spec:
rules:
- host: app1.sub.domain.io
http:
paths:
- backend:
serviceName: app1
servicePort: 80
一旦一切部署完毕,如果您查询kubectl获取pod、服务、入口-l app=app1
NAME READY STATUS RESTARTS AGE
po/app1-6d4b9d8c5-4gcz5 1/1 Running 0 20m
po/app1-6d4b9d8c5-m4kwq 1/1 Running 0 20m
po/app1-6d4b9d8c5-rpm9l 1/1 Running 0 20m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
svc/app1 ClusterIP x.x.x.x <none> 80/TCP 20m
NAME HOSTS ADDRESS PORTS AGE
ing/app1-ingress app1.sub.domain.io 80 20m
- - - - - - - - - - - - - - - - - - 更新 - - - - - - - ---------------------
目前正在这样做,并不理想。拥有分配给DNS记录的全局静态IP。
---
kind: Service
apiVersion: v1
metadata:
name: app1
labels:
app: app1
spec:
type: NodePort
selector:
app: app1
ports:
- port: 80
targetPort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: app1-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: app1-static-ip
labels:
app: app1-static-ip
spec:
backend:
serviceName: app1
servicePort: 80
尝试向入口添加路径:
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: app1-ingress
labels:
app: app1
spec:
rules:
- host: app1.sub.domain.io
http:
paths:
- backend:
serviceName: app1
servicePort: 80
path: /
如果这不起作用,请发布描述服务和描述入口的输出。
你有入口控制器吗?交通应该是LB-
*.sub.domain.io应该指向入口的IP。
您可以按照此处教程中的说明使用静态IP进行入口:https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer#step_5_optional_configuring_a_static_ip_address
以下是每个部署的潜在工作流: 创建feature-api-deployment.yml 创建feature-api-service.yml 使用新的子域规则更新ingress.yml:指定 但是枚举和维护所有的子域->服务映射将会因为分解部署而变得混乱,并且会创建大量的GCE后端(默认配额是5...)所以不太理想。
我使用的是infra team(不是mini kube)提供的kubernetes集群,我已经创建了带有所有配置的traefik入口控制器,入口容器,我们的应用程序正在集群中运行。现在我想使用域名或IP地址访问应用程序,为此,我创建了一个入口资源,如下所示 这里我没有得到的是主机名,因为应用程序在集群中运行,这个主机名应该是集群主节点名吗?实际prod环境中的主机名或ip地址应该是什么。 注意:我
有人能帮我走台阶吗...(我在互联网的帮助下尝试了多种方法...不知道我错过了什么?) 注意:根据讨论论坛,我在ingress YAML的部署部分中添加了“hostnetwork:true”来解决“没有主机参数不能工作”,并注释了“type:nodeport”。 更新信息: kubectl描述了更新后的入口路由:在这里,我有ngnix--它工作得很好(我猜ingress和nginx都在相同的命名空
我试图将spring boot admin接口添加到kubernetes集群中部署的一些微服务中。spring boot admin应用程序具有以下配置: kubernetes集群有一个入口,用作api网关: 我如何解决这个问题并配置一个传统路径来为来自正确URL的请求中的静态内容提供服务? 提前致谢