Kubernetes(k8s)学习笔记(二)--k8s 集群安装

1、kubeadm

kubeadm 是官方社区推出的一个用于快速部署 kubernetes 集群的工具。这个工具能通过两条指令完成一个 kubernetes 集群的部署:

1.1 创建一个 Master 节点$ kubeadm init

1.2 将一个 Node 节点加入到当前集群中$ kubeadm join <Master 节点的 IP 和端口 >

2、前置要求

  • 一台或多台机器, 操作系统 CentOS7.x-86_x64
  • 硬件配置: 2GB 或更多 RAM, 2 个 CPU 或更多 CPU, 硬盘 30GB 或更多
  • 集群中所有机器之间网络互通可以访问外网, 需要拉取镜像
  • 禁止 swap 分区

3、部署步骤

3.1.在所有节点上安装 Docker 和 kubeadm

3.2.部署 Kubernetes Master

3.3.部署容器网络插件

3.4.部署 Kubernetes Node, 将节点加入 Kubernetes 集群中5.部署 Dashboard Web 页面, 可视化查看 Kubernetes 资源

4、 环境准备

1、准备工作

  • 我们可以使用 vagrant 快速创建三个虚拟机。 虚拟机启动前先设置 virtualbox 的主机网络。 现全部统一为 192.168.56.1, 以后所有虚拟机都是 56.x 的 ip 地址
  • 1.设置虚拟机存储目录, 防止硬盘空间不足

2、 启动三个虚拟机

使用下面的Vagrantfile文件

Vagrant.configure("2") do |config|

(1..3).each do |i|

config.vm.define "k8s-node#{i}" do |node|

设置虚拟机的Box

node.vm.box = "centos/7"

设置虚拟机的主机名

node.vm.hostname="k8s-node#{i}"

设置虚拟机的IP

node.vm.network "private_network", ip: "192.168.56.#{99+i}", netmask: "255.255.255.0"

设置主机与虚拟机的共享目录

node.vm.synced_folder "~/Documents/vagrant/share", "/home/vagrant/share"

VirtaulBox相关配置

node.vm.provider "virtualbox" do |v|

设置虚拟机的名称

v.name = "k8s-node#{i}"

设置虚拟机的内存大小

v.memory = 4096

设置虚拟机的CPU个数

v.cpus = 4

end

end

end

end

  • 将上面的Vagrantfile到非中文无空格目录下, 运行 vagrant up 启动三个虚拟机。

题外话:vagrant 完全可以一键部署全部 k8s 集群,可参照下面的地址去实现。

https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster

http://github.com/davidkbainbridge/k8s-playground

  • 进入三个虚拟机, 开启 root 的密码访问权限。

Vagrant ssh XXX(比如k8s-node1) 依次进入各个节点系统之后

su root 密码为 vagrant

vi /etc/ssh/sshd_config

修改 PasswordAuthentication yes/no

重启服务 service sshd restart

所有虚拟机设置为 4 核 4G

设置好 NAT 网络,设置各个节点网络地址不一样以便区分不同的节点,要不然各个节点网址一样就不好操作。

3、设置 linux 环境(各个节点都执行)

关闭防火墙:

systemctl stop firewalld

systemctl disable firewalld

关闭 selinux:

sed -i 's/enforcing/disabled/' /etc/selinux/config

setenforce 0

临时关闭 swap:

swapoff -a

需设置为永久关闭

sed -ri 's/.*swap.*/#&/' /etc/fstab

验证,swap 必须为 0;

free -g

小tips:由于各个节点都要执行重复的命令,在xshell中,我们可以设置在一个节点输入并发送给所有打开的节点从而避免重复输入,只需在命令行区域右键,在弹出的窗口进行选择已连接的会话,当只需要把命令在当前节点执行时,切换到当前会话即可。

添加主机名与 IP 对应关系

vi /etc/hosts

10.0.2.15 k8s-node1

10.0.2.24 k8s-node2

10.0.2.25 k8s-node3

hostnamectl set-hostname <newhostname>: 指定新的 hostname

su 切换过来

将桥接的 IPv4 流量传递到 iptables 的链

cat > /etc/sysctl.d/k8s.conf << EOF

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

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

EOF

然后执行sysctl --system命令让配置生效

如果执行sysctl --system遇到提示是只读的文件系统的问题,运行如下命令

mount -o remount rw /

5、 所有节点安装 Docker、 kubeadm、 kubelet、 kubectl

Kubernetes 默认 CRI(容器运行时) 为 Docker, 因此先安装 Docker。

1、 安装 docker

1、 卸载系统之前的 docker

sudo yum remove docker \

docker-client \

docker-client-latest \

docker-common \

docker-latest \

docker-latest-logrotate \

docker-logrotate \

docker-engine

2、 安装 Docker-CE

安装必须的依赖

sudo yum install -y yum-utils \

device-mapper-persistent-data \

lvm2

设置 docker repo 的 yum 位置

sudo yum-config-manager \

--add-repo \

https://download.docker.com/linux/centos/docker-ce.repo

由于docker镜像的原因,这一步执行可能会失败,如果失败配置阿里云的

安装 docker,以及 docker-cli

sudo yum install -y docker-ce docker-ce-cli containerd.io

3、配置 docker 加速

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]

} EOF
sudo systemctl daemon-reload

sudo systemctl restart docker

4、启动 docker & 设置 docker 开机自启

systemctl enable docker

基础环境准备好, 可以给三个虚拟机备份一下; 为 node3 分配 16g, 剩下的 3g。 方便未来侧测试

2、添加阿里云 yum 源

$ cat > /etc/yum.repos.d/kubernetes.repo << EOF

kubernetes

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=0

repo_gpgcheck=0

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

3、安装 kubeadm, kubelet 和 kubectl

yum list|grep kube

yum install -y kubelet-1.17.3 kubeadm-1.17.3 kubectl-1.17.3

systemctl enable kubelet

systemctl start kubelet

注意:虽然执行了启动命令systemctl start kubelet,但一些配置尚未完成,此时启动失败是正常的。鉴于篇幅关系,关于配置在下一篇文章进行总结。

相关推荐
Demonsong_1 分钟前
2025.8.22周五 在职老D渗透日记day24:burp+mumu抓包 安卓7.0以上证书配置
经验分享·笔记
MowenPan199535 分钟前
高等数学 9.1多元函数的基本概念
笔记·学习·高等数学
qq_341160443 小时前
文件系统挂载详细分析(《图解Linux内核》虚拟文件系统篇笔记二)
linux·服务器·笔记
无级程序员3 小时前
kubernetes-dashboard使用http不登录
http·容器·kubernetes
月熊4 小时前
Kubernetes笔记整合-1
笔记·容器·kubernetes
今天也要学习吖4 小时前
Azure TTS Importer:一键导入,将微软TTS语音接入你的阅读软件!
人工智能·学习·microsoft·ai·大模型·aigc·azure
张鱼小丸子4 小时前
K8S管理实战指南
云原生·容器·kubernetes
小白不想白a4 小时前
【K8s】整体认识K8s之Docker篇
docker·容器·kubernetes
楼田莉子5 小时前
C++算法学习专题:滑动窗口
开发语言·数据结构·c++·学习·算法·leetcode
小晶晶京京5 小时前
day38-HTTP
网络·网络协议·学习·http