系列文档

需要条件

  • 戴尔服务器一台或n台(可淘宝购买二手服务器)
  • 家用联通宽带
  • 路由器一台
  • 家用光猫(一般带路由器功能)
  • 网线一根充足的话最要2根网线(1根网线需要远程管理卡设置和上网功能复用一个网口,比如网口4,2根则各用各的网口,远程管理卡有单独的网口)

可实现功能

  • 获得联通外网ip
  • 因为外网ip可能会因为重新拨号发生变化怎记录最新ip呢?(可注册花生壳账号通过ddns功能 拨号后会自动注册到花生壳临时域名解析上这个,自己域名cname解析到花生壳域名即可 直接百度即可有很多教程)
  • 家用服务器可外网访问
  • 通过idrac远程控制卡 控制家里服务器系统安装以及开机关机(直接百度即可很多配置方法)
  • 联通默认禁用80+443除去这2个端口其他都可访问
  • 通过kubeshpere 使用devops操作多集群,比如发布到dev集群 prod集群 +监控+服务网格等
  • 通过keepalived+haproxy 虚拟vip的方法实现lb的高可用,keepalived监控haproxy是否挂掉,挂掉则降权,副节点加权实现vip自动飘移
  • 同时通过haproxy监控master k8s api,node通过lb连接master
  • 这里因为是自建所以需要自建lb,云上直接使用内网负债均衡lb即可 省事儿很多
  • 这里简单做一个打通描述,每个环节都可自定义不是死的,比如我不想做桥接模式,那就是中间再多一层路由器nat 或dmz转发
    在这里插入图片描述
实现办法
  • 打电话给联通客服 申请外网ip
  • 因为有有高性能路由器,所以并未使用安装宽带赠送的光猫并且带路由器功能的(所以这里需要跟客服说把光猫改为桥接模式,默认为直接拨号,我这里不用是因为1送的性能不好 2 打通内网,需要2个路由器都做dmz主机或者nat转发,损耗较大,并且不方便)

集群规划分配

  • 目前使用了1跳转机+2slb+单机器host集群+单机器dev集群+3master 3node 高可用prod集群 共11 虚拟机,4h8g 40g硬盘分配 15000转,做了r5磁盘阵列
192.168.3.[30-39] 分配给linux 跳转机和工具机器以及host+dev集群
192.168.3.[40-49] 分配给linux k8s master机器 prod集群
192.168.3.[50-59] 分配给linux k8s node机器  prod集群

vmware 虚拟centos 7.8系统 ip规划和系统安装分配

ip机器名备注
192.168.3.30centos-mannage跳转机
192.168.3.31centos-k8s-host devops集群管理机器 host角色
192.168.3.32centos-k8s-dev开发集群 all in one member角色
192.168.3.35centos-lb1keeplived+HAProxy
192.168.3.36centos-lb2keeplived+HAProxy
192.168.3.37keeplived虚拟创建的vip ip
192.168.3.40CentOS-k8s-m1k8s master 安装 kubesphere
192.168.3.41CentOS-k8s-m2k8s master 安装 kubesphere
192.168.3.42CentOS-k8s-m3k8s master 安装 kubesphere
192.168.3.50CentOS-k8s-n1k8s node 安装 kubesphere
192.168.3.51CentOS-k8s-n2k8s node 安装 kubesphere
192.168.3.52CentOS-k8s-n3k8s node 安装 kubesphere

主机名配置


## host解析
vim /etc/hosts

192.168.3.30 mannage
192.168.3.31 k8s-host
192.168.3.32 k8s-dev
192.168.3.35 lb1
192.168.3.36 lb2
192.168.3.40 k8s-m1
192.168.3.41 k8s-m2
192.168.3.42 k8s-m3
192.168.3.50 k8s-n1
192.168.3.51 k8s-n2
192.168.3.52 k8s-n3

## 执行命令临时修改
hostname mannage 

## 永久修改
vim /etc/sysconfig/network
HOSTNAME=mannage

## 或者合并命令
hostname mannage && sed -i '$a\HOSTNAME=mannage' /etc/sysconfig/network

sed -i '$a\192.168.3.31 k8s-host' /etc/hosts

安装 haproxy+keepalived

  • 可参考官方文档 https://kubesphere.com.cn/en/docs/installing-on-linux/on-premises/install-kubesphere-on-vmware-vsphere/
  • 官方文档这里 weight 设置不对。已经提了issues 暂时并未修复 https://github.com/kubesphere/website/issues/550
关闭防火墙等
systemctl stop firewalld && systemctl disable firewalld
sed -i 's/enforcing/disabled/g' /etc/selinux/config setenforce 0
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X  

在VMware vSphere上部署KubeSphere 
在云上不需要安装keeplived+HAProxy 直接使用负债均衡器即可,这里是因为本地所以安装


# HAProxy Configure /etc/haproxy/haproxy.cfg
global
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    log                     global
    option                  httplog
    option                  dontlognull
    timeout connect         5000
    timeout client          5000
    timeout server          5000
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  kube-apiserver
    bind *:6443
    mode tcp
    option tcplog
    default_backend kube-apiserver
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend kube-apiserver
    mode tcp
    option tcplog
    balance     roundrobin
    default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100
    server kube-apiserver-1 192.168.3.40:6443 check
    server kube-apiserver-2 192.168.3.41:6443 check
    server kube-apiserver-3 192.168.3.42:6443 check

##重新启动HAProxy并执行以下命令以启用HAProxy:
systemctl restart haproxy && systemctl enable haproxy

##停止HAProxy。
systemctl stop haproxy


##lb1 配置
vim /etc/keepalived/keepalived.conf 
global_defs {
  notification_email {
  }
  smtp_connect_timeout 30   
  router_id LVS_DEVEL01
  vrrp_skip_check_adv_addr
  vrrp_garp_interval 0
  vrrp_gna_interval 0
}
vrrp_script chk_haproxy {
  script "killall -0 haproxy"
  interval 2
  weight 20
}
vrrp_instance haproxy-vip {
  state MASTER  
  priority 100  
  interface ens33                       
  virtual_router_id 60
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 1111
  }
  unicast_src_ip 192.168.3.35     
  unicast_peer {
    192.168.3.36                      
  }
  virtual_ipaddress {
    #vip
    192.168.3.37/24
  }
  track_script {
    chk_haproxy
  }
}

##lb2 配置
vim /etc/keepalived/keepalived.conf 

global_defs {
  notification_email {
  }
  router_id LVS_DEVEL02
  vrrp_skip_check_adv_addr
  vrrp_garp_interval 0
  vrrp_gna_interval 0
}
vrrp_script chk_haproxy {
  script "killall -0 haproxy"
  interval 2
  weight 20
}
vrrp_instance haproxy-vip {
  state BACKUP
  priority 90
  interface ens33                        
  virtual_router_id 60
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass 1111
  }
  unicast_src_ip 192.168.3.36      
  unicast_peer {
   192.168.3.35                        
  }
  virtual_ipaddress {
    192.168.3.37/24
  }
  track_script {
    chk_haproxy
  }
}



##启动keepalived并启用keepalived。

systemctl restart keepalived && systemctl enable keepalived   

systemctl stop keepalived
systemctl start keepalived



##验证可用性
##使用ip a s查看每个节点磅的VIP绑定状态:

ip a s
##通过以下命令暂停VIP节点HAProxy:

systemctl stop haproxy
##ip a s再次使用以检查每个lb节点的vip绑定,并检查vip是否漂移:

ip a s
##或者,使用以下命令:

systemctl status -l keepalived

有任何疑问都可以关注作者公众号点击菜单–>联系作者相互探讨交流

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐