k8s学习记录:环境搭建(基于Kubeadmin)
一、前言
工欲善其事,必先利其器。学习k8s肯定离不开环境的搭建,今天这篇文章将从0到1 搭建一个k8s集群。k8s集群的搭建方式也有很多,例如学习环境的minikube、使用kubeadmin工具安装,再或则是难度最大的通过二进制文件一个一个组件安装,由于文章是站在一个后端开发的角度来编写的,所以不使用二进制方式安装(说白了,难度太大了),这里我们选择使用kubeadmin工具来安装k8s集群。
二、环境准备
首先我们需要3台虚拟机,一主二从,配置如下。当然配置也可以适当的降低,问题不大。
IP | 配置 | 系统 |
---|---|---|
master:192.168.159.1 | 8G/4C | Centos7 |
worker1:192.168.159.138 | 4G/2C | Centos7 |
worker2:192.168.159.139 | 4G/2C | Centos7 |
三、初始化工作
1、配置主机名
为了方便后续区别不同主机,我们可以给每台虚拟机设置一下主机名。这里我们将master节点设置为 k8smaster,两个worker节点分别命名为 k8sworker1和k8sworker2。这里以master节点为例,输入命令
hostnamectl set-hostname k8smaster && bash
剩下两个几点也执行对应的命令,分别为:
hostnamectl set-hostname k8sworker1 && bash
hostnamectl set-hostname k8sworker2 && bash
2、配置域名解析
同时分别在三台服务器配置 域名解析
vim /etc/hosts
这样就可以直接通过域名去访问了,例如我们在master1上可以直接 ping worker1
3、配置免密登录
为了方便操作,我们可以设置免密登录。
(1)ssh-keygen,一路回车
(2)把本地生成的公钥复制到远程主机
ssh-copy-id master
ssh-copy-id worker1
ssh-copy-id worker2
4、关闭防火墙
为了方便操作,我们将防火墙直接关闭,省的安装的过程中因为防火墙导致的安装失败(当然线上一般不会关闭防火墙,而是开放对应端口),我们只是为了方便学习。在三台服务器上分别执行一下命令
systemctl stop firewalld && sysctl disable firewalld
关闭并禁止防火墙开启。
5、关闭SELiunx
set -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
运行完后重启服务器,然后输入命令检查SELINUX是否已经关闭,如果出现Disabled则表示成功关闭了Seliunx
geetenforce
6、同步时间
为了避免长期运行状态下服务器之间的实践不一致,所以我们需在服务器之间进行时间同步,通常我们会使用ntpdate这个工具来同步时间。接下来在三台服务器上执行以下命令,用于安装ntpdate
yum install -y ntpdate
安装完成后,我们执行对应的命令来设置时间源
ntpdate cn.pool.ntp.org
7、安装基础软件包
考虑到不同虚拟机之间可能版本不一样,导致所包含的软件包不一样,所以这里列举了一些我们经常用到的软件包。
yum install -y yum-utils device-mapper-persistent-data lvm2
wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl
curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet
ipvsadm
8、关闭交换分区
vim /etc/fatab
检查一下交换分区是否已经关闭:free -h
9、修改内核参数
1、加载br_netfilter模块
在三个节点分别执行 modprobe br_netfilter
2、启动相关内核参数
在安装和配置k8s集群时,需要开启一些内核参数以确保网络功能正常运行,在三个节点执行以下脚本
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
使内核参数生效
sysctl -p /etc/sysctl.d/k8s.conf
四、安装Docker
1、配置Docker的阿里云yum源
在三台服务器分别执行
vim /etc/yum.repos.d/kuberntes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
2、安装Docker
在三台服务器上分别安装Docker
1、yum install docker-ce-20.10.6 docker-ce-cli-20.10.6 containerd.io -y
2、设置为开机自启动 systemctl start docker && systemctl enable docker.service
3、设置Docker的文件驱动为systemd,默认为cgroupfs,kubelet默认使用systemd,两者必须统一
vim /etc/docker/daemon.json
完整的配置
{
"registry-mirrors": [
"https://docker.registry.cyou",
"https://docker.m.daocloud.io",
"https://noohub.ru",
"https://huecker.io",
"https://dockerhub.timeweb.cloud",
"https://docker.rainbond.cc"
],
"exec-opts": ["native.cgroupdriver=systemd"]
}
保存并重启docker
systemctl daemon-reload
systemctl restart docker
最后查看Docker状态
systemclt status docker
五、结束语
至此k8s所需要的基本环境已经搭建完成,接下来就是安装k8s集群了,会放到下一篇文章中继续,希望对你有所帮助。