当前位置: 首页 > news >正文

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,但一些配置尚未完成,此时启动失败是正常的。鉴于篇幅关系,关于配置在下一篇文章进行总结。
 

相关文章:

  • React+TS编写轮播图
  • 计算机视觉cv入门之Haarcascade的基本使用方法(人脸识别为例)
  • 【后端】【Django】Django 模型中的 `clean()` 方法详解:数据校验的最后防线
  • 【人工智能】推荐开源企业级OCR大模型InternVL3
  • css3新特性第四章(渐变)
  • 【条形码识别改名工具】如何批量识别图片条形码,并以条码内容批量重命名,基于WPF和Zxing的开发总结
  • 【iOS】alloc init new底层原理
  • 嵌入式---零点漂移(Zero Drift)
  • 网络设备基础运维全攻略:华为/思科核心操作与巡检指南
  • IDEA多环节实现优雅配置
  • IDEA在Git提交时添加.ignore忽略文件,解决为什么Git中有时候使用.gitignore也无法忽略一些文件
  • 国际数据加密算法(IDEA)详解
  • 按字符串长度升序,长度相同则按字典序
  • 【Linux系统】Linux基础指令(详解Linux命令行常用指令,每一个指令都有示例演示)
  • 30天开发操作系统 第26天 -- 为窗口移动提速
  • 实现AWS Data Pipeline安全地请求企业内部API返回数据
  • 2026《数据结构》考研复习笔记四(第一章)
  • 蓝桥杯 二进制问题 刷题笔记
  • Linux操作系统简介:从开源内核到技术生态
  • BeautifulSoup 库的使用——python爬虫
  • 特写|为何这么多人喜欢上海半马,答案藏在他们的笑容里
  • 体坛联播|巴萨三球逆转塞尔塔,CBA季后赛山西横扫广东
  • 经济日报:“关税讹诈”拦不住中国制造升级
  • 揭晓!人形机器人半马完赛奖+专项奖发布
  • 杭州:调整个人购买家庭住房享受契税优惠住房套数查询规则
  • TP-LINK4.36亿元竞得上海青浦徐泾办公地块,需引入全球领先的总部型企业