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個地址,
 
三、選擇節點和安裝鏡像
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添加宿主機的端口:

 

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

 

 最後的文件內容請下載:

https://files.cnblogs.com/files/puzi0315/nginx-ingress%E9%AB%98%E5%8F%AF%E7%94%A8.zip

 

五、執行

 

kubectl apply -f deploy.yaml

等2-3分鐘。

查看pods情況:

kubectl get pods  -n ingress-nginx -owide

 

 到此, nginx-ingress-controller 安裝完畢,接下來開始對  nginx-ingress-controller 實現高可用。

我們通過 keepalive+nginx 實現 nginx-ingress-controller 高可用!
 內容太多,請看下一篇!
 
 

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

鏈接:https://pan.baidu.com/s/1oRvhN2_nfVT2ndE2VEN2QQ
提取碼:muxx 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章