您当前的位置:首页 > 网站建设 > 网站维护
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax | jQuery |

k8s部署Ingress并创建规则的详细介绍

51自学网 2022-07-22 18:49:38
  网站维护

一、Ingress介绍

  1. Ingress由两部分组成:Ingress controller和Ingress服务
  2. 通过 Service 发现 Pod 进行关联。基于域名访问
  3. 通过 Ingress Controller 实现 Pod 负载均衡
  4. 支持 TCP/UDP 4 层负载均衡和 HTTP 7 层负载均衡
  5. 底层实现是nignx

在这里插入图片描述

在这里插入图片描述

二、Ingress文件获取

1.1 、说明

官方地址:https://github.com/kubernetes/ingress-nginx

部署文件说明

## 这个地址被墙,需要科学上网!!!# mandatory.yaml为ingress所有资源yml文件的集合# 若是单独部署,需要分别下载configmap.yaml、namespace.yaml、rbac.yaml、service-nodeport.yaml、with-rbac.yamlwget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml# service-nodeport.yaml为ingress通过nodeport对外提供服务,注意默认nodeport暴露端口为随机,可以编辑该文件自定义端口wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/service-nodeport.yaml

1.2 、文件内容

ingress-controller.yaml

apiVersion: v1kind: Namespacemetadata:  name: ingress-nginx  labels:    app.kubernetes.io/name: ingress-nginx    app.kubernetes.io/part-of: ingress-nginx---kind: ConfigMap  name: nginx-configuration  namespace: ingress-nginx  name: tcp-services  name: udp-serviceskind: ServiceAccount  name: nginx-ingress-serviceaccountapiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRole  name: nginx-ingress-clusterrolerules:  - apiGroups:      - ""    resources:      - configmaps      - endpoints      - nodes      - pods      - secrets    verbs:      - list      - watch      - get      - services      - "extensions"      - ingresses      - events      - create      - patch      - ingresses/status      - updatekind: Role  name: nginx-ingress-role      - namespaces    resourceNames:      # Defaults to "<election-id>-<ingress-class>"      # Here: "<ingress-controller-leader>-<nginx>"      # This has to be adapted if you change either parameter      # when launching the nginx-ingress-controller.      - "ingress-controller-leader-nginx"kind: RoleBinding  name: nginx-ingress-role-nisa-bindingroleRef:  apiGroup: rbac.authorization.k8s.io  kind: Rolesubjects:  - kind: ServiceAccount    name: nginx-ingress-serviceaccount    namespace: ingress-nginxkind: ClusterRoleBinding  name: nginx-ingress-clusterrole-nisa-binding  kind: ClusterRoleapiVersion: apps/v1kind: DaemonSet   name: nginx-ingress-controllerspec:  selector:    matchLabels:      app.kubernetes.io/name: ingress-nginx      app.kubernetes.io/part-of: ingress-nginx  template:    metadata:      labels:        app.kubernetes.io/name: ingress-nginx        app.kubernetes.io/part-of: ingress-nginx      annotations:        prometheus.io/port: "10254"        prometheus.io/scrape: "true"    spec:      hostNetwork: true      serviceAccountName: nginx-ingress-serviceaccount      containers:        - name: nginx-ingress-controller          image: siriuszg/nginx-ingress-controller:0.20.0          args:            - /nginx-ingress-controller            - --configmap=$(POD_NAMESPACE)/nginx-configuration            - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services            - --udp-services-configmap=$(POD_NAMESPACE)/udp-services            - --publish-service=$(POD_NAMESPACE)/ingress-nginx            - --annotations-prefix=nginx.ingress.kubernetes.io          securityContext:            allowPrivilegeEscalation: true            capabilities:              drop:                - ALL              add:                - NET_BIND_SERVICE            # www-data -> 33            runAsUser: 33          env:            - name: POD_NAME              valueFrom:                fieldRef:                  fieldPath: metadata.name            - name: POD_NAMESPACE                  fieldPath: metadata.namespace          ports:            - name: http              containerPort: 80            - name: https              containerPort: 443          livenessProbe:            failureThreshold: 3            httpGet:              path: /healthz              port: 10254              scheme: HTTP            initialDelaySeconds: 10            periodSeconds: 10            successThreshold: 1            timeoutSeconds: 10          readinessProbe:kind: Service  #type: NodePort  ports:  - name: http    port: 80    targetPort: 80    protocol: TCP  - name: https    port: 443    targetPort: 443

三、k8s应用 ingress-controller.yaml

应用

kubectl apply -f ingress-controller.yaml 

如图:

在这里插入图片描述

查看是否完成

kubectl get pods --all-namespaces

在这里插入图片描述

四、创建Ingress规则

如果没有部署和服务==>查看k8s部署并映射tomcat8

查看自己创建的服务,以tomcat8为例

kubectl get all

自己创建文件 ingress-tomcat8.yaml

vi ingress-tomcat8.yaml

ingress-tomcat8.yaml规则内容

apiVersion: extensions/v1beta1kind: Ingressmetadata:  name: webspec:  rules:   - host: k8s.tomcat8.com    http:      paths:        - backend:           serviceName: tomcat8           servicePort: 80

如图:

在这里插入图片描述

五、应用文件

kubectl apply -f ingress-tomcat8.yaml

在这里插入图片描述

六、访问

1.本地测试用域名会访问不到,所以要配置下本地hosts文件

hosts文件位置:C:/Windows/System32/drivers/etc/HOSTS

如图:

在这里插入图片描述

不带端口访问,直接使用域名

在这里插入图片描述

使用ip端口访问的效果

在这里插入图片描述


下载地址:
docker-compose+nginx部署前后端分离的项目实践
关于nginx
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1