我々は、バックエンドを行うにはポッドためKubernetes進入nginxのプロキシに配備2つのワーカーノードを指定すると仮定し、今回は外部のVIPを提供し、keepalivedのことで、高可用性を実現する必要があります
まず、我々は最初に必ず入口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.ブラウザのテストアクセス
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
再び訪問