0
点赞
收藏
分享

微信扫一扫

k8s- nginx ingress 高可用部署(最新版,支持 k8s 1.22---1.19)第一篇

一、找安装的yaml文件

ingress-nginx的官网地址为:

​​https://github.com/kubernetes/ingress-nginx​​

我们可以找到安装的yaml文件,网址为:

​​https://github.com/kubernetes/ingress-nginx/tree/main/deploy/static/provider/baremetal​​

文件为:deploy.yaml

下载到本地。

 

二、找镜像

 1、从deploy.yaml文件里,我们可以看到,需要2个镜像。

nginx-ingress-controller 

kube-webhook-certgen

2、我们可以去阿里云镜像仓库下载(yaml里的地址是需要 上外网才可以下载)。

我们找到2个地址,

​​https://cr.console.aliyun.com/images/cn-hangzhou/google_containers/nginx-ingress-controller/detail​​

 

​​https://cr.console.aliyun.com/images/cn-hangzhou/google_containers/kube-webhook-certgen/detail​​


 

三、选择节点和安装镜像

1、 我们计划将3个worker节点上安装nginx ingress,搭建高可用架构。

 

2、 这3台上都要下载这2个镜像。

 

下载镜像命令:

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.1.0



docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1

 3、将这3个worker节点都打上标签:

kubectl label node  k8s-node1  kubernetes.io/ingress=nginx


kubectl label node k8s-node2 kubernetes.io/ingress=nginx


kubectl label node k8s-node3 kubernetes.io/ingress=nginx

 

 四、修改deploy.yaml文件

将刚刚下载的deploy.yaml修改,修改完后上传到master节点。

1、分析该yaml文件,大概步骤有:

yaml里的步骤:
1、创建一个 Namespce,名为 ingress-nginx,下面的所有资源都在改命名空间下
2、创建一个 ServiceAccount,名为ingress-nginx
3、创建一个 ConfigMap,名为ingress-nginx-controller
4、创建一个 ClusterRole,名为 ingress-nginx
5、创建一个 ClusterRoleBinding,名为 ingress-nginx,与ClusterRole绑定,分配给 名称为ingress-nginx的 ServiceAccount
6、创建一个 Role,名为 ingress-nginx,
7、创建一个 RoleBinding,名称为 ingress-nginx,与6的Role绑定,分配给 名称为ingress-nginx的 ServiceAccount
8、创建一个 Service ,名称为 ingress-nginx-controller-admission,类型为CusterIP,对外暴露443 ,targetPort: webhook ----
9、创建一个 Service ,名称为 ingress-nginx-controller,对外暴露80,443, targetPort: http, targetPort: https
10、创建一个 Deployment,名称为 ingress-nginx-controller,副本为2,标签略, 给上面2个service匹配上了。hostNetwork: true
11、创建一个 ValidatingWebhookConfiguration,名称为 ingress-nginx-admission,
12、创建一个 ServiceAccount,名称为 ingress-nginx-admission
13、创建一个 ClusterRole,名称为 ingress-nginx-admission
14、创建一个 ClusterRoleBinding,名称为 ingress-nginx-admission ,与上面13的ClusterRole绑定,分配给12.
15、创建一个 Role,名称为 ingress-nginx-admission
16、创建一个 RoleBinding,名称为 ingress-nginx-admission,绑定15的role,分配给12
17、创建一个 Job,名称为 ingress-nginx ,
18、创建一个 Job,名称为 ingress-nginx-admission-patch

 

2、将镜像的地址修改微阿里云下载的镜像。(修改3处)

3、我们要将 nginx ingress controller分别部署在3个worker节点,每个节点一个应用,

(1)则要将 Deployment是ingress-nginx-controller的副本数改为3;

 (2)Deployment是ingress-nginx-controller利用亲和性和反亲和性等增加代码,以及dnsPolicy策略修改。

affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
app.kubernetes.io/name: ingress-nginx
topologyKey: kubernetes.io/hostname
dnsPolicy: ClusterFirstWithHostNet

(3)、ports添加宿主机的端口:

k8s- nginx ingress 高可用部署(最新版,支持 k8s 1.22---1.19)第一篇_nginx

 

 (4)Deployment是ingress-nginx-controller添加 hostNetwork: true

 

k8s- nginx ingress 高可用部署(最新版,支持 k8s 1.22---1.19)第一篇_高可用_02

 最后的文件内容请下载:

 链接:https://pan.baidu.com/s/1oRvhN2_nfVT2ndE2VEN2QQ
提取码:muxx 

 

五、执行

 

kubectl apply -f deploy.yaml

等2-3分钟。

查看pods情况:

kubectl get

k8s- nginx ingress 高可用部署(最新版,支持 k8s 1.22---1.19)第一篇_高可用_03

 

 到此, nginx-ingress-controller 安装完毕,接下来开始对  nginx-ingress-controller 实现高可用。

我们通过 keepalive+nginx 实现 nginx-ingress-controller 高可用!

内容太多,请看下一篇!


 

教程中涉及到的文件可以下载:

链接:https://pan.baidu.com/s/1oRvhN2_nfVT2ndE2VEN2QQ
提取码:muxx 

 


作者:沐雪



举报

相关推荐

0 条评论