米鼠商城

多快好省,买软件就上米鼠网

最新项目

人才服务

靠谱的IT人才垂直招聘平台

Ingress

  • xx
  • 8
  • 2020-05-23 08:03

总目录索引:k8s从入门到放弃系列

1、Ingress 介绍

    ingress是一个kubernetes资源,可让你为运行在kubernetes上的应用程序(由一个或多个[Services]表示)配置HTTP负载平衡器。这样的负载平衡器对于将这些应用程序交付给Kubernetes集群之外的客户端是必需的

ingress支持以下的路由:

    基于主机域名的路由

    基于服务路径的路由

 2、Ingress Controller

    Ingress  Controller是在群集中运行的应用程序,可根据Ingress资源配置HTTP负载平衡器。负载平衡器可以是群集中运行的软件负载平衡器,也可以是外部运行的硬件或云负载平衡器。

不同的负载平衡器需要不同的Ingress    Controller实现。

3、安装NGINX Ingress Controller

拉取yaml文件

git clone https://github.com/nginxinc/kubernetes-ingress/

cd kubernetes-ingress / deployments

git checkout v1.7.0

3.1 配置RBAC

kubectl apply -f common/ns-and-sa.yaml         #为Ingress控制器创建名称空间和服务帐户

kubectl apply -f rbac/rbac.yaml                #为服务帐户创建集群角色和集群角色绑定

3.2 创建公共资源

kubectl apply -f common/default-server-secret.yaml          #创建一个包含TLS证书和密钥的密钥

kubectl apply -f common/nginx-config.yaml                   #用于自定义NGINX配置的配置图

#为VirtualServer和VirtualServerRoute和TransportServer资源创建自定义资源定义

kubectl apply -f common/vs-definition.yaml                  

kubectl apply -f common/vsr-definition.yaml

kubectl apply -f common/ts-definition.yaml

3.3  使用Ingress Controller的TCP和UDP负载平衡功能,请创建以下附加资源:

    **功能状态**:TransportServer和GlobalConfiguration资源可作为预览功能使用:它适合进行实验和测试;但是,在生产环境中必须谨慎使用

kubectl apply -f common/gc-definition.yaml            #为GlobalConfiguration资源创建一个自定义资源定义

kubectl apply -f common/global-configuration.yaml     #创建一个GlobalConfiguration资源

3.4  使用Deploy部署Ingress Controller

kubectl apply -f deployment/nginx-ingress.yaml

kubectl get pod -n nginx-ingress           #查看是否运行成功

3.5  为Ingress Controller Pod创建服务

kubectl create -f service/nodeport.yaml

3.6  卸载相关应用

kubectl delete namespace nginx-ingress

kubectl delete clusterrole nginx-ingress

kubectl delete clusterrolebinding nginx-ingress

4、使用helm安装

helm repo add nginx-stable https://helm.nginx.com/stable

helm repo update

helm install nginx nginx-stable/nginx-ingress

查看svc会发现状态时pending,需要修改type为NodePort

5、使用hostnetwork

kubectl edit deploy -n dev nginx-nginx-ingress

修改完成后,重启成功在宿主机telnet   宿主机IP加ingress的nodeport,能通则说名成功了

6、配置本地访问

6.1  部署一个deploy和svc

cat  test.yaml
apiVersion: v1
kind: Service
metadata:
  name: test-service
  labels:
    app: test
spec:
  ports:
  - name: http
    nodePort:
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: test
  sessionAffinity: None
  type: NodePort
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: test-tomcat
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - name: test
        image: docker.io/kubeguide/tomcat-app:v1
        imagePullPolicy: IfNotPresent #Always
        ports:
        - containerPort: 8080

6.2  创建ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: tomcat-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: hello.hello.com
    http:
      paths:
      - path: /
        backend:
          serviceName: test-service
          servicePort: 8080

查询创建的ingress

kubectl get ing

因为 ingress 中设置了域名 hello.hello.com,所以需要在浏览器所在的机器上设置 dns。我的IP是192.168.10.11

确定ingress的对外端口

在浏览器访问:hello.hello.com:30042,我这里是在宿主机curl,即可以看见tomcat的环境界面了



这里给大家推荐一个在线软件复杂项交易平台:米鼠网 https://www.misuland.com

米鼠网自成立以来一直专注于从事软件项目人才招聘软件商城等,始终秉承“专业的服务,易用的产品”的经营理念,以“提供高品质的服务、满足客户的需求、携手共创双赢”为企业目标,为中国境内企业提供国际化、专业化、个性化、的软件项目解决方案,我司拥有一流的项目经理团队,具备过硬的软件项目设计和实施能力,为全国不同行业客户提供优质的产品和服务,得到了客户的广泛赞誉。

猜你喜欢

评论留言