二进制安装kubernetes v1.11.2 (第七章 部署高可用组件)

继续上一章部署。

八、部署高可用组件

本章介绍keepalived和haproxy实现kube-apiserver高可用。

  • keepalive 提供 kube-apiserver 对外提供服务的VIP;
  • haproxy 监听VIP,后端链接所有 kube-apiserver 实例,提供健康检查和负载均衡功能
  • keepalived 一主一备的运行模式,本文档复用 master 节点的两台设备
  • haproxy 监听 8443 端口,与 kube-apiserver 的 6443 端口区分开
  • keepalived 在运行过程中周期检查本机的 haproxy 进程状态,如果检测到 haproxy 进程异常,则触发重新选主的过程,将VIP飘逸到新选出来的主节点,从而实现 VIP 的高可用
  • 所有组件都通过 VIP 和 haproxy 监听的 8443 端口访问 kube-apiserver

8.1 安装软件包

source /opt/k8s/bin/environment.sh
for master_ip in ${MASTER_IPS[@]}
  do
    echo ">>> ${master_ip}"
    ssh [email protected]${master_ip} "sudo yum install -y keepalived haproxy"
done

8.2 配置 haproxy

cat > haproxy.cfg <<EOF
global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /var/run/haproxy-admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon
    nbproc 1

defaults
    log     global
    timeout connect 5000
    timeout client  10m
    timeout server  10m

listen  admin_stats
    bind 0.0.0.0:10080
    mode http
    log 127.0.0.1 local0 err
    stats refresh 30s
    stats uri /status
    stats realm welcome login\ Haproxy
    stats auth admin:123456
    stats hide-version
    stats admin if TRUE

listen kube-master
    bind 0.0.0.0:8443
    mode tcp
    option tcplog
    balance source
    server 192.168.56.20 192.168.56.20:6443 check inter 2000 fall 2 rise 2 weight 1
    server 192.168.56.21 192.168.56.21:6443 check inter 2000 fall 2 rise 2 weight 1
EOF
  • haproxy 在10080端口输出 status 信息
  • haproxy 监听所有接口的 8443 端口,该端口与环境变量 ${KUBE_APISERVER} 指定的端口必须一致
  • server 字段列出所有 kube-apiserver 监听的 IP 和端口

8.3 下发 haproxy.cfg 到所有 master 节点

source /opt/k8s/bin/environment.sh
for master_ip in ${MASTER_IPS[@]}
  do
    echo ">>> ${master_ip}"
    scp haproxy.cfg [email protected]${master_ip}:/etc/haproxy
done

8.4 起 haproxy 服务

source /opt/k8s/bin/environment.sh
for master_ip in ${MASTER_IPS[@]}
  do
    echo ">>> ${master_ip}"
    ssh [email protected]${master_ip} "sudo systemctl restart haproxy"
done

8.5 检查服务状态

source /opt/k8s/bin/environment.sh
for master_ip in ${MASTER_IPS[@]}
  do
    echo ">>> ${master_ip}"
    ssh [email protected]${master_ip} "sudo systemctl status haproxy|grep Active"
done

确保状态都是 active (running)。

查看日志:journalctl -u haproxy

8.6 检查是否监听了 8443 端口

source /opt/k8s/bin/environment.sh
for master_ip in ${MASTER_IPS[@]}
  do
    echo ">>> ${master_ip}"
    ssh [email protected]${master_ip} "sudo netstat -lnpt|grep haproxy"
done

8.7 配置 keeplived

keepalived 是一主一备的运行模式,所以配置文件类型有两种

master 192.168.56.20
backup 192.168.56.21

master配置文件:

source /opt/k8s/bin/environment.sh
cat  > keepalived-master.conf <<EOF
global_defs {
    router_id lb-master-105
}

vrrp_script check-haproxy {
    script "killall -0 haproxy"
    interval 5
    weight -30
}

vrrp_instance VI-kube-master {
    state MASTER
    priority 120
    dont_track_primary
    interface ${VIP_IF}
    virtual_router_id 68
    advert_int 3
    track_script {
        check-haproxy
    }
    virtual_ipaddress {
        ${MASTER_VIP}
    }
}
EOF
  • 两个地方需要注意 ${VIP_IF} 和 ${MASTER_VIP}
  • 使用 killall -0 haproxy 命令检查所在节点的 haproxy 进程是否正常。如果异常则将权重减少(-30),从而触发重新选主的过程
  • route_id、virtual_router_id 用于标识属于该 HA 的keepalived 实例,如果有多套keepalived HA,则必须各不相同

backup 配置文件:

source /opt/k8s/bin/environment.sh
cat  > keepalived-backup.conf <<EOF
global_defs {
    router_id lb-backup-105
}

vrrp_script check-haproxy {
    script "killall -0 haproxy"
    interval 5
    weight -30
}

vrrp_instance VI-kube-master {
    state BACKUP
    priority 110
    dont_track_primary
    interface ${VIP_IF}
    virtual_router_id 68
    advert_int 3
    track_script {
        check-haproxy
    }
    virtual_ipaddress {
        ${MASTER_VIP}
    }
}
EOF
  • priority 的值必须小于 master

8.8 下发keepalived配置文件

[[email protected] ha_config]# scp keepalived-master.conf [email protected]192.168.56.20:/etc/keepalived/keepalived.conf
[[email protected]-m1 ha_config]# scp keepalived-backup.conf [email protected]192.168.56.21:/etc/keepalived/keepalived.conf

8.9 起 keepalived 服务

source /opt/k8s/bin/environment.sh
for master_ip in ${MASTER_IPS[@]}
  do
    echo ">>> ${master_ip}"
    ssh [email protected]${master_ip} "systemctl restart keepalived"
done

8.10 检查服务状态

# 确认服务是 active (running)
source /opt/k8s/bin/environment.sh
for master_ip in ${MASTER_IPS[@]}
  do
    echo ">>> ${master_ip}"
    ssh [email protected]${master_ip} "systemctl status keepalived|grep Active"
done

# 查看 VIP 所在的节点,确保可以 ping 通 VIP
source /opt/k8s/bin/environment.sh
for master_ip in ${MASTER_IPS[@]}
  do
    echo ">>> ${master_ip}"
    ssh [email protected]${master_ip} "/usr/sbin/ip addr show ${VIP_IF}"
    ssh [email protected]${master_ip} "ping -c 1 ${MASTER_VIP}"
done

# 查看日志 journalctl -u keepalived

8.11 浏览器打开status也没

地址:${MASTER_VIP}:10080/status

用户名和密码在 haproxy.cfg 的 status auth 字段

HAProxy status页面

原文地址:https://www.cnblogs.com/aast/p/9844068.html

时间: 2024-08-28 06:13:44

二进制安装kubernetes v1.11.2 (第七章 部署高可用组件)的相关文章

二进制安装kubernetes v1.11.2 (第一章 集群信息和初始化)

介绍 之前部署过单master节点的环境,并且没有启用证书.这次准备部署高可用的master节点并启用证书和部署dashboard. 一.集群环境信息 1.1 设备信息(使用virtualbox虚拟出了2个master和2个node设备) 192.168.56.20 k8s-m1 192.168.56.21 k8s-m2 192.168.56.30 k8s-n1 192.168.56.31 k8s-n2 内存不小于1G内核版本不小于 3.10.0 1.2 软件版本 kubernetes-v1.1

二进制安装kubernetes v1.11.2 (第十四章 kube-proxy部署)

继续前一章的部署. 部署 kube-proxy 组件 14.1 下载和分发二进制文件,参考 第三章 分发到各节点 source /opt/k8s/bin/environment.sh for node_name in ${NODE_NAMES[@]} do echo ">>> ${node_name}" scp k8s/v1.11.2/server/kubernetes/server/bin/{kube-proxy,kubelet} [email protected]

二进制安装kubernetes v1.11.2 (第十一章 node节点部署)

继续前一章部署. 十一.node节点部署 kubernetes node 节点运行了如下组件: flannel docker kubelet kube-proxy 11.1 部署flanneld 请参考 第五章 11.2 安装依赖包 centos: source /opt/k8s/bin/environment.sh for node_ip in ${NODE_IPS[@]} do echo ">>> ${node_ip}" ssh [email protected]

二进制安装kubernetes v1.11.2 (公有云虚机)

kubernetes搭建在公有云,集群vip可以用使用LB实现,注意下面几点 1.创建LB,监听端口指向api-server的监听端口,假设是6443 2.关闭LB的健康检查 3.修改/home/k8s/.kube/config 中的集群地址为 https://master_vip:6443 否则会出现 error: the server doesn't have a resource type "all" 原文地址:https://www.cnblogs.com/aast/p/102

kubeadm安装kubernetes v1.11.3 HA多主高可用并启用ipvs

环境介绍: 系统版本:CentOS 7.5 内核:4.18.7-1.el7.elrepo.x86_64 Kubernetes: v1.11.3 Docker-ce: 18.06 Keepalived保证apiserever服务器的IP高可用 Haproxy实现apiserver的负载均衡 master x3 && etcd x3 保证k8s集群可用性 192.168.1.1 master 192.168.1.2 master2 192.168.1.3 master3 192.168.1.4

centos7使用kubeadm安装kubernetes 1.11版本多主高可用

centos7使用kubeadm安装kubernetes 1.11版本多主高可用 [TOC] kubernetes介绍要学习一个新的东西,先了解它是什么,熟悉基本概念会有很大帮助.以下是我学习时看过的一篇核心概念介绍.http://dockone.io/article/932 搭建Kubernetes集群环境有以下3种方式: minikubeMinikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用.不能用于生产环境.官方地址:ht

使用kubeadm安装kubernetes v1.14.1

使用kubeadm安装kubernetes v1.14.1 一.环境准备 操作系统:Centos 7.5 ? ? 一台或多台运?行行着下列列系统的机器?: ? Ubuntu 16.04+ ? Debian 9 ? CentOS 7 ? RHEL 7 ? Fedora 25/26 (尽?力力服务) ? HypriotOS v1.0.1+ ? Container Linux (针对1800.6.0 版本测试) ? 每台机器? 2 GB 或更更多的 RAM (如果少于这个数字将会影响您应?用的运?行行

Sealos安装Kubernetes v1.16.0 HA集群

Sealos安装Kubernetes v1.16.0 HA集群 github项目链接https://github.com/fanux/sealos 初始化master节点与worker节点 初始化脚本 init.sh #!/bin/bash # 在 master 节点和 worker 节点都要执行 # 安装 docker # 参考文档如下 # https://docs.docker.com/install/linux/docker-ce/centos/ # https://docs.docker

Kubernetes集群搭建以及部署高可用ingress

k8s服务器 10.10.4.85 master 10.10.4.86 node 10.10.4.87 node 3个服务器都配置好主机名以及hosts配置: k8s集群搭建 在10.10.4.85 上操作,master节点 使用kubeadm工具安装,参考:使用kubeadm安装kubernetes_v1.17.x:https://kuboard.cn/install/install-k8s.htm #curl -sSL https://kuboard.cn/install-script/v1