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、关闭防火墙

为了方便操作,我们将防火墙直接关闭,省的安装的过程中因为防火墙导致的安装失败(当然线上一般不会关闭防火墙,而是开放对应端口),我们只是为了方便学习。在三台服务器上分别执行一下命令

shell 复制代码
systemctl stop firewalld && sysctl disable firewalld 

关闭并禁止防火墙开启。

5、关闭SELiunx

shell 复制代码
set -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

运行完后重启服务器,然后输入命令检查SELINUX是否已经关闭,如果出现Disabled则表示成功关闭了Seliunx

shell 复制代码
geetenforce

6、同步时间

为了避免长期运行状态下服务器之间的实践不一致,所以我们需在服务器之间进行时间同步,通常我们会使用ntpdate这个工具来同步时间。接下来在三台服务器上执行以下命令,用于安装ntpdate

shell 复制代码
yum install -y ntpdate
复制代码
安装完成后,我们执行对应的命令来设置时间源
shell 复制代码
ntpdate cn.pool.ntp.org

7、安装基础软件包

考虑到不同虚拟机之间可能版本不一样,导致所包含的软件包不一样,所以这里列举了一些我们经常用到的软件包。

shell 复制代码
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集群时,需要开启一些内核参数以确保网络功能正常运行,在三个节点执行以下脚本

shell 复制代码
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
复制代码
使内核参数生效
shell 复制代码
sysctl -p /etc/sysctl.d/k8s.conf

四、安装Docker

1、配置Docker的阿里云yum源

在三台服务器分别执行

vim /etc/yum.repos.d/kuberntes.repo

shell 复制代码
[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

完整的配置

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集群了,会放到下一篇文章中继续,希望对你有所帮助。

六、未完待续

相关推荐
lichenyang4531 天前
Docker 学习笔记(四):Dockerfile,把项目打成自己的镜像
docker·容器
lichenyang4531 天前
Docker 学习笔记(三):Docker 网络、bridge、子网和容器互通
docker·容器
lichenyang4531 天前
Docker 学习笔记(二):docker run 的参数到底在控制什么?
docker·容器
运维开发故事4 天前
基于 Arthas 的多集群在线诊断系统设计与实现
kubernetes
Patrick_Wilson6 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
探索云原生6 天前
K8s 1.36 这个 GA 特性,把 initContainer 拉模型的 hack 干掉了
ai·云原生·kubernetes
云恒要逆袭6 天前
运行你的第一个Docker容器
后端·docker·容器
Java之美7 天前
一次k8s升级引发的DevicePlugin注册失败
云原生·kubernetes
程序员老赵8 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程