kubernetes v1.14.3 HA集群安装

kubernetes v1.14.3 HA集群安装

目录结构

  1. 集群规划

    主机名 ip 角色 组件
    master1-3 192.168.14.138-140 master+etcd etcd kube-apiserver kube-controller-manager kubectl kubeadm kubelet kube-proxy flannel
    worker1 192.168.14.141 node kubectl kubeadm kubelet kube-proxy flannel
    vip 192.168.14.142 实现apiserver的高可用
  2. 组件版本
    组件 版本
    centos 7.3.1611
    kernel 3.10.0-957.el7.x86_64
    kubeadm v1.14.3
    kubelet v1.14.3
    kubectl v1.14.3
    kube-proxy v1.14.3
    flannel v0.11.0
    etcd 3.3.10
    docker 18.09.5
    kubernetes-dashboard v1.10.1
    keepalived 1.3.5
    haproxy 1.5.18
  3. 高可用架构说明

    kubernetes架构概念

    kube-apiserver:集群核心,集群API接口、集群各个组件通信的中枢;集群安全控制;
    etcd:集群的数据中心,用于存放集群的配置以及状态信息,通过RAFT同步信息。
    kube-scheduler:集群Pod的调度中心;默认kubeadm安装情况下–leader-elect参数已经设置为true,保证master集群中只有一个kube-scheduler处于活跃状态;
    kube-controller-manager:集群状态管理器,当集群状态与期望不同时,kcm会努力让集群恢复期望状态,比如:当一个pod死掉,kcm会努力新建一个pod来恢复对应replicas set期望的状态;默认kubeadm安装情况下–leader-elect参数已经设置为true,保证master集群中只有一个kube-controller-manager处于活跃状态;
    kubelet: kubernetes node上的 agent,负责与node上的docker engine打交道;
    kube-proxy: 每个node上一个,负责service vip到endpoint pod的流量转发,原理是通过设置iptables规则实现

    负载均衡说明

    haproxy: 主要用于apiserver负载均衡
    keepalived: 主要用于apiserver高可用。
    haproxy+keepalived主要功能就是实现高可用状态的负载均衡。首先通过keepalived生成一个虚地址VIP(主机点宕机后漂移到其他机器,VIP在哪台机器上,就和本地ip地址一样,都代表本机,共用同网卡,共用本地服务service,本地接口socket),然后当访问VIP:PORT再通过haproxy负载至后端的实际端口RIP:6443,即真正的apiserver服务.

  4. 准备工作

    1、安装docker

    ? 参考

    2、修改内核参数

    cat <<EOF >  /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward=1
    EOF
    sysctl --system

    3、关闭Swap

    4、开启ipvs

    5、禁用selinux,关闭防火墙

    关闭selinux
    setenforce 0
    sed -i ‘s/SELINUX=permissive/SELINUX=disabled/‘ /etc/sysconfig/selinux
    关闭防火墙
    systemctl stop firewall.service
    systemctl disable firewall.service

    6、开启免密,检查网络,dns,hosts,ntp是否正常

    开启免密
    [master1]ssh-kengen
    [master1]ssh-copy-id [email protected]
    编辑hosts
    vim /etc/hosts
    开启ntp同步
    systemctl start ntpd.service
    systemctl enable ntpd.service
  5. 安装步骤

    一、安装haproxy和keepalived来创建一个负载均衡器。

    1、安装haproxy

    分发安装haproxy(所有master节点)
    for i in master1 master2 master3; do ssh  [email protected]$i  "yum install haproxy ";done
    配置haproxy文件(所有master节点)
    cat <EOF > /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
    
    defaults
       mode                    tcp
       log                     global
       retries                 3
       timeout connect         10s
       timeout client          1m
       timeout server          1m
    
    frontend kubernetes
       bind *:8443              #配置端口为8443
       mode tcp
       default_backend kubernetes-master
    
    backend kubernetes-master           #后端服务器,也就是说访问192.168.255.140:8443会将请求转发到后端的三台,这样就实现了负载均衡
       balance roundrobin
       server master1  192.168.14.138:6443 check maxconn 2000
       server master2  192.168.14.139:6443 check maxconn 2000
       server master3  192.168.14.140:6443 check maxconn 2000
    EOF
    分发配置文件
    for i in master1 master2 master3; do scp  /etc/haproxy/haproxy.cfg   [email protected]$i:/etc/haproxy/haproxy.cfg;done
    重启服务器
    systemctl daemon-reload && systemctl restart haproxy && systemctl haproxy

    2、安装keepalived

    分发安装haproxy(所有master节点)
    for i in master1 master2 master3; do ssh  [email protected]$i  "yum install keepalived ";done
    配置keepalived文件(所有master节点)
    
    cat <EOF > /etc/keepalived/keepalived.conf
    global_defs {
      notification_email {
        [email protected]
        [email protected]
        [email protected]
      }
      notification_email_from [email protected] #表示发送通知邮件时邮件源地址是谁
      smtp_server 192.168.200.1 #表示发送email时使用的smtp服务器地址
      smtp_connect_timeout 30 #连接smtp连接超时时间
      router_id LVS_docker1  #主机标识
      vrrp_skip_check_adv_addr
      vrrp_strict
      vrrp_garp_interval 0
      vrrp_gna_interval 0
    }
    
    vrrp_instance VI_1 {
       state MASTER         #备服务器上改为BACKUP
       interface ens160       #改为自己的接口
       virtual_router_id 51   # VRID 不可更改
       priority 100         #备服务器上改为小于100的数字,90,80
       advert_int 1
       authentication {
           auth_type PASS
           auth_pass 1111
       }
       virtual_ipaddress {
           192.168.14.142          #虚拟vip,自己设定
       }
    }
    EOF
    keepalived配置不太一样,要求修改后分发。
    重启服务器
    systemctl daemon-reload && systemctl restart keepalived && systemctl keepalived

    3、验证keepalived是否正常工作。

    登录主节点
    ip a

    二、安装 kubeadm, kubelet 和 kubectl

    1、添加国内yum源

    cat <<EOF > /etc/yum.repos.d/kubernetes.repo
    [kubernetes]
    name=Kubernetes
    baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF

    2、指定版本安装

    更新仓库
    yum makecache fast
    查找相应版本软件
    yum search --showduplicates kubeadm

    3、在所有安装kubelet的节点上,将kubelet设置为开机启动

    yum install  -y kubectl-1.14.3  kubeadm-1.14.3 kubelet-1.14.3
    systemctl daemon-reload && systemctl restart kubelet && systemctl kubelet 

    四、提前下载所有需要用到的镜像(谷歌镜像,通过代理下载)

    1、查看需要下载的镜像

    kubeadm config images list

    2、通过代理转换镜像(命令行直接输入)(所有节点)

    for i  in kube-apiserver:v1.14.3 kube-controller-manager:v1.14.3  kube-scheduler:v1.14.3 kube-proxy:v1.14.3 pause:3.1 etcd:3.3.10 coredns:1.3.1 ;do docker pull gcr.akscn.io/google_containers/$i ;docker tag gcr.akscn.io/google_containers/$i  k8s.gcr.io/$i; done

    五、初始化master

    1、初始化master,所有master算作控制平面节点

    1) 在master1编写集群的的初始化配置文件

    ? 集群版本是v1.14.3

    ? 指定集群的api端口和地址

    ? 使用flannel,指定pod端口范围"10.244.0.0/16"

    cat <EOF >  kubeadm-config.yaml
    apiVersion: kubeadm.k8s.io/v1beta1
    kind: ClusterConfiguration
    kubernetesVersion: v1.14.3
    controlPlaneEndpoint: "192.168.14.142:8443"
    networking:
     podSubnet: "10.244.0.0/16"
    EOF

    2) 执行初始化

    kubeadm init  --pod-network-cidr=10.244.0.0/16  --config=kubeadm-config.yaml --experimental-upload-certs

    3) 初始化完成后的主要提示如下

    其他的master节点加入控制平面的命令
    kubeadm join 192.168.14.142:8443 --token g9up4e.wr2zvn1y0ld2u9c8     --discovery-token-ca-cert-hash sha256:d065d5c2bfce0f5e0f784ed18cb0989dd19542721969c12888f04496b03f121c     --experimental-control-plane --certificate-key ddad01f830084f0dd4a9f89e914020cf1001aa31f4550cf5fccce9bad2d6d599
    node节点加入node的命令
    kubeadm join 192.168.14.131:6443 --token xl9aa5.2lxz30aupuf9lbhh     --discovery-token-ca-cert-hash sha256:0fa135166d86ad9e654f7b92074b34a42a5a25152c05e9253df62af8541c7bad
    配置kubeconfig的命令提示
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    

    4)配置kubectl,主要是配置访问apiserver 的权限

    4)kubectl命令补选

    echo "source <(kubectl completion bash)" > ~/.bashrc

    source ~/.bashrc

    2、初始化其他master

    其他的master节点加入控制平面的命令
    kubeadm join 192.168.14.142:8443 --token g9up4e.wr2zvn1y0ld2u9c8     --discovery-token-ca-cert-hash sha256:d065d5c2bfce0f5e0f784ed18cb0989dd19542721969c12888f04496b03f121c     --experimental-control-plane --certificate-key 

    3、检查三台master是否初始化成功

    kubectl get nodes 

    六、 将worker节点加入集群

    kubeadm join 192.168.14.131:6443 --token xl9aa5.2lxz30aupuf9lbhh     --discovery-token-ca-cert-hash sha256:0fa135166d86ad9e654f7b92074b34a42a5a25152c05e9253df62af8541c7bad

    七、安装网络插件Flannel(主节点运行即可)

    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/62e44c867a2846fefb68bd5f178daf4da3095ccb/Documentation/kube-flannel.yml

    八、查看集群状态

    kubectl get nodes
    master1   Ready      master   4h41m   v1.14.3
    master2   Ready      <none>   4h36m   v1.14.3
    master3   Ready      master   4h50m   v1.14.3
    worker1   Ready      master   4h39m   v1.14.3

后续继续补充,mark!

原文地址:https://blog.51cto.com/9406836/2408100

时间: 2024-08-24 16:17:41

kubernetes v1.14.3 HA集群安装的相关文章

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 v1.14.0版本集群搭建(centos7)

一.主机环境配置(centos7.6) 1.主机名设置 1 #所有主机分别设置如下 2 # hostnamectl set-hostname master 3 # hostnamectl set-hostname node1 4 # hostnamectl set-hostname node2 2.主机名绑定hosts #所有主机设置相同 # cat /etc/hosts ::1 localhost localhost.localdomain localhost6 localhost6.loca

Storm-1.0.1+ZooKeeper-3.4.8+Netty-4.1.3 HA集群安装

Storm-1.0.1+ZooKeeper-3.4.8+Netty-4.1.3 HA集群安装 下载Storm-1.0.1 http://mirrors.tuna.tsinghua.edu.cn/apache/storm/apache-storm-1.0.1/apache-storm-1.0.1.tar.gz 下载ZooKeeper-3.4.8 http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.

菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章

菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章 cheungmine, 2014-10-25 0 引言 在生产环境上安装Hadoop高可用集群一直是一个须要极度耐心和体力的仔细工作. 虽然有非常多文档教会大家怎么一步一步去完毕这样的工作,可是百密也有一疏. 现成的工具不是没有,可是对于我这个喜欢了解细节的人来说,用别人的东西,写的好还能够,写的不好,出了问题,查找错误难之又难.手工安装Hadoop集群须要对Linux有一定的使用经验.对于全然没有接触Linux的人来说.肯定是

HA集群安装配置(高可用)

HA 即 (high available)高可用,又被叫做双机热备,用于关键性业务. 简单理解就是,有两台机器A和B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至B机器继续提供服务.常用实现高可用的开源软件有heartbeat和keepalived,其中keepalived有负载均衡的功能.<ignore_js_op> 下面我们使用heartbeat来做HA集群,并且把nginx服务作为HA对应的服务. 试验准备:两个机器, 都是centos6.5,网卡eth0 ip如下:ami

HA集群之Heartbeat v1 高可用安装讲解

什么是高可用集群        高可用集群是指一组通过硬件和软件连接起来的独立计算机,它们在用户面前表现为一个单一系统,在这样的一组计算机系统内部的一个或者多个节点停止工作,服务会从故障节点切换到正常工作的节点上运行,不会引起服务中断.从这个定义可以看出,集群必须检测节点和服务何时失效,何时恢复为可用.这个任务通常由一组被称为"心跳"的代码完成.在Linux-HA里这个功能由一个叫做heartbeat的程序完成. Heartbeat简介        Heartbeat是Linux-H

Kubernetes v1.14.0 之 kube-apiserver集群部署

kube-apiserver集群准备 1.kube-apiserver 服务器配置 对外ip 内网ip cpu 内存 硬盘 192.168.3.10 172.172.1.1 64 256 1T 192.168.3.11 172.172.1.2 64 256 1T 192.168.3.12 172.172.1.3 64 256 1T 192.168.3.13 172.172.1.4 64 256 1T 192.168.3.14 172.172.1.5 64 256 1T 2.kube-apiser

kubeadm安装高可用kubernetes v1.14.1

前言 步骤跟之前安装1.13版本的是一样的 区别就在于kubeadm init的configuration file 目前kubeadm init with configuration file已经处于beta阶段了,在1.15版本已经进入到了v1beta2版本 虽然还没到GA版,但是相对于手动配置k8s集群,kubeadm不但简化了步骤,而且还减少了手动部署的出错的概率,何乐而不为呢 环境介绍: 系统版本:CentOS 7.6 内核:4.18.7-1.el7.elrepo.x86_64 Kub

使用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 (如果少于这个数字将会影响您应?用的运?行行