外国电商设计网站有哪些怎么制作网站接口
Ingress
Kubernetes使用了一个Ingress策略定义和一个具体提供转发服务的Ingress Controller,两者结合,实现了基于灵活Ingress策略定义的服务路由功能。如果是对Kubernetes集群外部的客户端提供服务,那么IngressController实现的是类似于边缘路由器(Edge Router)的功能。需要注意的是,Ingress只能以HTTP和HTTPS提供服务,对于使用其他网络协议的服务,可以通过设置Service的类型(type)为NodePort或LoadBalancer对集群外部的客户端提供服务。
Ingress为Kubernetes集群中的服务提供了入口,可以提供负载均衡、SSL终止和基于名称(域名)的虚拟主机、应用的灰度发布等功能,在生产环境中常用的Ingress控制器有Treafik、Nginx、HAProxy、Istio等。


 

一、 Ingress Controller 安装
官方安装文档:https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal-clusters
两种方式:
A. 官方手册,用裸金属方式,helm安装。但是镜像地址需要修改image的地址。
自己部署管理的kubernetes,建议使用helm安装。
B. 使用提供的文件
 本次采用第二种方式安装
 
开始安装
[root@k8s-master01 Pra]#kubectl create -f deploy-nginx.yaml
namespace/ingress-nginx created
serviceaccount/ingress-nginx created
serviceaccount/ingress-nginx-admission created
role.rbac.authorization.k8s.io/ingress-nginx created
role.rbac.authorization.k8s.io/ingress-nginx-admission created
clusterrole.rbac.authorization.k8s.io/ingress-nginx created
clusterrole.rbac.authorization.k8s.io/ingress-nginx-admission created
rolebinding.rbac.authorization.k8s.io/ingress-nginx created
rolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx created
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
configmap/ingress-nginx-controller created
service/ingress-nginx-controller created
service/ingress-nginx-controller-admission created
deployment.apps/ingress-nginx-controller created
job.batch/ingress-nginx-admission-create created
job.batch/ingress-nginx-admission-patch created
ingressclass.networking.k8s.io/nginx created
validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission created 
[root@k8s-master01 Pra]#kubectl get po -n ingress-nginx
NAME                                        READY   STATUS      RESTARTS   AGE
ingress-nginx-admission-create-mpsc9        0/1     Completed   0          64s
ingress-nginx-admission-patch-k4gpl         0/1     Completed   0          64s
ingress-nginx-controller-674f66cf96-hznf4   1/1     Running     0          64s# 看见controller 变成1/1就完成了。
 
二、使用域名发布 K8s 的服务
创建一个 web 服务:
# kubectl create deploy nginx --image=registry.cn-beijing.aliyuncs.com/dotbalo/nginx:1.15.12
 
暴露服务:
# kubectl expose deploy nginx --port 80 --name my-service
 
创建 Ingress:
[root@k8s-master01 Pra] # vim web-ingress.yaml
apiVersion: networking.k8s.io/v1   # k8s >= 1.22 必须使用 v1
kind: Ingress
metadata:name: nginx-ingress              # ingress的名称,要见名知意
spec:ingressClassName: nginx          # 关于ingress的描述,表述用的nginx的controller rules:                           # 下面的一些规则- host: nginx.test.com           # 基于域名的访问,域名配置,可以不写,匹配*   *.bar.comhttp:paths:                       # 相当于nginx的lacation配合,同一个host可以配置多个path- backend:service:name: my-service       # service的名称port:number: 80           # service的端口号path: /pathType: ImplementationSpecific# 带 - 的可以重复,意识是可以有多个
 
生成yaml文件:
[root@k8s-master01 Pra]#kubectl create -f web-ingress.yaml
ingress.networking.k8s.io/nginx-ingress created
[root@k8s-master01 Pra]#kubectl get ingress
NAME            CLASS   HOSTS            ADDRESS   PORTS   AGE
nginx-ingress   nginx   nginx.test.com             80      11s# 查看用的什么控制器,可以看见,此处用的nginx controller
[root@k8s-master01 Pra]#kubectl get ingressclasses
NAME    CONTROLLER             PARAMETERS   AGE
nginx   k8s.io/ingress-nginx   <none>       65m 
查看结果
[root@k8s-master01 Pra]#kubectl get svc -n ingress-nginx
NAME                                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller             NodePort    10.96.56.221   <none>        80:30784/TCP,443:32602/TCP   22h
ingress-nginx-controller-admission   ClusterIP   10.96.103.51   <none>        443/TCP                      22h# 可以看见 ingress-nginx的命名空间内的ingress-nginx-controller service,端口指向80:30784
 
注意:不是ingress-nginx-controller的CLUSTER-IP地址,因为访问不到。也不是kubectl get ingress结果的地址。是任意一台宿主机的地址。因为ingress-nginx-controller的类型是NodePort。
ingress-nginx-controller的类型是NodePort
 
主机添加dns解析
任意一台宿主机地址 + nginx.test.com

web登录访问,正常

三、Ingress相关配置解释
1、pathType解释
1). Exact(精确匹配)
-  
定义
 
