【发布时间】:2020-01-15 12:03:07
【问题描述】:
我在我的 RedHat EC2 实例上安装了 Minikube v1.3.1 以进行一些测试。
由于 nginx-ingress-controller 默认使用的端口已经在使用,我试图在部署中更改它们但没有结果。有人可以建议怎么做吗?
我如何知道端口已在使用中?
当我使用命令 kubectl -n kube-system get deployment | grep nginx 列出系统 pod 时,我得到:
nginx-ingress-controller 0/1 1 0 9d
表示我的容器没有启动。当我使用命令kubectl -n kube-system describe pod nginx-ingress-controller-xxxxx 描述它时,我得到:
输入原因年龄来自
留言 ---- ------ ----
---- ------- 警告 FailedCreatePodSandBox 42m (x163507 over 2d1h) kubelet, minikube (组合自相似 事件):创建 pod 沙箱失败:rpc 错误:代码 = 未知描述 = 无法为 pod 启动沙箱容器 “nginx-ingress-controller-xxxx”:来自守护进程的错误响应:驱动程序 在端点上编程外部连接失败 k8s_POD_nginx-ingress-controller-xxxx_kube-system_...:启动错误 用户态代理:监听 tcp 0.0.0.0:443:绑定:地址已在使用中
然后我检查使用这些端口的进程并杀死它们。这释放了它们,并且 ingress-controller pod 被正确部署。
我尝试更改 nginx-ingress-controller 端口是什么?
kubectl -n kube-system get deployment | grep nginx
> NAME READY UP-TO-DATE AVAILABLE AGE
> nginx-ingress-controller 0/1 1 0 9d
kubectl -n kube-system edit deployment nginx-ingress-controller
我的部署的相关部分如下所示:
name: nginx-ingress-controller
ports:
- containerPort: 80
hostPort: 80
protocol: TCP
- containerPort: 443
hostPort: 443
protocol: TCP
- containerPort: 81
hostPort: 81
protocol: TCP
- containerPort: 444
hostPort: 444
protocol: TCP
- containerPort: 18080
hostPort: 18080
protocol: TCP
然后我删除端口 443 和 80 的子部分,但是当我推出更改时,它们会再次添加。
现在我的服务无法通过入口访问了。
【问题讨论】:
-
你好 AR1,你能分享完整的 NGINX 部署 YAML 吗?完全理解场景会很有帮助。另一方面,您使用的是 K8s 文档[1] 还是其他指南? [1]kubernetes.io/docs/tasks/access-application-cluster/…
-
嗨,路易斯,感谢您的回答。由于篇幅原因,我没有发布完整的 YAML。我发布的部分是与默认部分的唯一区别。我已经按照文档进行了操作,除非我按照问题中的说明更改 NGINX 端口,否则 ingress 工作正常。
标签: nginx kubernetes minikube kubernetes-ingress