K8S集群搭建(1 master 2 worker)
GitHub
:https://github.com/kubernetes/kubeadm
本文
:使用kubeadm搭建一个3台机器组成的k8s集群,1台master节点,2台worker节点。
一、环境资源准备
1.1、版本统一
由于k8s安装较麻烦,为防止出现其他异常,特此统一下安装的软件版本。
Docker 18.09.0
---
kubeadm-1.14.0-0
kubelet-1.14.0-0
kubectl-1.14.0-0
---
k8s.gcr.io/kube-apiserver:v1.14.0
k8s.gcr.io/kube-controller-manager:v1.14.0
k8s.gcr.io/kube-scheduler:v1.14.0
k8s.gcr.io/kube-proxy:v1.14.0
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1
---
calico:v3.9
1.2、k8s环境系统要求
配置要求
:
一台或多台机器运行其中之一
- K8S需要运行在以下一台或多台机器中:
- Ubuntu 16.04+
- Debian 9+
- CentOS 7 【本文使用】
- Red Hat Enterprise Linux (RHEL) 7
- Fedora 25+
- HypriotOS v1.0.1+
- Container Linux (tested with 1800.6.0)
- 每台机器至少有2GB或更多的内存(少于2GB的空间,其他应用就无法使用了)
- 2个或更多cpu
- 所有网络节点互联(互相ping通)
- 每个节点具有唯一主机名、MAC地址和product_uuid
- 关闭防火墙或开放某些互联端口
- 为了使kubelet正常工作,必须禁用swap.
1.3、准备三台Centos7虚拟机
(1)保证3台虚拟机的Mac地址唯一
需同时启动3台虚拟机,故应保证3台虚拟机的Mac地址唯一。
(2)虚拟机配置
节点角色 | IP | 处理器内核总数 | 内存(GB) |
---|---|---|---|
K8S_master(Centos7) | 192.168.116.170 | 2 | 2 |
K8S_worker01(Centos7) | 192.168.116.171 | 2 | 2 |
K8S_worker02(Centos7) | 192.168.116.172 | 2 | 2 |
可参考下图:
(3)保证各节点互相Ping通
二、集群搭建
2.1、更新yum,并安装依赖包
注意:(3台机器均要执行
)
注: 需联网,时间较长。
(1)更新yum
[root@localhost ~]# yum -y update
(2)安装依赖包
[root@localhost ~]# yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp
2.2、安装Docker
注意:(3台机器均要执行
)
在每一台机器上都安装好Docker,版本为18.09.0
(0)卸载之前安装的docker
[root@localhost /]# sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
(1)安装必要的依赖
[root@localhost ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
(2)设置docker仓库,添加软件源(阿里源)
[root@localhost ~]# sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(3)设置ustc镜像加速器(强烈建议
)
注: 如果没有 /etc/docker/daemon.json,需要手动创建。
① 创建文件夹(/etc/docker)
[root@localhost ~]# mkdir -p /etc/docker
[root@localhost ~]#
[root@localhost ~]# vi /etc/docker/daemon.json
② 创建并编辑daemon.json(内容如下)
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
③ 重新加载生效
[root@localhost ~]# sudo systemctl daemon-reload
也可参考博文:Docker设置ustc的镜像源(镜像加速器:修改/etc/docker/daemon.json文件)
(4)安装指定版本docker(v18.09.0)
① 列出可用的docker版本(排序:从高到低)
[root@localhost /]# yum list docker-ce --showduplicates | sort -r
② 安装指定版本(这里安装版本v18.09.0
),需联网
[root@localhost /]# sudo yum -y install docker-ce-18.09.0 docker-ce-cli-18.09.0 containerd.io
(5)启动Docker
提示: 安装完成后,Docker默认创建好了docker用户组,但该用户组下没有用户。
启动命令:
[root@localhost /]# sudo systemctl start docker
[root@localhost ~]#
[root@localhost ~]# ps -ef | grep docker
[root@localhost ~]#
或
启动docker并设置开机启动(推荐
):
[root@localhost /]# sudo systemctl start docker && sudo systemctl enable docker
[root@localhost ~]#
[root@localhost ~]# ps -ef | grep docker
[root@localhost ~]#
附:停止docker命令
systemctl stop docker
(6)测试Docker是否安装成功
提示: 通过运行 hello-world映像来验证是否正确安装了 Docker Engine-Community。
运行“hello-world”容器测试:
[root@localhost /]# sudo docker run hello-world
如上图即已安装成功。
2.3、设置hostname,修改hosts文件
注意:(3台机器均要执行
)
hosts文件:用于解析计算机名称和IP地址的映射关系,功能相当于windows下面的c:\windows\system32\drivers\etc\hosts文件,如果想使用计算机名称来访问对方的主机,需要把对方计算机的名称和IP地址写到本机的hosts文件中,或使用配置DNS。
(1)对master
节点主机操作
① 设置master虚拟机的hostname为m
[root@localhost /]# sudo hostnamectl set-hostname m
注: 使用
hostname
或uname -n
命令,可查看当前主机名:如:[root@localhost ~]# hostname
② 修改hosts文件
在/etc/hosts文件内容末尾 追加 IP和主机名映射。
[root@localhost /]# vi /etc/hosts
附:/etc/hosts中追加内容如下:
192.168.116.170 m
192.168.116.171 w1
192.168.116.172 w2
(2)对worker01
节点主机操作
① 设置worker01虚拟机的hostname为w1
[root@localhost /]# sudo hostnamectl set-hostname w1
注: 使用
hostname
或uname -n
命令,可查看当前主机名:如:[root@localhost ~]# hostname
② 修改hosts文件
在/etc/hosts文件内容末尾 追加 IP和主机名映射。
[root@localhost /]# vi /etc/hosts
附:/etc/hosts中追加内容如下:
192.168.116.170 m
192.168.116.171 w1
192.168.116.172 w2
(3)对worker02
节点主机操作
① 设置worker02虚拟机的hostname为w2
[root@localhost /]# sudo hostnamectl set-hostname w2
注: 使用
hostname
或uname -n
命令,可查看当前主机名:如:[root@localhost ~]# hostname
② 修改hosts文件
在/etc/hosts文件内容末尾 追加 IP和主机名映射。
[root@localhost /]# vi /etc/hosts
附:/etc/hosts中追加内容如下:
192.168.116.170 m
192.168.116.171 w1
192.168.116.172 w2
(3)使用ping命令互测三台虚拟机的网络联通状态
[root@localhost ~]# ping m