如何使用K8S的Ingress

41 篇文章 1 订阅
17 篇文章 0 订阅

如何使用K8S的Ingress

Ingress的好处与特点我就没有必要再说一次了,本文主要说明的是使用方法

准备条件

请先完成K8S的安装,安装ingress,它包括一个defaulebackend,与nginx-ingress-control,并pull下需要的docker image

注意

这里请注意一点,为了方便,我们希望在部署ingress的时候,将部署文件Ymal中的一个条目修改
修改yaml,在nginx-ingress-controller这个deployment下面的spec.template.spec下面添加,如下

#spec:
      hostNetwork: true
      #serviceAccountName: nginx-ingress-serviceaccount
      #containers:

开始

通过yaml创建ns,deployment,svc
deployment.yaml:

apiVersion: v1
kind: Namespace
metadata:
  name: web-test-ns
---
apiVersion: v1
kind: Service
metadata:
  name: web-svc-nodeport
  namespace: web-test-ns
spec:
  selector:
      app: nginx
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: 80
      #nodePort: 8000
  type: NodePort
  external-ip=192.168.250.200
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: web-test-ns
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
# 执行
kubectl apply -f deployment.yaml

#查看结果
kubectl get pods -A -o wide
kubectl get deployment -n web-test-ns
kubectl get ns
kubectl get svc -n web-test-ns

通过Yaml生成Ingress:
ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-web
  namespace: web-test-ns  
spec:
  rules:
  - host: test.com
    http:
      paths:
      - path:/    
        backend:
          serviceName: web-svc
          servicePort: 80
# 执行
kubectl apply -f ingress.yaml
#查看
kubectl get ingress -n web-test-ns
kubectl describe ingress ingress-web -n web-test-ns

Ingress control的入口地址是什么?怎么访问呢?

那么问题来了,我们怎么知道用哪个地址来访问Ingress的入口呢?执行以下命令查看

kubectl get pods -A -o wide
# 这里我们要找的就是类似以下的条目:
#ingress-nginx   nginx-ingress-controller-5d796786f6-lzfhc   1/1     Running   2          12h   192.168.250.101   node     <none>           <none>
#这个192.168.250.101就是它的真正入口
#修改/etc/hosts
echo '192.168.250.101 test.com' >>/etc/hosts
#测试
curl test.com
#成功!
K8s ingress(进入)是Kubernetes(K8s)中负责管理和控制入口流量的一种资源对象。它允许我们灵活地将外部流量路由到Kubernetes集群中的不同服务和后端容器。 K8s ingress作为一种API对象,定义了一组规则,用于指定流量如何从集群外部进入特定的服务。它可以基于IP地址、主机名、URL路径等信息来进行路由和转发。 K8s ingress使用了标准的HTTP和HTTPS协议,并可以与一些标准的负载均衡器(如Nginx、HAProxy等)进行集成。在创建ingress资源时,常常会指定一个负载均衡器作为入口流量的进入点。该负载均衡器可以在集群外部接收流量,并将其转发到Kubernetes内部的不同服务上。 K8s ingress不仅提供了流量路由和负载均衡的功能,还支持请求的TLS终结(也称为SSL终结),即可以通过TLS协议对传入的TLS流量进行解密并转发至后端的服务。这极大地简化了为服务配置和管理SSL证书的过程。 另外,K8s ingress还支持多种流量处理的方式,如:会话粘滞、重试和故障转移等。这些功能使得在Kubernetes集群中实现高可用和灵活的流量管理变得更加容易。 总之,K8s ingress为我们提供了管理Kubernetes集群入口流量的强大工具。通过定义一些规则和策略,我们可以根据流量的特点和需求将其精确地路由和转发到后端服务上,并提供一些额外的功能,如负载均衡、SSL终结和多流量处理等。这使得我们可以更好地管理和控制流量,提高服务的可用性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值