Kubernetesイングレス-nginxの高可用性

我々は、バックエンドを行うにはポッドためKubernetes進入nginxのプロキシに配備2つのワーカーノードを指定すると仮定し、今回は外部のVIPを提供し、keepalivedのことで、高可用性を実現する必要があります

Kubernetesイングレス-nginxの高可用性

まず、我々は最初に必ず入口nginxの展開2つのワーカーノードが存在することを確認する必要があり
、次のようにこの実験では、環境は次のとおりです。

IPアドレス ホスト名 説明
10.0.0.31 K8S-master01
10.0.0.34 K8S-とnode02 keepalivedの進入nginxの、
10.0.0.35 K8S-node03の keepalivedの進入nginxの、

1、ステータス入口nginxのを見ます

[root@k8s-master01 Ingress]# kubectl get pod -n ingress-nginx -o wide
NAME                                        READY   STATUS    RESTARTS   AGE     IP          NODE         NOMINATED NODE   READINESS GATES
nginx-ingress-controller-85bd8789cd-8c4xh   1/1     Running   0          62s     10.0.0.34   k8s-node02   <none>           <none>
nginx-ingress-controller-85bd8789cd-mhd8n   0/1     Pending   0          3s      <none>      <none>       <none>           <none>
nginx-ingress-controller-85ff8dfd88-vqkhx   1/1     Running   0          3m56s   10.0.0.35   k8s-node03   <none>           <none>

テスト環境の名前空間を作成します。

 kubectl  create namespace test

図2に示すように、展開(テスト用)の展開

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myweb-deploy
  # 部署在测试环境
  namespace: test
spec:
  replicas: 3
  selector:
    matchLabels:
      name: myweb
      type: test
  template:
    metadata:
      labels:
        name: myweb
        type: test
    spec:
      containers:
      - name: nginx
        image: nginx:1.13
        imagePullPolicy: IfNotPresent
        ports:
          - containerPort: 80
---
# service
apiVersion: v1
kind: Service
metadata:
  name: myweb-svc
spec:
  selector:
    name: myweb
    type: test
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
---
# ingress

実行は、展開を作成作成kubectl

kubectl  create -f myweb-demo.yaml

展開が成功した展開であるかどうかを確認してください

[root@k8s-master01 Project]# kubectl get pods -n test -o wide | grep "myweb"
myweb-deploy-6d586d7db4-2g5ll   1/1     Running   0          23s     10.244.3.240   k8s-node02   <none>           <none>
myweb-deploy-6d586d7db4-cf7w7   1/1     Running   0          4m2s    10.244.1.132   k8s-node01   <none>           <none>
myweb-deploy-6d586d7db4-rp5zc   1/1     Running   0          3m59s   10.244.2.5     k8s-node03   <none>           <none>

3は、2つのワーカーノードに展開keepalivedの
VIP:10.0.0.130、インターフェース:eth0のを

keepalivedのをインストールします。1.

yum -y install keepalived

マスタノードとして構成1.k8s、node03のkeepalivedの

[root@k8s-node03 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email_from [email protected]
   router_id k8s-node03
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 110
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.130/24 dev eth0 label eth0:1
    }
}

keepalivedの構成として2.k8s、node03のノード

[root@k8s-node03 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id k8s-node03
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 110
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.130/24 dev eth0 label eth0:1
    }
}

3.k8s-node02でノード構成keeplived

[root@k8s-node02 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id k8s-node02
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
      10.0.0.130/24 dev eth0 label eth0:1
    }
}

二つのノードを追加し、ブートはkeepalivedのを開始します。4.

systemctl start keepalived.service
systemctl enable keepalived.service 

起動後のIPアドレスは、完全なチェックK8S-node03の既存のVIPであるかどうか

[root@k8s-node03 ~]# ip add | grep "130"
    inet 10.0.0.130/24 scope global secondary eth0:1

5.設定したホスト上のhostsファイル、ドメイン名とIPの解決を達成するために

10.0.0.130 myweb.app.com

6.ブラウザのテストアクセス
Kubernetesイングレス-nginxの高可用性

4.テストVIPドリフト
keepalivedのプロセスのK8S-node03のが閉じている今は、VIPはK8S-とnode02にドリフトするだろう

[root@k8s-node03 ~]# systemctl stop keepalived.service

// 在k8s-node02上查看VIP
[root@k8s-node02 ~]# ip add | grep "130"
    inet 10.0.0.130/24 scope global secondary eth0:1

再び訪問
Kubernetesイングレス-nginxの高可用性

おすすめ

転載: blog.51cto.com/12643266/2455788