Kubernetes 入口控制器吊舱未启动
大家好,我刚刚开始试用kubernetes,无法让我的入口资源和控制器正常工作,无法将外部流量路由到集群中的我的服务。 我的环境详情 用于windows的Docker桌面 kubernetes版本1.10.11(通过命令kubectl版本获得) OS=windows10 64位 我已从以下链接获取入口 通过使用这两个命令Kubernetes 入口控制器吊舱未启动,kubernetes,kubernetes-ingress,nginx-ingress,docker-desktop,Kubernetes,Kubernetes Ingress,Nginx Ingress,Docker Desktop,大家好,我刚刚开始试用kubernetes,无法让我的入口资源和控制器正常工作,无法将外部流量路由到集群中的我的服务。 我的环境详情 用于windows的Docker桌面 kubernetes版本1.10.11(通过命令kubectl版本获得) OS=windows10 64位 我已从以下链接获取入口 通过使用这两个命令 kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/depl
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/cloud-generic.yaml
然后我创建了一个入口资源,比如
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
name: sample-ingress1
spec:
rules:
- host: mysuperbot.com
http:
paths:
- path: /sampleingress
backend:
serviceName: tomcatappservice
servicePort: 8082
我的服务资源如下
---
apiVersion: v1
kind: Service
metadata:
name: tomcatappservice
labels:
app: tomcat-app
spec:
ports:
- port: 8082
protocol: TCP
targetPort: 8080
selector:
app: tomcat-app
type: NodePort
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: tomcat-app
labels:
app: tomcat-app
spec:
replicas: 5
selector:
matchLabels:
app: tomcat-app
template:
metadata:
labels:
app: tomcat-app
spec:
containers:
- image: tomcatapp:v1.0.0
name: tomcat-app
ports:
- containerPort: 8080
我的主机文件有一个条目
mysuperbot.com localhost
但在所有这些之后,当我尝试访问mysuperbot.com/sampleingres上的服务时,我得到了错误ERR\u NAME\u RESOLUTION\u FAILED
,这让我相信我的入口控制器设置不正确,所以我用命令检查它
kubectl get pods -n ingress-nginx
输出如下
NAME READY STATUS RESTARTS AGE
nginx-ingress-controller-7d84dd6bdf-vnjx5 0/1 Pending 0 2h
这意味着我的入口吊舱没有启动。需要帮助了解如何在docker desktop for windows附带的本地kubernetes群集上测试入口
更新
运行命令后
kubectl -n ingress-nginx describe pod nginx-ingress-controller-7d84dd6bdf-vnjx5
Name: nginx-ingress-controller-7d84dd6bdf-vnjx5
Namespace: ingress-nginx
Node: <none>
Labels: app.kubernetes.io/name=ingress-nginx
app.kubernetes.io/part-of=ingress-nginx
pod-template-hash=3840882689
Annotations: prometheus.io/port=10254
prometheus.io/scrape=true
Status: Pending
IP:
Controlled By: ReplicaSet/nginx-ingress-controller-7d84dd6bdf
Containers:
nginx-ingress-controller:
Image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.26.1
Ports: 80/TCP, 443/TCP
Host Ports: 0/TCP, 0/TCP
Args:
/nginx-ingress-controller
--configmap=$(POD_NAMESPACE)/nginx-configuration
--tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
--udp-services-configmap=$(POD_NAMESPACE)/udp-services
--publish-service=$(POD_NAMESPACE)/ingress-nginx
--annotations-prefix=nginx.ingress.kubernetes.io
Liveness: http-get http://:10254/healthz delay=10s timeout=10s period=10s #success=1 #failure=3
Readiness: http-get http://:10254/healthz delay=0s timeout=10s period=10s #success=1 #failure=3
Environment:
POD_NAME: nginx-ingress-controller-7d84dd6bdf-vnjx5 (v1:metadata.name)
POD_NAMESPACE: ingress-nginx (v1:metadata.namespace)
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from nginx-ingress-serviceaccount-token-8md24 (ro)
Conditions:
Type Status
PodScheduled False
Volumes:
nginx-ingress-serviceaccount-token-8md24:
Type: Secret (a volume populated by a Secret)
SecretName: nginx-ingress-serviceaccount-token-8md24
Optional: false
QoS Class: BestEffort
Node-Selectors: kubernetes.io/os=linux
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 14s (x583 over 3h) default-scheduler 0/1 nodes are available: 1 node(s) didn't match node selector.
kubectl-n ingress nginx描述吊舱nginx-ingress-controller-7d84dd6bdf-vnjx5
名称:nginx-ingress-controller-7d84dd6bdf-vnjx5
名称空间:ingress nginx
节点:
标签:app.kubernetes.io/name=ingress nginx
app.kubernetes.io/部分=入口nginx
pod模板哈希=3840882689
注释:prometheus.io/port=10254
普罗米修斯。io/scrap=true
状态:待定
知识产权:
控制人:ReplicaSet/nginx-ingress-controller-7d84dd6bdf
容器:
nginx入口控制器:
图片:quay.io/kubernetes入口控制器/nginx入口控制器:0.26.1
端口:80/TCP、443/TCP
主机端口:0/TCP,0/TCP
Args:
/nginx入口控制器
--configmap=$(POD_名称空间)/nginx配置
--tcp服务配置映射=$(POD_命名空间)/tcp服务
--udp服务配置映射=$(POD_命名空间)/udp服务
--发布服务=$(POD_名称空间)/ingress nginx
--注释前缀=nginx.ingres.kubernetes.io
活跃度:http get http://:10254/healthz delay=10s超时=10s周期=10s成功=1失败=3
准备就绪:http get http://:10254/healthz delay=0s超时=10s周期=10s成功=1失败=3
环境:
POD_名称:nginx-ingres-controller-7d84dd6bdf-vnjx5(v1:metadata.NAME)
POD_名称空间:入口nginx(v1:metadata.NAMESPACE)
挂载:
/nginx-ingress-serviceaccount-token-8md24(ro)中的var/run/secrets/kubernetes.io/serviceaccount
条件:
类型状态
播客计划错误
卷数:
nginx-ingress-serviceaccount-token-8md24:
类型:Secret(由Secret填充的卷)
SecretName:nginx-ingres-servicecount-token-8md24
可选:false
QoS等级:最佳努力
节点选择器:kubernetes.io/os=linux
容差:node.kubernetes.io/未就绪:不执行300秒
node.kubernetes.io/不可访问:不执行300秒
活动:
从消息中键入原因年龄
---- ------ ---- ---- -------
警告失败调度14s(x583超过3h)默认调度程序0/1节点可用:1个节点与节点选择器不匹配。
在入口控制器中有节点选择器
kubernetes.io/os=linux
您必须编辑一些节点/入口配置以匹配此标签
kubectl get nodes - - show-labels
kubectl label nodes <node-name> <label-key>=<label-value>
kubectl获取节点--显示标签
kubectl标签节点=
吊舱上有一些日志吗?@night gold umm如何获取这些日志?kubectl-n ingress controller日志nginx-ingress-controller-7d84dd6bdf-VNJX5当我运行上述命令将ingress controller更改为ingress nginxHaaaa sry时,无法获取任何日志,ingress正在挂起。。。你有节点吗?挂起通常出现在没有足够的资源来创建pod的情况下。请您详细解释一下。似乎我很快就能进入工作状态。谢谢您,您是一名救生员。不过,请不要忘记对问题进行投票:-)pod上的节点选择器告诉Kubernetes仅将pod部署到包含pod的节点io/os=linux标签。我假设您的节点具有标签kubernetes.io/os=windows。您可以查看节点的污染-kubectl描述节点名。您必须在nginx部署中相应地修改nodeSelector。kubectl-n入口nginx编辑部署nginx入口控制器