kuberenetes 的多节点集群与高可用配置

kuberenetes 的多节点集群与高可用配置

标签(空格分隔): kubernetes系列


  • 一: kubernetes master 节点的 高可用
  • 二: 配置nginx 服务器
  • 三: 配置nginx 的LB 的 keepalived 高可用

一: kubernetes master 节点的 高可用

kubernetes 的多master集群架构

kubernetes 高可用主要在于apiserver

部署master01  IP 地址: 192.168.100.12 

在 192.168.100.12 部署与 master01 一样的 服务

scp -r /opt/kubernetes/ [email protected]:/opt/

scp -r /opt/etcd/ [email protected]:/opt/

scp /usr/bin/kubectl [email protected]:/usr/bin/

scp /usr/lib/systemd/system/kube-* [email protected]:/usr/lib/systemd/system/


修改 配置文件
cd /opt/kubernetes/cfg 

vim kube-apiserver 

---
--bind-address=192.168.100.12

--advertise-address=192.168.100.12

启动服务:

service kube-apiserver start

service kube-controller-manager start

service kube-scheduler start


login :
    192.168.20.12

kubectl get cs

配置负载均衡nginx

nginx 服务器 地址: 192.168.100.15
nginx 的yum 包地址

http://nginx.org/en/linux_packages.html

cd /etc/yum.repos.d/

vim  nginx.repo
---
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key

---
yum install nignx 



cd /etc/nginx/
vim nginx.conf 

增加:
---
stream {
    log_format main "$remote_addr $upstream_addr $time_local $status";
    access_log /var/log/nginx/k8s-access.log main;
    upstream k8s-apiserver {

            server 192.168.100.11:6443;
            server 192.168.100.12:6443;

      }
    server {

           listen 192.168.100.15:6443;
           proxy_pass k8s-apiserver;

     }

}

···

修改node 节点的 master 服务器指向
login : 192.168.20.13
cd /opt/kubernetes/cfg/

vim bootstrap.kubeconfig

---
server: https://192.168.100.11:6443  改成:

server: https://192.168.100.15:6443
---

vim kubelet.kubeconfig

----
server: https://192.168.100.11:6443  改成:

server: https://192.168.100.15:6443
----

vim kube-proxy.kubeconfig
----
server: https://192.168.100.11:6443  改成:

server: https://192.168.100.15:6443
----

scp bootstrap.kubeconfig kubelet.kubeconfig kube-proxy.kubeconfig [email protected]:/opt/kubernetes/cfg/

重新启动 node 节点的 kubelet 和 kube-proxy 

service kubelet restart
service kube-proxy restart


使用 主节点 配置 测试

kubectl get nodes

三: 配置nginx 的LB 的 keepalived 高可用

login 192.168.100.16 

安装nginx 服务器 同上 192.168.100.15 一样

修改 :

vim /etc/nginx/nginx.conf

----
stream {
    log_format main "$remote_addr $upstream_addr $time_local $status";
    access_log /var/log/nginx/k8s-access.log main;

    upstream k8s-apiserver {

            server 192.168.100.11:6443;
            server 192.168.100.12:6443;

      }
    server {

           listen 192.168.100.16:6443;
           proxy_pass k8s-apiserver;

     }

}
---

service nginx start 


配置keepalive 高可用 

yum install keepalived 

keepalived 的配置文件

cd /etc/keepalived/

vim keepalived.conf 

---
! Configuration File for keepalived 

global_defs {
   # 接收邮件地址
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   # 邮件发送地址
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id NGINX_MASTER
} 

vrrp_script check_nginx {
    script "/etc/keepalived/check_nginx.sh"
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51 # VRRP 路由 ID实例,每个实例是唯一的
    priority 100    # 优先级,备192.168.100.16服务器设置 90
    advert_int 1    # 指定VRRP 心跳包通告间隔时间,默认1秒
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.100.70/24
    }
    track_script {
        check_nginx
    }
}

----

配置 检查 nginx 进程 检查
cd /etc/keepalived/

vim check_nginx.sh

---

#!/bin/bash

count=$(ps -ef |grep nginx |egrep -cv "grep|$$")

if [ "$count" -eq 0 ];then
    /etc/init.d/keepalived stop
fi

---
service keepalived start 

ps -ef |grep keepalived 

cd /etc/keepalived

scp check_nginx.sh keepalived.conf [email protected]:/etc/keepalived/

login: 192.168.100.16 

cd /etc/keepalived/

vim keepalived.conf
---
改 priority 100  为 priority 90

----

serivice keepalived start 

ps -ef |grep keepalived 


改 node 节点的 IP 地址

修改node 节点的 master 服务器指向
login : 192.168.20.13
cd /opt/kubernetes/cfg/

vim bootstrap.kubeconfig

---
server: https://192.168.100.15:6443  改成:

server: https://192.168.100.70:6443
---

vim kubelet.kubeconfig

----
server: https://192.168.100.15:6443  改成:

server: https://192.168.100.70:6443
----

vim kube-proxy.kubeconfig
----
server: https://192.168.100.15:6443  改成:

server: https://192.168.100.70:6443
----

scp bootstrap.kubeconfig kubelet.kubeconfig kube-proxy.kubeconfig [email protected]:/opt/kubernetes/cfg/

重新启动 node 节点的 kubelet 和 kube-proxy 

service kubelet restart
service kube-proxy restart

login: 192.168.100.15
修改 nginx 的 配置文件

cd /etc/nginx/

vim nginx.conf
----
将linsten 192.168.100.15:6443  改为: 0.0.0.0:6443

----

service nginx restart 


login: 192.168.100.16
修改 nginx 的 配置文件

cd /etc/nginx/

vim nginx.conf
----
将linsten 192.168.100.16:6443  改为: 0.0.0.0:6443

----
service nginx restart 

去master01 节点上面查看

kubectl get svc 

kubectl get svc,pods -n kube-system --all-namespaces

去master02 节点上面查看

kubectl get svc 

kubectl get svc,pods -n kube-system --all-namespaces

原文地址:https://blog.51cto.com/flyfish225/2437775

时间: 2024-10-10 20:37:24

kuberenetes 的多节点集群与高可用配置的相关文章

RabbitMQ 集群与高可用配置

RabbitMQ 集群与高可用配置 集群概述 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收. 这些节点通过 RabbitMQ HA 队列(镜像队列)进行消息队列结构复制.本方案中搭建 3 个节点,并且都是磁盘节点(所有节点状态保持一致,节点完全对等),只要有任何一个节点能够工作,RabbitMQ 集群对外就能提供服务. 环境 · CentOS 6

(转)RabbitMQ 集群与高可用配置

集群概述 环境 配置步骤 集群概述 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收. 这些节点通过 RabbitMQ HA 队列(镜像队列)进行消息队列结构复制.本方案中搭建 3 个节点,并且都是磁盘节点(所有节点状态保持一致,节点完全对等),只要有任何一个节点能够工作,RabbitMQ 集群对外就能提供服务. 环境 CentOS 6.4,64位

浅谈web应用的负载均衡、集群、高可用(HA)解决方案(转)

1.熟悉几个组件 1.1.apache     —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安 全Socket层(SSL)等等,目前互联网主要使用它做静态资源服务器,也可以做代理服务器转发请求(如:图片链等),结合tomcat等 servlet容器处理jsp.1.2.ngnix     —— 俄罗斯人开发的一个高性能的 HTTP和反向代理服务器.由于Nginx 超越 Apache 的高性能和稳

keepalived实现LVS集群的高可用(1)

HA集群:高可用集群: 实现方式:vrrp协议和ais完备HA集群 vrrp可以由keepalived实现 ais可以由heartbeat和corosync vrrp协议:虚拟冗余路由协议 VRRP为虚拟路由冗余协议,目的就是为了解决静态路由单点故障问题.在一个VRRP虚拟路由器中,有多台物理的VRRP路由器,但是这多台的物理的机器并不能同时工作,而是由一台称为MASTER的负责路由工作,其它的都是BACKUP,MASTER并非一成不变,VRRP让每个VRRP路由器参与竞选,最终获胜的就是MAS

keepalived实现WEB服务集群的高可用负载均衡

要求:利用keepalived实现WEB服务集群的高可用负载均衡,即在lvs_dr模型中扮演director的角色,对来自用户的请求按照一定的算法分配至后端服务器中:且keepalived服务器可实现高可用. keepalived是vrrp协议的一种实现,专门为lvs设计,以实现对lvs高可用就集群中的dirctor进行冗余以及对realserver进行健康检测.当一台主机(MASTER)出现问题后,keepalived能够将VIP自动的分配到备用的主机上(BACKUP),从而实现了自身(dir

Memcached 集群的高可用(HA)架构

Memcache自身并没有实现集群功能,如果想用Memcahce实现集群需要借助第三方软件或者自己设计编程实现,这里将采用memagent代理实现,memagent又名magent,大家注意下,不要将这二者当成两种工具.至于memcache.magent的安装请参考文章  在Linux上安装Memcached服务和 magent编译安装及常见错误 整体架构 直接上图: 从图中可以看到有两个magent节点,两个memcached节点,每个magent节点又分别代理两个memcached节点,应用

Redis 哨兵集群实现高可用

哨兵的介绍 sentinel,中文名是哨兵.哨兵是 redis 集群机构中非常重要的一个组件,主要有以下功能: 集群监控:负责监控 redis master 和 slave 进程是否正常工作. 消息通知:如果某个 redis 实例有故障,那么哨兵负责发送消息作为报警通知给管理员. 故障转移:如果 master node 挂掉了,会自动转移到 slave node 上. 配置中心:如果故障转移发生了,通知 client 客户端新的 master 地址. 哨兵用于实现 redis 集群的高可用,本身

Redis集群与高可用

Redis集群 redis cluster 是redis官方提供的分布式解决方案,在3.0版本后推出的,有效地解决了redis分布式的需求,当一个redis节点挂了可以快速的切换到另一个节点.当遇到单机内存.并发等瓶颈时,可以采用分布式方案要解决问题. 分布式redis数据库 1.分区和槽slot redis cluster中有一个16384(2^4 * 2^10)长度的槽的概念.通过哈希算法再加上取模运算可以将一个值固定地映射到某个区间,区间由连续的slot组成. redis cluster采

在CentOS7上配置RabbitMQ 3.6.3集群与高可用

在CentOS7上配置RabbitMQ 3.6.3集群与高可用 集群概述 通过 Erlang 的分布式特性(magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收. 这些节点通过 RabbitMQ HA 队列(镜像队列)进行消息队列结构复制.本文中搭建 3 个节点,并且都是磁盘节点(所有节点状态保持一致,节点完全对等),只要有任何一个节点能够工作,RabbitMQ 集群对外就能提供服务. 环境