linux

kubernetes 1.12.1 高可用安装之系统环境初始化

发布时间:7年前热度: 3279 ℃评论数:


1、环境说明


使用的Kubernetes集群可由一个master主机及一个以上(建议至少两个)node主机组成,这些主机可以是物理服务器,也可以运行于vmware、virtualbox或kvm等虚拟化平台上的虚拟机,甚至是公有云上的VPS主机。


本测试环境将由master01、master02、node01、node02、node03和harbor六个独立的主机组成,它们分别拥有2核心的CPU及4G的内存资源,操作系统环境均为CentOS 7.5 1804。此外,需要预设的系统环境如下:


(1)借助于NTP服务设定各节点时间精确同步;

(2)通过DNS完成各节点的主机名称解析,测试环境主机数量较少时也可以使用hosts文件进行;

(3)关闭各节点的iptables或firewalld服务,并确保它们被禁止随系统引导过程启动;

(4)各节点禁用SELinux; 

(5)各节点禁用所有的Swap设备;

(6)若要使用ipvs模型的proxy,各节点还需要载入ipvs相关的各模块;

    

2、设定时钟同步

    

若节点可直接访问互联网,直接启动chronyd系统服务,并设定其随系统引导而启动。


~]# systemctl start chronyd.service

~]# systemctl enable chronyd.service        

    

不过,建议用户配置使用本地的的时间服务器,在节点数量众多时尤其如此。存在可用的本地时间服务器时,修改节点的/etc/crhony.conf配置文件,并将时间服务器指向相应的主机即可,配置格式如下:

    

    server CHRONY-SERVER-NAME-OR-IP iburst

        

3、主机名称解析


出于简化配置步骤的目的,本测试环境使用hosts文件进行各节点名称解析,文件内容如下所示:

    

10.80.4.201 master01

10.80.4.202 master02

10.80.4.203 node01

10.80.4.204 node02

10.80.4.205 node03

10.80.4.206 harbor

    

4、关闭iptables或firewalld服务


在CentOS7上,iptables或firewalld服务通常只会安装并启动一种,在不确认具体启动状态的前提下,这里通过同时关闭并禁用二者即可简单达到设定目标。


    ~]# systemctl stop firewalld.service 

    ~]# systemctl stop iptables.service

    ~]# systemctl disable firewalld.service

    ~]# systemctl disable iptables.service


5、关闭并禁用SELinux


若当前启用了SELinux,则需要编辑/etc/sysconfig/selinux文件,禁用SELinux,并临时设置其当前状态为permissive:

 

    ~]# sed -i 's@^\(SELINUX=\).*@\1disabled@' /etc/sysconfig/selinux

    ~]# setenforce 0


6、禁用Swap设备、配置内核参数


部署集群时,kubeadm默认会预先检查当前主机是否禁用了Swap设备,并在未禁用时强制终止部署过程。因此,在主机内存资源充裕的条件下,需要禁用所有的Swap设备,否则,就需要在后文的kubeadm init及kubeadm join命令执行时额外使用相关的选项忽略检查错误。


关闭Swap设备,需要分两步完成。首先是关闭当前已启用的所有Swap设备:

   ~]# swapoff -a      

而后编辑/etc/fstab配置文件,注释用于挂载Swap设备的所有行。


配置转发相关参数,否则可能会出错

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness=0
EOF
sysctl -p

7、启用ipvs内核模块


创建内核模块载入相关的脚本文件/etc/sysconfig/modules/ipvs.modules,设定自动载入的内核模块。文件内容如下:


#!/bin/bash

ipvs_modules_dir="/usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs"

for i in $(ls $ipvs_modules_dir | sed  -r 's@(.*).ko.xz@\1@'); do

    /sbin/modinfo -F filename $i  &> /dev/null

    if [ $? -eq 0 ]; then

        /sbin/modprobe $i

    fi

done

 

修改文件权限,并手动为当前系统加载内核模块:

    ~]# chmod +x /etc/sysconfig/modules/ipvs.modules 

    ~]# bash /etc/sysconfig/modules/ipvs.modules  


8.安装Docker

使用国内Docker源

# cd /etc/yum.repos.d/

# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

Docker安装:

# yum install -y docker-ce

启动后台进程:

# systemctl start docker $$ systemctl enable docker

配置国内镜像地址、本地地址

# cat /etc/docker/daemon.json 

{

    "registry-mirrors": ["https://registry.docker-cn.com"],

    "insecure-registries":["10.80.4.206"],

    "max-concurrent-downloads": 10

}

9.准备部署目录

mkdir -p /opt/kubernetes/{cfg,bin,ssl,log} && echo 'export PATH=/opt/kubernetes/bin/:$PATH' >> /etc/profile

10.

准备软件包

CFSSL软件包:

wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64

wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64

wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64

etcd软件包:

https://github.com/coreos/etcd/releases页面下载最新版本的二进制文件:

wget https://github.com/etcd-io/etcd/releases/download/v3.2.25/etcd-v3.2.25-linux-amd64.tar.gz

kubernetes软件包:

到https://github.com/kubernetes/kubernetes/releases页面下载最新版本的二进制文件:

wget https://dl.k8s.io/v1.12.1/kubernetes-server-linux-amd64.tar.gz

wget https://dl.k8s.io/v1.12.1/kubernetes-client-linux-amd64.tar.gz

wget https://dl.k8s.io/v1.12.1/kubernetes-node-linux-amd64.tar.gz

Flannel软件包:

wget https://github.com/coreos/flannel/releases/download/v0.10.0/flannel-v0.10.0-linux-amd64.tar.gz


kubernetes,高可用安装

手机扫码访问