[kubernetes]4-1 实践环境准备

4-1 实践环境准备

一、实践环境准备

1. 服务器说明

我们这里使用的是五台centos 7.2实体机,具体信息如下表:

 

系统类型

IP地址

节点角色

CPU

Memory

Hostname

centos-7.6

192.168.10.211

master 以及中转机

>=2

>=2G

kubernetes-master01

centos-7.6

192.168.10.212

master

>=2

>=2G

kubernetes-master02

centos-7.6

192.168.10.213

master

>=2

>=2G

kubernetes-master03

centos-7.6

192.168.10.51

worker

>=2

>=2G

kubernetes-node01

centos-7.6

192.168.10.52

worker

>=2

>=2G

kubernetes-node02

2. 系统设置(所有节点)

2.1 主机名

主机名必须每个节点都不一样,并且保证所有点之间可以通过hostname互相访问。

# 查看主机名

$ hostname

 

# 修改主机名

$ hostnamectl set-hostname <your_hostname>

 

# 配置host,使主节点之间可以通过hostname互相访问

$ vi /etc/hosts

# <node-ip> <node-hostname>

192.168.10.211 kubernetes-master01

192.168.10.212 kubernetes-master02

192.168.10.213 kubernetes-master03

192.168.10.51 kubernetes-node01

192.168.10.52 kubernetes-node02

 

2.2 安装依赖包

# 更新yum

$ yum update

 

# 安装依赖包

$ yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp

2.3 关闭防火墙、swap,重置iptables

# 关闭防火墙

$ systemctl stop firewalld && systemctl disable firewalld

 

# 重置iptables

$ iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT

 

# 关闭swap

$ swapoff -a

$ sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab

 

# 关闭selinux

$ setenforce 0

 

# 关闭dnsmasq(否则可能导致docker容器无法解析域名)

$ service dnsmasq stop && systemctl disable dnsmasq

2.4 系统参数设置

# 制作配置文件

$ cat > /etc/sysctl.d/kubernetes.conf <<EOF

net.bridge.bridge-nf-call-iptables=1

net.bridge.bridge-nf-call-ip6tables=1

net.ipv4.ip_forward=1

vm.swappiness=0

vm.overcommit_memory=1

vm.panic_on_oom=0

fs.inotify.max_user_watches=89100

EOF

 

# 生效文件

$ sysctl -p /etc/sysctl.d/kubernetes.conf

3. 安装docker(worker节点)

根据kubernetes对docker版本的兼容测试情况,我们选择17.03.1版本

 由于近期docker官网速度极慢甚至无法访问,使用yum安装很难成功。我们直接使用rpm方式安装

# 手动下载rpm包

$ mkdir -p /opt/kubernetes/docker && cd /opt/kubernetes/docker

$ wget http://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-selinux-17.03.1.ce-1.el7.centos.noarch.rpm

$ wget http://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm

$ wget http://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-debuginfo-17.03.1.ce-1.el7.centos.x86_64.rpm

下载容易断 下不全 百度云地址

链接:https://pan.baidu.com/s/1VsKPGIBEXzh0FDT3rb_izA 

提取码:a1d2

 

 

# 清理原有版本

$ yum remove -y docker* container-selinux

 

# 安装rpm包

$ yum localinstall -y *.rpm

如果报错 Error: docker-engine-selinux conflicts with 2:container-selinux

就是没有卸载干净

 

# 开机启动

$ systemctl enable docker

$ systemctl start docker

# 设置参数

# 1.查看磁盘挂载

$ df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda2        98G  2.8G   95G   3% /

devtmpfs         63G     0   63G   0% /dev

/dev/sda5      1015G  8.8G 1006G   1% /tol

/dev/sda1       197M  161M   37M  82% /boot

 

# 2.选择比较大的分区(我这里是/tol) 就是将原有的/var/lib/docker路径修改为/tol/docker-data

$ mkdir -p /tol/docker-data

#这里需要先启动docker 否则可能没有 /etc/docker这个文件夹

$ cat <<EOF > /etc/docker/daemon.json

{

    "graph": "/tol/docker-data"

}

EOF

 

# 启动docker服务

service docker restart

4. 准备二进制文件(所有节点)

4.1 配置免密登录

为了方便文件的copy我们选择一个中转节点(随便一个节点,可以是集群中的也可以是非集群中的),配置好跟其他所有节点的免密登录。我这里设置了所有服务器相互免密

# 看看是否已经存在rsa公钥

$ cat ~/.ssh/id_rsa.pub

 

# 如果不存在就创建一个新的

$ ssh-keygen -t rsa

 

# 把id_rsa.pub文件内容copy到其他机器的授权文件中

$ cat ~/.ssh/id_rsa.pub

 

# 在其他节点执行下面命令(包括worker节点)

$ echo "<file_content>" >> ~/.ssh/authorized_keys

4.2 下载二进制文件

官方下载地址(在CHANGELOG链接里面):

 https://github.com/kubernetes/kubernetes/releases

网盘下载地址–推荐(我从官网下载整理好的文件):

链接: https://pan.baidu.com/s/1_w9vyQaDGLKDOf_TU2Xu8Q

提取码: vca8

4.3 分发文件并设置好PATH

# 把文件copy到每个节点上(注意替换自己的文件目录)

$ ssh <user>@<node-ip> "mkdir -p /opt/kubernetes/bin"

$ scp master/* <user>@<master-ip>:/opt/kubernetes/bin/

$ scp worker/* <user>@<worker-ip>:/opt/kubernetes/bin/

 

# 给每个节点设置PATH

$ ssh <user>@<node-ip> "echo 'PATH=/opt/kubernetes/bin:$PATH' >>~/.bashrc"

#添加执行权限 否则添加了PATH还是无法获取到命令

$ ssh <user>@<node-ip> "chmod +x /opt/kubernetes/bin/*"

$ ssh <user>@<node-ip> "source ~/.bashrc"

# 给自己设置path,后面会用到kubectl命令

$ vi ~/.bash_profile

5. 准备配置文件(中转节点)

上一步我们下载了kubernetes各个组件的二进制文件,这些可执行文件的运行也是需要添加很多参数的,包括有的还会依赖一些配置文件。现在我们就把运行它们需要的参数和配置文件都准备好。

5.1 下载配置文件

我这准备了一个项目,专门为大家按照自己的环境生成配置的。它只是帮助大家尽量的减少了机械化的重复工作。它并不会帮你设置系统环境,不会给你安装软件。总之就是会减少你的部署工作量,但不会耽误你对整个系统的认识和把控。

$ cd ~

下载下面这个文件 kubernetes-ha-binary

链接:https://pan.baidu.com/s/1ALO1FMkzE15UlU9JlzC84Q 

提取码:kvu4 

 

 

 

# 看看git内容

$ ls -l kubernetes-ha-binary

addons/

configs/

pki/

services/

init.sh

global-configs.properties

5.2 文件说明

addons

kubernetes的插件目录,包括calico、coredns、dashboard等。

configs

这个目录比较 - 凌乱,包含了部署集群过程中用到的杂七杂八的配置文件、脚本文件等。

pki

各个组件的认证授权相关证书配置。

services

所有的kubernetes服务(service)配置文件。

global-configs.properties

全局配置,包含各种易变的配置内容。

init.sh

初始化脚本,配置好global-config之后,会自动生成所有配置文件。

5.3 生成配置

这里会根据大家各自的环境生成kubernetes部署过程需要的配置文件。

 在每个节点上都生成一遍,把所有配置都生成好,后面会根据节点类型去使用相关的配置。

# cd到之前下载的git代码目录

$ cd kubernetes-ha-binary

 

# 编辑属性配置(根据文件注释中的说明填写好每个key-value)

$ vi global-config.properties

#3个master节点的ip

MASTER_0_IP=192.168.10.211

MASTER_1_IP=192.168.10.212

MASTER_2_IP=192.168.10.213

 

#3个master节点的hostname

MASTER_0_HOSTNAME=kubernetes-master01

MASTER_1_HOSTNAME=kubernetes-master02

MASTER_2_HOSTNAME=kubernetes-master03

 

#api-server的高可用虚拟ip

MASTER_VIP=192.168.10.188

 

#keepalived用到的网卡接口名,一般是eth0

VIP_IF=ens33

 

#worker节点的ip列表

WORKER_IPS=192.168.10.51,192.168.10.52

 

#kubernetes服务ip网段

SERVICE_CIDR=10.254.0.0/16

 

#kubernetes的默认服务ip,一般是cidr的第一个

KUBERNETES_SVC_IP=10.254.0.1

 

#dns服务的ip地址,一般是cidr的第二个

CLUSTER_DNS=10.254.0.2

 

#pod网段

POD_CIDR=172.22.0.0/16

 

#NodePort的取值范围

NODE_PORT_RANGE=8400-8900

 

 

# 生成配置文件,确保执行过程没有异常信息

$ ./init.sh

 

# 查看生成的配置文件,确保脚本执行成功

$ find target/ -type f

执行init.sh常见问题:

1.       Syntax error: “(” unexpected

bash版本过低,运行:bash -version查看版本,如果小于4需要升级

不要使用 sh init.sh的方式运行(sh和bash可能不一样哦)

2.       config.properties文件填写错误,需要重新生成

 再执行一次./init.sh即可,不需要手动删除target

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爷来辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值