幸福和富有的过一生

幸福和富有的过一生!


  • 首页

  • 归档

  • 关于我

  • 公益404

  • 搜索

Kubernetes中的Ingress资源

时间: 2022-05-21 分类: cloudnative   kubernetes   ingress   字数: 1047 字 阅读: 3分钟 阅读次数:

Ingress是为kubernetes集群中服务service提供对外访问的接口,主要HTTP/HTTPS访问。 Ingress公开了从集群外部到集群内服务的HTTP和HTTPS路由。流量路由由Ingress资源上定义的规则控制。

下面是一个将所有流量都发送到同一Service的简单Ingress示例: 01

Ingress是由Ingress controller、Ingress资源和相应的service资源。最常见的Ingress控制器是 kuberneteres官方开源的ingress-nginx , 还有其他版本的控制器,在kubernetes官方登记的其他控制器 。 主要根据ingress-nginx介绍一下ingress。

创建控制器

ingress-nginx已经写好创建控制器的yaml文件,可以直接创建,有特殊需求的可以根据这个文件改进一下。

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.2.0/deploy/static/provider/cloud/deploy.yaml

## 查看创建controller
$ kubectl get pods -n ingress-nginx
NAME                                        READY   STATUS    RESTARTS   AGE
nginx-ingress-controller-6979d75b9d-2hf8f   1/1     Running   0          5h28m

具体ingress-nginx创建可以查看这里

用如下步骤演示一下ingress的用法

创建ingress

Ingress资源需要指定apiVersion、kind、metadata和spec字段。 spec部分指明了域名(host),url以及转发到service信息。

查看下面创建简单Ingress的yaml文件

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: tomcat-ingress   # ingress的名字
  namespace: tomcat      # ingress所在命名空间
spec:
  rules:
    - host: tomcat.ns.com      # 域名
      http:
        paths:
          - path: /            #url
            pathType: Prefix
            backend:
              service:
                name: mytomcat-http  # service的名称
                port:
                  number: 8080       # service的端口

可以通过如下命令查看创建的ingress资源

## 创建
$ kubectl apply -f tomcat-app.yaml

## 查看
$ kubectl get ingress

创建service

部署应用服务(tomcat),并创建服务(service)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcatinfra  ## 部署应用名称
  namespace: tomcat
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tomcatinfra  ## 应用服务的标签,service通过这个标签选择应用的pods
  template:
    metadata:
      name: tomcatinfra
      labels:
        app: tomcatinfra
    spec:
      containers:
      - image: saravak/tomcat8   ## 指定应用的镜像
        name: tomcatapp
        ports:
         - containerPort: 8080

---
apiVersion: v1
kind: Service
metadata:
  name: mytomcat-http  ## 服务的名称
  namespace: tomcat    ## 命名空间,必要有Ingress, 应用在同一命名空间
spec:
  type: ClusterIP
  ports:
  - port: 8080         ## 服务端口
    targetPort: 8080   ## app pod端口
  selector:
    app: tomcatinfra   ## 应用名称

创建服务

## 创建
$ kubectl apply -f tomcat-srv.yaml

## 查看服务
$ kubectl get svc

这时候nginx controller中的nginx的配置应该新增了转发tomcat.ns.com的信息。

kubectl -n ingress-nginx exec -it nginx-ingress-controller-6979d75b9d-2hf8f -- cat nginx.conf

这时可以将域名tomcat.ns.com解析的IP改成controller所在宿主机的IP,然后curl http://tomcat.ns.com/将 请求转发到部署的tomcat应用上。

引用

  1. Ingress

  2. Ingress 控制器

  3. ingress nginx

#cloudnative# #kubernetes# #ingress#
QQ扫一扫交流

标题:Kubernetes中的Ingress资源

链接:/post/kubernetes-ingress/

作者:lizj3624

声明: 本博客文章除特别声明外,均采用 CC BY-NC-SA 3.0许可协议,转载请注明出处!

创作实属不易,如有帮助,那就打赏博主些许茶钱吧 ^_^
WeChat Pay

微信打赏

Alipay

支付宝打赏

Kubeadm中的Token过期问题
Kubernetes中的Namespace详解
  • 文章目录
  • 站点概览
lizj3624

lizj3624

幸福和富有的过一生!

93 日志
90 分类
107 标签
GitHub 知乎
标签云
  • Cloudnative 13
  • 财报 11
  • Kubernetes 10
  • Nginx 9
  • Apisix 7
  • 美股 6
  • Video 5
  • 宏观经济 5
  • 投资 5
  • Linux 4
    • 创建控制器
    • 创建ingress
    • 创建service
    • 引用
© 2010 - 2024 幸福和富有的过一生
Powered by - Hugo v0.124.1 / Theme by - NexT
/
Storage by /
0%