我是kubernetes的新手,我有一个带有docker桌面的集群,其中有一个pod,它的后端在容器中,到目前为止,我知道一个服务附加到pod(pod),并提供了一个静态IP,允许外部流量(我想用我的浏览器访问我的后端)。我不知道该怎么做,网上没有什么真的有意义。
我想我需要让我的服务成为负载均衡器类型,以允许静态IP将流量传递到我的Pod中(我只有一个,但当这起作用时,我会升级副本)。
我似乎无法让它工作,以下是相关的配置文件:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: my-app
name: my-app
spec:
selector:
matchLabels:
app: my-app
replicas: 1
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app/my-app
imagePullPolicy: IfNotPresent
env:
- name: GET_HOSTS_FROM
value: dns
- name: DATABASE_URL
value: postgres://postgres:postgres@database/postgres
ports:
- containerPort: 80
--------------------------------------------
apiVersion: v1
kind: Service
metadata:
name: my-app
labels:
app: my-app
spec:
ports:
- port: 80
targetPort: 8080
selector:
app: my-app
字符串
我最终想把它放在aws或gcp上,但我有点迷失了从这里去哪里,如果有人有任何建议或材料,可以帮助像我这样的聪明人理解这一点,我会真的感谢它。
编辑:我在这里添加了一个入口,我不太确定连接到服务时应该发生什么:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-srv
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
ingressClassName: nginx
rules:
- host: lesser-bank.com
http:
paths:
- pathType: Prefix
path: "/test"
backend:
service:
name: lesser-bank-api
port:
number: 8080
型
2条答案
按热度按时间qvsjd97n1#
默认情况下,服务的类型为
ClusterIp
,这意味着您的pod只能从集群内访问。Ingress类型的对象可以提供对服务的外部访问,如下所示:
字符串
这是一个非常常见的问题,可以在Kubernetes文档中轻松找到。
szqfcxe22#
如果您只想公开一个部署,那么通过Loadbalancer类型公开您的服务将是理想的。有关详细说明,请参阅此link。
但是,如果您想将Nginx Ingress控制器与Let's Encrypt和Cert Manager一起使用,请参阅以下链接以获得详细的解释和说明:
https://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/blob/main/03-setup-ingress-controller/nginx.md的
字符串