首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >与Kubernetes在一起的Nginx和Ingress不满足我的请求

与Kubernetes在一起的Nginx和Ingress不满足我的请求
EN

Stack Overflow用户
提问于 2017-09-14 05:57:16
回答 1查看 2.8K关注 0票数 1

我有Docker、Kubernetes(1.7)和Nginx,它们都运行在我的RHEL7服务器上,我自己的服务位于一个码头容器中,并被Kubernetes捕获。我知道Kubernetes正在与docker一起工作,因为我可以使用自己的IP:端口地址调用Kubernete吊舱的get请求,并且它可以工作。我用默认后端设置了Nginx,并完成了所有这些工作。我通过调用get podsget svc命令来了解这一点,并且一切都按其应有的方式运行。当我创建入口时,我知道Nginx正在收集它,因为当我使用命令kubectl describe pods {NGNIX-CONTROLLER}时,我看到它更新了它的入口,甚至记录了我给它命名的内容。现在,我使用kubectl clusterinfo获得Kubernetes主服务器的IP地址,并使用这个ip地址尝试调用我的服务,类似于http://KUBEIPADDRESS/PATH/TO/MY/SERVICE那样,没有端口号,但无法工作。我不知道发生了什么事。有人能帮我解释一下,为什么isn和/或Nnginx没有正确地路由到我的服务中?我会把我的入口处和nginx文件记录在下面。

(注意,对于nginx文件,nginx控制器的部署一直在底部。)

入口yaml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gateway-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    ingress.kubernetes.io/rewrite-target: /
spec:
  backend:
    serviceName: default-http-backend
    servicePort: 80
  rules:
  - host: testhost
    http:
      paths:
      - path: /customer
        backend:
          serviceName: customer
          servicePort: 9001

nginx控制器yaml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  name: ingress
rules:
- apiGroups:
  - ""
  - "extensions"
  resources:
  - configmaps
  - secrets
  - services
  - endpoints
  - ingresses
  - nodes
  - pods
  verbs:
  - list
  - watch
- apiGroups:
  - "extensions"
  resources:
  - ingresses
  verbs:
  - get
- apiGroups:
  - ""
  resources:
  - events
  - services
  verbs:
  - create
  - list
  - update
  - get
- apiGroups:
  - "extensions"
  resources:
  - ingresses/status
  - ingresses
  verbs:
  - update
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
  name: ingress-ns
  namespace: kube-system
rules:
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - list
- apiGroups:
  - ""
  resources:
  - services
  verbs:
  - get
- apiGroups:
  - ""
  resources:
  - endpoints
  verbs:
  - get
  - create
  - update  
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
  name: ingress-ns-binding
  namespace: kube-system
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: ingress-ns
subjects:
  - kind: ServiceAccount
    name: ingress
    namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: ingress-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: ingress
subjects:
  - kind: ServiceAccount
    name: ingress
    namespace: kube-system
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: default-http-backend
  labels:
    k8s-app: default-http-backend
  namespace: kube-system
spec:
  replicas: 1
  template:
    metadata:
      labels:
        k8s-app: default-http-backend
    spec:
      terminationGracePeriodSeconds: 60
      containers:
      - name: default-http-backend
        # Any image is permissable as long as:
        # 1. It serves a 404 page at /
        # 2. It serves 200 on a /healthz endpoint
        image: gcr.io/google_containers/defaultbackend:1.0
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 30
          timeoutSeconds: 5
        ports:
        - containerPort: 8080
        resources:
          limits:
            cpu: 10m
            memory: 20Mi
          requests:
            cpu: 10m
            memory: 20Mi
---
apiVersion: v1
kind: Service
metadata:
  name: default-http-backend
  namespace: kube-system
  labels:
    k8s-app: default-http-backend
spec:
  ports:
  - port: 80
    targetPort: 8080
  selector:
    k8s-app: default-http-backend
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: ingress
  namespace: kube-system
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-ingress-controller
  labels:
    k8s-app: nginx-ingress-controller
  namespace: kube-system
spec:
  replicas: 1
  template:
    metadata:
      labels:
        k8s-app: nginx-ingress-controller
    spec:
      # hostNetwork makes it possible to use ipv6 and to preserve the source IP correctly regardless of docker configuration
      # however, it is not a hard dependency of the nginx-ingress-controller itself and it may cause issues if port 10254 already is taken on the host
      # that said, since hostPort is broken on CNI (https://github.com/kubernetes/kubernetes/issues/31307) we have to use hostNetwork where CNI is used
      # like with kubeadm
      hostNetwork: true
      terminationGracePeriodSeconds: 60
      serviceAccountName: ingress
      containers:
      - image: gcr.io/google_containers/nginx-ingress-controller:0.9.0-beta.3
        name: nginx-ingress-controller
        readinessProbe:
          httpGet:
            path: /healthz
            port: 10254
            scheme: HTTP
        livenessProbe:
          httpGet:
            path: /healthz
            port: 10254
            scheme: HTTP
          initialDelaySeconds: 10
          timeoutSeconds: 1
        ports:
        - containerPort: 80
          hostPort: 80
        - containerPort: 443
          hostPort: 443
        env:
          - name: POD_NAME
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
          - name: POD_NAMESPACE
            valueFrom:
              fieldRef:
                fieldPath: metadata.namespace
        args:
        - /nginx-ingress-controller
        - --default-backend-service=$(POD_NAMESPACE)/default-http-backend

而且当我做kubectl describe ing的时候

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Name:                   gateway-ingress
Namespace:              default
Address:
Default backend:        default-http-backend:80 (<none>)
Rules:
  Host          Path    Backends
  ----          ----    --------
  testhost

                /customer    customer:9001 ({IP}:9001,{IP}:9001)
Annotations:
  rewrite-target:       /
Events:                 <none>

这是我对客户的部署和服务,以防有人需要。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: customer
  labels:
    run: customer
spec:
  replicas: 2
  template:
    metadata:
      labels:
        run: customer
    spec:
      containers:
      - name: customer
        image: customer
        imagePullPolicy: Always
        ports:
        - containerPort: 9001
          protocol: TCP
---
kind: Service
apiVersion: v1
metadata:
  name: customer
spec:
  selector:
    run: customer
  type: NodePort
  ports:
  - name: port1
    protocol: TCP
    port: 9001
    targetPort: 9001
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-16 03:41:57

据我所见,您的设置存在一些问题:

  • 在您调用的URL中的KUBEIPADDRESS:IP地址将无法工作,因为您将您的testhost配置为侦听testhost。因此,您需要调用http://testhost/customer,并将网络配置为将testhost解析为正确的IP地址。
  • 但正确的IP地址是什么?您正在尝试在端口80上使用k8s母版。如果没有进一步的配置,这是行不通的。为此,您需要为使用一个NodePort服务,它在端口80 (可能还有433)上公开它。为了使用低端口,您需要允许它使用kube选项,请参阅--service-node-port-range on https://kubernetes.io/docs/admin/kube-apiserver/。一旦成功,您就可以将k8s集群中任何节点的任何IP地址用于testhost。注意:确保没有其他应用程序在任何节点上使用这些端口!
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46221090

复制
相关文章
为亚马逊S3提供SFTP连接
Amazon S3或Simple Storage Service,是一种低成本、基于云的对象存储服务,它通过合理的、按需付费的定价为用户提供几乎无限的存储空间。S3存储的经济性、可用性和灵活性的特点,使组织依赖S3来处理您可以想象的,从时间点备份到业务数据备份以及介于两者之间的所有内容的存储。
知行软件EDI
2021/07/23
1.7K0
保护 Amazon S3 中托管数据的 10 个技巧
在这篇文章中,我们将讨论 10 个良好的安全实践,这些实践将使我们能够正确管理我们的 S3 存储桶。
Khan安全团队
2022/01/18
1.5K0
certbot开启亚马逊EC2主机https
国内那么多云主机运营商, 你为何要买国外的主机呢, 你肯定在干些见不得人的勾当..
chuchur
2022/10/25
5080
基于Windows服务实现的亚马逊云S3文件上传
一、Amazon S3介绍 Amazon Simple Storage Service (Amazon S3) 是一种对象存储,它具有简单的 Web 服务界面,可用于存储和检索 Web 上任何位置、任意数量的数据。它能够提供 99.999999999% 的持久性,并且可以在全球大规模传递数万亿对象。 客户将 S3 用于批量存储库、“数据湖”,用于分析、备份和还原、灾难恢复和无服务器计算。许多原生云应用程序甚至使用 S3 作为主要存储。 借助 Amazon 的云数据迁移选项,客户可将大量数据轻松地移入或
跟着阿笨一起玩NET
2021/02/02
1.2K0
如何使用亚马逊对象存储AWS S3 SDK访问腾讯云存储COS
COS 提供了 AWS S3 兼容的 API,因此当您的数据从 S3 迁移到 COS 之后,只需要进行简单的配置修改,即可让您的客户端应用轻松兼容 COS 服务。本文主要介绍不同开发平台的 S3 SDK 的适配步骤。在完成添加适配步骤后,您就可以使用 S3 SDK 的接口来访问 COS 上的文件了。
云存储
2020/05/26
4.3K0
等级保护主机安全:CentOS入侵防范(一)
本篇文章主要想说一说我对入侵防范中前3个测评项的理解(对于centos系统而言),如果大家有其他的看法或者思路也可以在回复中提出,我也跟着学习学习。
FB客服
2019/09/17
1.3K0
等级保护主机安全:CentOS入侵防范(一)
在兼容亚马逊S3的第三方应用中使用COS的通用配置
Amazon Simple Storage Service(Amazon S3,下文简称 S3)是 AWS 最早推出的云服务之一,经过多年的发展,S3 协议在对象存储行业事实上已经成为标准。腾讯云对象存储 COS(下文简称 COS)提供了兼容 S3 的实现方案,因此您可以在大部分兼容 S3 应用中直接使用 COS 服务。本文将重点介绍如何将此类应用配置为使用 COS 服务。
云存储
2020/04/03
3.3K0
在兼容亚马逊S3的第三方应用中使用COS的通用配置
借助亚马逊S3和RapidMiner将机器学习应用到文本挖掘
本挖掘典型地运用了机器学习技术,例如聚类,分类,关联规则,和预测建模。这些技术揭示潜在内容中的意义和关系。文本发掘应用于诸如竞争情报,生命科学,客户呼声,媒体和出版,法律和税收,法律实施,情感分析和趋势识别。 在本篇博客帖中,你将会学习到如何将机器学习技术应用到文本挖掘中。我将会向你展示如何使用RapidMiner(一款流行的预测分析开源工具)和亚马逊S3业务来创建一个文件挖掘应用。亚马逊S3业务是一项易用的存储服务,可使组织在网页上的任何地方存储和检索任意数量的数据。 掘模型产生的结果可以得到持续的推导并
用户1737318
2018/06/05
2.6K0
使用新的存储文件跟踪功能解锁 S3 上的 HBase
CDP 运营数据库 (COD)是由 Apache HBase 和 Apache Phoenix 提供支持的实时自动扩展运营数据库。它是在 Cloudera 数据平台 (CDP) 公共云上运行的主要数据服务之一。您可以从CDP 控制台访问 COD 。
大数据杂货铺
2022/12/02
2K0
使用新的存储文件跟踪功能解锁 S3 上的 HBase
攻击本地主机漏洞(上)
翻译“CompTIA PenTest Certification All-in-One Exam Guide Exam2019.pdf” 第十章
顾翔
2022/09/23
1.2K0
攻击本地主机漏洞(上)
C#-clickonce部署和调用
ClickOnce 是一种部署技术,使用它可以用来进行应用程序的自动更新,也可以使用在浏览器中直接调用部署好的应用程序。
kdyonly
2023/03/03
5780
文件上传(三)基于windows主机的上上传
看看上面的代码都限制了多少吧,大小写,加空格,加字符串,黑名单,好多限制。。。。。
逍遥子大表哥
2021/12/17
1.8K0
文件上传(三)基于windows主机的上上传
如何在Ubuntu 18.04上保护Redis的安装
Redis是一个使用内存技术,NoSQL,键值缓存及存储,也可以保存到磁盘。它专为受信任环境中的受信任客户端设计,自身没有强大安全功能。这里是Redis官方网站的引用:
GeekZ
2018/08/07
1K0
【以太坊篇】-‘链上数据的隐私保护’
好了,今天分享的是关于区块链外行人或者半内行人最关心的一个问题-“关于链上数据的隐私保护问题”。
帆说区块链
2022/04/26
7870
【以太坊篇】-‘链上数据的隐私保护’
快速创建软件安装包-ClickOnce
今天介绍使用ClickOnce制作软件安装包,首先我们先了解什么是ClickOne。
沙漠尽头的狼
2022/11/25
1.2K0
快速创建软件安装包-ClickOnce
怎么在区块链上保护隐私?
编者按:在12月3日的亚太区以太坊培训和交流Meetup深圳站上,Vitalik作了《怎么在区块链上保护隐私》的演讲,谈到了区块链上四种主要的保护隐私的手段,包括环签名和零知识证明。来看看吧。 作者:Vitalik
企鹅号小编
2017/12/26
2.3K0
怎么在区块链上保护隐私?
如何在Ubuntu 14.04上保护Nginx
即使使用默认设置,Nginx也是一个非常安全可靠的Web服务器。但是,有很多方法可以进一步保护Nginx。
编程男孩
2018/10/15
1.6K0
快速创建软件安装包-ClickOnce
今天介绍使用ClickOnce制作软件安装包,首先我们先了解什么是ClickOne。
沙漠尽头的狼
2022/11/03
9730
快速创建软件安装包-ClickOnce
SuSE Linux上修改主机名
临时修改使用hostname即可,格式为:hostname 新主机名。Hostname命令除可以临时修改主机名外,还可以用它来查看主机名,不带参数执行它,即为查看主机名。
一见
2018/08/10
6.9K0
如何使用Ubuntu 16.04上的Let's Encrypt保护Apache
本教程将向您展示如何在运行Apache作为Web服务器的Ubuntu 16.04服务器上设置Let's Encrypt的TLS / SSL证书。
新巴子
2018/10/19
1.9K0

相似问题

如何比较口语和参考录音-语言学习

23

语言学习语音识别工具

10

Pocketsphinx无法准确识别印度语言单词

112

用机器学习识别python中的声音(单词)

12

机器学习识别句子中的重要单词

118
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文