首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我不能得到一个基本的Ingress服务工作的例子

我不能得到一个基本的Ingress服务工作的例子
EN

Stack Overflow用户
提问于 2021-02-23 07:43:37
回答 2查看 53关注 0票数 1

我正在为nginx pod前面的Ingress服务的一个非常基本的示例而苦苦挣扎。每当我尝试访问我的示例站点时,我都会得到这个简单的文本输出,而不是默认的nginx页面:

代码语言:javascript
复制
404 page not found

下面是我正在使用的部署:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 4
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: nginx-ingress
  namespace: default
spec:
  rules:
  - host: argo.corbe.net
    http:
      paths:
      - backend:
          serviceName: ningx
          servicePort: 80

k3s kubectl get pods -o wide:

代码语言:javascript
复制
NAME                              READY   STATUS    RESTARTS   AGE   IP           NODE    NOMINATED NODE   READINESS GATES
nginx-deployment-d6dcb985-942cz   1/1     Running   0          8h    10.42.0.17   k3s-1              
nginx-deployment-d6dcb985-d7v69   1/1     Running   0          8h    10.42.0.18   k3s-1              
nginx-deployment-d6dcb985-dqbn9   1/1     Running   0          8h    10.42.1.26   k3s-2              
nginx-deployment-d6dcb985-vpf79   1/1     Running   0          8h    10.42.1.25   k3s-2

k3s kubectl -o wide get服务:

代码语言:javascript
复制
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE   SELECTOR
kubernetes      ClusterIP   10.43.0.1               443/TCP   5d    
nginx-service   ClusterIP   10.43.218.234           80/TCP    8h    app=nginx

k3s kubectl -o wide get ingress:

代码语言:javascript
复制
NAME            CLASS    HOSTS            ADDRESS          PORTS   AGE
nginx-ingress      argo.corbe.net   207.148.25.119   80      8h

k3s kubectl描述部署nginx- deployment:

代码语言:javascript
复制
Name:                   nginx-deployment
Namespace:              default
CreationTimestamp:      Mon, 22 Feb 2021 15:19:07 +0000
Labels:                 app=nginx
Annotations:            deployment.kubernetes.io/revision: 2
Selector:               app=nginx
Replicas:               4 desired | 4 updated | 4 total | 4 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=nginx
  Containers:
   nginx:
    Image:        nginx
    Port:         8080/TCP
    Host Port:    0/TCP
    Environment:  
    Mounts:       
  Volumes:        
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
  Progressing    True    NewReplicaSetAvailable
OldReplicaSets:  
NewReplicaSet:   nginx-deployment-7848d4b86f (4/4 replicas created)
Events:
  Type    Reason             Age    From                   Message
  ----    ------             ----   ----                   -------
  Normal  ScalingReplicaSet  2m43s  deployment-controller  Scaled up replica set nginx-deployment-7848d4b86f to 1
  Normal  ScalingReplicaSet  2m43s  deployment-controller  Scaled down replica set nginx-deployment-d6dcb985 to 3
  Normal  ScalingReplicaSet  2m43s  deployment-controller  Scaled up replica set nginx-deployment-7848d4b86f to 2
  Normal  ScalingReplicaSet  2m40s  deployment-controller  Scaled down replica set nginx-deployment-d6dcb985 to 2
  Normal  ScalingReplicaSet  2m40s  deployment-controller  Scaled up replica set nginx-deployment-7848d4b86f to 3
  Normal  ScalingReplicaSet  2m40s  deployment-controller  Scaled down replica set nginx-deployment-d6dcb985 to 1
  Normal  ScalingReplicaSet  2m40s  deployment-controller  Scaled up replica set nginx-deployment-7848d4b86f to 4
  Normal  ScalingReplicaSet  2m38s  deployment-controller  Scaled down replica set nginx-deployment-d6dcb985 to 0
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-23 17:12:43

nginx镜像默认监听80端口的连接。

代码语言:javascript
复制
$ kubectl run --image nginx
$ kubectl exec -it nginx -- bash
root@nginx:/# apt update
    **output hidden**
root@nginx:/# apt install iproute2
    **output hidden**
root@nginx:/# ss -lunpt
Netid     State      Recv-Q     Send-Q         Local Address:Port         Peer Address:Port                                     
tcp       LISTEN     0          0                    0.0.0.0:80                0.0.0.0:*        users:(("nginx",pid=1,fd=7))    
tcp       LISTEN     0          0                          *:80                      *:*        users:(("nginx",pid=1,fd=8))

请注意,打开的是端口80,而不是端口8080。这意味着您的服务配置错误,因为它转发到端口8080。

您应该将目标端口设置为80,如下所示:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80    # <- HERE

另请注意服务名称:

代码语言:javascript
复制
kind: Service
metadata:
  name: nginx-service

作为后端的put服务使用不同的名称:

代码语言:javascript
复制
- backend:
    serviceName: ningx

将其更改为服务的实际名称,如下所示:

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: nginx-ingress
  namespace: default
spec:
  rules:
  - host: argo.corbe.net
    http:
      paths:
      - backend:
          serviceName: ningx-service
          servicePort: 80

应用这些更改,它现在应该可以工作了。

票数 1
EN

Stack Overflow用户

发布于 2021-02-23 12:36:13

你得到的是404,这意味着你正在使用nginx或ingress之前会有请求。

现在您的入口可能会有问题

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: nginx-ingress
  namespace: default
spec:
  rules:
  - host: argo.corbe.net
    http:
      paths:
      - backend:
          serviceName: ningx
          servicePort: 80

检查您正在使用的服务名称serviceName: ningx...。

它应该是nginx-service入口应该类似于

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: nginx-ingress
  namespace: default
spec:
  rules:
  - host: argo.corbe.net
    http:
      paths:
      - backend:
          serviceName: nginx-service
          servicePort: 80

整个流程大概是这样的:DNS > ingress > service (nginx-service) > deployment (nginx-deployment) or pod replicas.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66325066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档