Kubernetes 入口控制器吊舱未启动

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

大家好,我刚刚开始试用kubernetes,无法让我的入口资源和控制器正常工作,无法将外部流量路由到集群中的我的服务。 我的环境详情 用于windows的Docker桌面 kubernetes版本1.10.11(通过命令kubectl版本获得) OS=windows10 64位

我已从以下链接获取入口

通过使用这两个命令

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入口控制器