首页天道酬勤ingress作用,ingress和ingress controller

ingress作用,ingress和ingress controller

admin 08-18 00:28 274次浏览

1 Ingress概念
通俗来讲,ingress和之前提到的Service、Deployment,也是一个k8s的资源类型,ingress用于实现用域名的方式访问k8s内部应用。

Ingress为Kubernetes集群中的服务提供了入口,可以提供负载均衡、SSL终止和基于名称的虚拟主机,在生产环境中常用的Ingress有Treafik、Nginx、HAProxy、Istio等。

基本概念
在Kubernetesv 1.1版中添加的Ingress用于从集群外部到集群内部Service的HTTP和HTTPS路由,流量从Internet到Ingress再到Services最后到Pod上,通常情况下,Ingress部署在所有的Node节点上。

Ingress可以配置提供服务外部访问的URL、负载均衡、终止SSL,并提供基于域名的虚拟主机。但Ingress不会暴露任意端口或协议。

2 Ingress安装
首先安装helm管理工具:
https://helm.sh/docs/intro/install/

Helm下载地址

https://get.helm.sh/helm-v3.4.1-linux-amd64.tar.gz

Helm安装

[root@master01 ~]# tar xf helm-v3.4.1-linux-amd64.tar.gz

[root@master01 ~]# mv linux-amd64/helm /usr/local/bin/helm

查看helm的版本

[root@master01 ~]# helm version一.1 Ingress概念

通俗来讲,ingress和之前提到的Service、Deployment,也是一个k8s的资源类型,ingress用于实现用域名的方式访问k8s内部应用。

Ingress为Kubernetes集群中的服务提供了入口,可以提供负载均衡、SSL终止和基于名称的虚拟主机,在生产环境中常用的Ingress有Treafik、Nginx、HAProxy、Istio等。

使用helm安装ingress:
https://kubernetes.github.io/ingress-nginx/deploy/#using-helm

添加ingress的helm仓库

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx

查看repo源

查看ingress-nginx的版本

[root@master01 ~]# helm search repo ingress-nginx

下载ingress的helm包至本地

helm pull ingress-nginx/ingress-nginx

更改对应的配置

[root@master01 ~]# mkdir temp

[root@master01 ~]# mv ingress-nginx-3.13.0.tgz temp/

[root@master01 ~]# cd temp/

[root@master01 temp]# tar xf ingress-nginx-3.13.0.tgz

[root@master01 temp]# cd ingress-nginx

[root@master01 ingress-nginx]# ls

CHANGELOG.md Chart.yaml ci OWNERS README.md templates values.yaml

[root@master01 ingress-nginx]#vim values.yaml

需要修改的位置

a) Controller和admissionWebhook的镜像地址,需要将公网镜像同步至公司内网镜像仓库

b) hostNetwork设置为true

c) dnsPolicy设置为 ClusterFirstWithHostNet

d) NodeSelector添加ingress: "true"部署至指定节点

e) 类型更改为kind: DaemonSet

修改内容如下

6 repository: quay.io/kubernetes-ingress-controller/nginx-ingress-controller

tag: “0.32.0”

38 dnsPolicy: ClusterFirstWithHostNet

47 hostNetwork: true

133 kind: DaemonSet

231 nodeSelector:

232 kubernetes.io/os: linux

233 ingress: “true”

380 type: ClusterIP

471 repository: registry.cn-beijing.aliyuncs.com/dotbalo/kube-webhook- certgen

部署ingress

给需要部署ingress的节点上打标签

kubectl label node master02 ingress=true

kubectl create ns ingress-nginx

helm install ingress-nginx -n ingress-nginx .

查看pod

1 Ingress入门使用
在创建ingress之前,确保之前创建的service可以使用

创建一个ingress:

创建一个ingress:

cat ingress.yaml

apiVersion: networking.k8s.io/v1beta1

kind: Ingress

metadata:

annotations: #此处不是注释,是告诉ingress如何配置nginx配置文件

kubernetes.io/ingress.class: “nginx”

name: example

spec:

rules: # 一个Ingress可以配置多个rules

host: foo.bar.com # 域名配置,不写默认匹配*, *.bar.com

http:

paths: # 相当于nginx的location配合,同一个host可以配置多个path / /abc

backend:

serviceName: nginx-svc

servicePort: 80

path: /

[root@master01 ~]# kubectl create -f ingress.yaml

ingress.networking.k8s.io/example created


给域名foo.bar.com添加hosts文件

192.168.100.203 foo.bar.com #必须是ingress所在节点

查看ingress中nginx的配置文件


/etc/nginx $ grep “foo.bar.com” nginx.conf -A 40 #查看这一行的后40行

创建一个多域名ingress

cat ingress-mulDomain.yaml

apiVersion: networking.k8s.io/v1beta1 # networking.k8s.io/v1 / extensions/v1beta1

kind: Ingress

metadata:

annotations:

kubernetes.io/ingress.class: “nginx”

name: example

spec:

rules: # 一个Ingress可以配置多个rules

host: foo.bar.com # 域名配置,可以不写,匹配*, *.bar.com

http:

paths: # 相当于nginx的location配合,同一个host可以配置多个path / /abc

backend:

serviceName: nginx-svc

servicePort: 80

path: /

host: foo2.bar.com # 域名配置,可以不写,匹配*, *.bar.com

http:

paths: # 相当于nginx的location配合,同一个host可以配置多个path / /abc

backend:

serviceName: nginx-svc-external

servicePort: 80

path: /

整体访问流程图如下:

Paste Image插件在字符串中搜索符合特定条件的子字符串html5中marquee标签如何用
实时并行计算机仿真系统 — Concurrent iHawk,计算机组装与维护仿真系统 ingress k8s原理,ingress timeout streamID=8什么意思
相关内容