gpt4 book ai didi

kubernetes - 空地址 kubernetes 入口

转载 作者:行者123 更新时间:2023-12-02 23:22:17 28 4
gpt4 key购买 nike

我尝试在我的 kubernetes 集群上配置入口。我关注了documentation安装入口 Controller 并运行以下命令

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/baremetal/service-nodeport.yaml

在 default-http-backend 和 nginx-ingress-controller 运行之后:

ingress-nginx   default-http-backend-846b65fb5f-6kwvp      1/1       Running   0          23h       192.168.2.28   node1
ingress-nginx nginx-ingress-controller-d658896cd-6m76j 1/1 Running 0 6m 192.168.2.31 node1

我尝试测试入口并部署了以下服务:

apiVersion: apps/v1
kind: Deployment
metadata:
name: echoserver-deploy
spec:
replicas: 2
selector:
matchLabels:
app: echo
template:
metadata:
labels:
app: echo
spec:
containers:
- name: my-echo
image: gcr.io/google_containers/echoserver:1.8
---
apiVersion: v1
kind: Service
metadata:
name: echoserver-svc
spec:
selector:
app: echo
ports:
- protocol: TCP
port: 8080
targetPort: 8080

以及以下入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: happy-ingress
annotations:
INGRESS.kubernetes.io/rewrite-target: /
spec:
rules:
- host: happy.k8s.io
http:
paths:
- path: /echoserver
backend:
serviceName: echoserver-svc
servicePort: 8080

当我运行命令“kubectl get ing”时,我收到:

NAME            HOSTS          ADDRESS   PORTS     AGE
happy-ingress happy.k8s.io 80 14m

我没有解决 ADDRESS,而且我无法弄清楚问题是什么,因为所有 pod 都在运行。您能给我提示一下问题所在吗?

谢谢

最佳答案

在创建入口规则之前,您必须通过以下命令启用入口插件。您还可以在执行任何其他命令之前启用它

$ minikube addons enable ingress
ingress was successfully enabled

等待 Pod 启动并运行。您可以通过执行以下命令进行检查并等待类似的输出

kubectl get pods -n kube-system | grep nginx-ingress-controller

nginx-ingress-controller-5984b97644-jjng2 1/1 Running 2 1h

enter image description here对于部署,您必须指定containerPort,对于服务,您必须指定http协议(protocol)。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: echoserver-deploy
spec:
replicas: 2
selector:
matchLabels:
app: my-echo
template:
metadata:
labels:
app: my-echo
spec:
containers:
- name: my-echo
image: gcr.io/kubernetes-e2e-test-images/echoserver:2.1
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: echoserver-svc
spec:
selector:
app: my-echo
ports:
- protocol: TCP
port: 80
targetPort: 8080
name: http

对于入口规则,将端口 servicePort 从 8080 更改为默认 http 端口 80。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: happy-ingress
annotations:
INGRESS.kubernetes.io/rewrite-target: /
spec:
rules:
- host: happy.k8s.io
http:
paths:
- path: /echoserver
backend:
serviceName: echoserver-svc
servicePort: 80

现在应用这些文件并创建您的 Pod、服务和入口规则。稍等片刻,需要一些时间才能获取您的入口规则的地址。 enter image description here现在您可以使用 minikube ip 地址访问您的服务,但还不能通过主机名访问。为此,您必须在 /etc/hosts 文件中添加主机和相应的 IP 地址。因此,在您最喜欢的编辑器中打开 /etc/hosts 文件并添加以下行,其中是您 minikube 的实际 IP

<minikube_ip> happy.k8s.io

现在您可以使用主机名访问您的服务。验证是否遵循命令

curl http://happy.k8s.io/echoserver

关于kubernetes - 空地址 kubernetes 入口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51511547/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com