kubernetes配備ingress+keepalived高可用性
kubernetesバージョン:1.17.3(クイックインストール:https://blog.csdn.net/w50feng/article/details/106470888)
ingress定義
Ingressは、クラスタ外部からクラスタ内サービスへのHTTPおよびHTTPSルーティングを開示する.トラフィック・ルーティングは、Ingressリソースで定義されたルールによって制御されます.詳細については、公式ドキュメントを参照してください.https://v1-17.docs.kubernetes.io/zh/docs/concepts/services-networking/ingress/
keepalivedの紹介:
Keepalivedは、負荷バランスと高可用性のためのフレームワークを提供します.ロード・バランシング・フレームワークは、4階層目のロード・バランシングを提供する、よく知られているLinux仮想サーバ(IPVS)カーネル・モジュールに依存します.Keepalivedは、負荷バランスのとれたサーバプールを動的かつ適応的に維持および管理するために、稼働状況チェックのセットを実装します.仮想冗長ルーティングプロトコル(VRRP)は、高可用性を実現します.VRRPはルータのフェイルオーバの基礎レンガです.さらにkeepalivedはVRRP有限状態機のフックのセットを実現し,低レベルおよび高速プロトコルインタラクションを提供する.各Keepalivedフレームワークは、独立して使用することも、フレキシブルインフラストラクチャを提供するために一緒に使用することもできます.公式文書を添付:https://www.keepalived.org/doc/index.html
ingressの導入:
ingressをインストールする必要があるnodeにラベルを付けます.例えばnode 01とnode 02です.
kubectl label nodes node01 ingress=true
kubectl label nodes node02 ingress=true
クエリーlabel:kubectl get node--show-labels
ingressのyamlファイルのダウンロード:https://github.com/kubernetes/ingress-nginx/blob/nginx-0.30.0/deploy/static/mandatory.yaml
ファイルの変更:
kind:Deploymentをkind:DaemonSetに変更注記#spec.replicas:1;spec.spec内追加構成:hostNetwork:true#hostNetwork:trueを使用してネットワークを構成し、podで実行されているアプリケーションはホストホストのネットワークインタフェースを直接見ることができ、ホストが存在するローカルエリアネットワーク上のすべてのネットワークインタフェースはこのアプリケーションdnsPolicy:ClusterFirstWithHostNet#にアクセスすることができる.この設定はPODが使用するk 8 sのdnsである.dnsPolicy:ClusterFirstWithHostNetを追加しない場合、podはホストホストで使用されているDNSをデフォルトで使用します.これにより、コンテナ内でservice nameを介してk 8 sクラスタ内の他のPOD nodeSelector:ingress:'true'#nodeラベルにアクセスできなくなります.
実行ファイル:kubectl apply-f mandatory 1.yaml
pod起動状態の表示:kubectl get pod-n ingress-nginx
、
dashboardデプロイメントnodeがnode 01とnode 02であることを確認
keepalivedインストール:
Node 01とnode 02 yumを使用してインストール:yum install keepalived-y
プロファイルの変更、node 01がMASTER、node 02がBACKUP
vi/etc/keepalived/keepalived.conf
keepalivedの起動:systemctl start keepalived
自己起動:systemctl enable keepalived
クエリーVIP:node 01にVIPが表示され、node 02にはありません
node01:
node02:
検証VIPフローティング、node 01を切断、vipフローティングnode 02、検証に成功
注意:スクリプトモニタリングingressステータスを追加し、その後更新します.の
検証ingree+vip:
vim nginx.yaml
アプリケーションの起動:kubectl apply-f nginx.yaml
podステータスの表示
クライアントのhostsファイルの変更(windowsパス:C:WindowsSystem 32driversetc):
192.168.2.11 test.nginx.com
ブラウザテスト、アクセス成功:
--------日常記録----------
ingress定義
Ingressは、クラスタ外部からクラスタ内サービスへのHTTPおよびHTTPSルーティングを開示する.トラフィック・ルーティングは、Ingressリソースで定義されたルールによって制御されます.詳細については、公式ドキュメントを参照してください.https://v1-17.docs.kubernetes.io/zh/docs/concepts/services-networking/ingress/
keepalivedの紹介:
Keepalivedは、負荷バランスと高可用性のためのフレームワークを提供します.ロード・バランシング・フレームワークは、4階層目のロード・バランシングを提供する、よく知られているLinux仮想サーバ(IPVS)カーネル・モジュールに依存します.Keepalivedは、負荷バランスのとれたサーバプールを動的かつ適応的に維持および管理するために、稼働状況チェックのセットを実装します.仮想冗長ルーティングプロトコル(VRRP)は、高可用性を実現します.VRRPはルータのフェイルオーバの基礎レンガです.さらにkeepalivedはVRRP有限状態機のフックのセットを実現し,低レベルおよび高速プロトコルインタラクションを提供する.各Keepalivedフレームワークは、独立して使用することも、フレキシブルインフラストラクチャを提供するために一緒に使用することもできます.公式文書を添付:https://www.keepalived.org/doc/index.html
ingressの導入:
ingressをインストールする必要があるnodeにラベルを付けます.例えばnode 01とnode 02です.
kubectl label nodes node01 ingress=true
kubectl label nodes node02 ingress=true
クエリーlabel:kubectl get node--show-labels
ingressのyamlファイルのダウンロード:https://github.com/kubernetes/ingress-nginx/blob/nginx-0.30.0/deploy/static/mandatory.yaml
ファイルの変更:
kind:Deploymentをkind:DaemonSetに変更注記#spec.replicas:1;spec.spec内追加構成:hostNetwork:true#hostNetwork:trueを使用してネットワークを構成し、podで実行されているアプリケーションはホストホストのネットワークインタフェースを直接見ることができ、ホストが存在するローカルエリアネットワーク上のすべてのネットワークインタフェースはこのアプリケーションdnsPolicy:ClusterFirstWithHostNet#にアクセスすることができる.この設定はPODが使用するk 8 sのdnsである.dnsPolicy:ClusterFirstWithHostNetを追加しない場合、podはホストホストで使用されているDNSをデフォルトで使用します.これにより、コンテナ内でservice nameを介してk 8 sクラスタ内の他のPOD nodeSelector:ingress:'true'#nodeラベルにアクセスできなくなります.
実行ファイル:kubectl apply-f mandatory 1.yaml
pod起動状態の表示:kubectl get pod-n ingress-nginx
、
dashboardデプロイメントnodeがnode 01とnode 02であることを確認
keepalivedインストール:
Node 01とnode 02 yumを使用してインストール:yum install keepalived-y
プロファイルの変更、node 01がMASTER、node 02がBACKUP
vi/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id k8singress # ,
}
vrrp_instance VI_1 {
state MASTER # ,node01 MASTER,node02 BACKUP
interface eth0 #vip
virtual_router_id 66 # master backup ,id
priority 120 # , master;node01 120,node02 110
advert_int 1 #
authentication {
auth_type PASS #
auth_pass 1111 #
}
virtual_ipaddress {
192.168.2.11 # ip
}
}
keepalivedの起動:systemctl start keepalived
自己起動:systemctl enable keepalived
クエリーVIP:node 01にVIPが表示され、node 02にはありません
node01:
node02:
検証VIPフローティング、node 01を切断、vipフローティングnode 02、検証に成功
注意:スクリプトモニタリングingressステータスを追加し、その後更新します.の
検証ingree+vip:
vim nginx.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx-test
namespace: ingress-nginx
labels:
name: nginx-test
spec:
replicas: 1
template:
metadata:
labels:
name: nginx-test
spec:
containers:
- name: nginx-test
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-test
namespace: ingress-nginx
labels:
name: nginx-test
spec:
type: ClusterIP
ports:
- port: 80
protocol: TCP
targetPort: 80
name: http
selector:
name: nginx-test
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-test
namespace: ingress-nginx
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: test.nginx.com
http:
paths:
- path:
backend:
serviceName: nginx-test
servicePort: 80
アプリケーションの起動:kubectl apply-f nginx.yaml
podステータスの表示
クライアントのhostsファイルの変更(windowsパス:C:WindowsSystem 32driversetc):
192.168.2.11 test.nginx.com
ブラウザテスト、アクセス成功:
--------日常記録----------