云原生之深入解析如何使用Vagrant Kubespray快速初始化K8S集群

news/2024/12/2 23:39:26/

一、前言

  • Vagrant 是一款用于构建及配置虚拟开发环境的软件,采用 Ruby 编写,主要以命令行方式运行。其主要使用 Oracle VirtualBox 提供虚拟化系统,与 Chef,Salt,Puppet 等环境配置管理软件搭配使用,可以实现快速搭建虚拟开发环境。
  • Kubespray 是利用 Ansible 工具,通过 SSH 协议批量让指定远程机器执行一系列脚本,安装各种组件,完成 K8S 集群搭建。

二、安装 Vagrant

  • 宿主机是 Ubuntu 20.04,安装参考 Install Vagrant:
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install vagrant
  • 这里 Vagrant 用的 provider 是 virtualbox。

三、准备 Vagrant Box

  • 一开始使用的是 centos7,但这个 Box 的一些默认配置不够灵活:
    • SSH Server 配置了无法使用密码连接,只能使用私钥;
    • 磁盘最大只有几十个 G,后期会是一个瓶颈;
    • root 用户无法直接使用。
  • 由于以上原因,决定自制 CentOS Box。

四、自制 CentOS Box

  • 首先准备一个 CentOS 7.8 的虚拟机镜像,基于这个启动一个虚拟机(叫做 centos7.8-template),这个虚拟机有几个要求:
    • 磁盘大小给 2T(预分配,实际占用空间根据实际使用情况而定);
    • 内存和 CPU 在创建的时候在 Vagrantfile 中再设置;
    • vagrant 用户,sudoer 需要设置 NOPASSWD;
    • 添加公钥;
    • 设置 ssh server,UseDNS=no;
    • 安装 VirtualBox Guest Additions。
# 宿主机上生成 box
vagrant package --base centos7.8-template# 添加 box
vagrant box add package.box --name centos7.8
  • 这个 Box 已经上传到 Vagrant Cloud 了: centos7.8。

五、初始化虚拟机

  • 目录结构:
.
├── master01
│   └── Vagrantfile
├── node01
│   └── Vagrantfile
├── node02
│   └── Vagrantfile
├── operator
│   └── Vagrantfile
└── scripts├── init_node.sh└── init_operator.sh
  • 分别使用 init_operator.sh 和 init_node.sh 初始化操作机和节点机(包括 master), GitHub 地址:k8s-cluster-vagrant。

六、设置免密登录

ssh-keygen
ssh-copy-id root@ip

七、初始化 K8S 集群

cp -rfp inventory/sample inventory/mycluster# 生成 hosts.yaml
declare -a IPS=(192.168.3.63 192.168.3.64 192.168.3.65)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}# 编辑 inventory/mycluster/hosts.yaml
# 修改 master 和 node 的分配# 编辑 inventory/mycluster/group_vars/all/all.yml
# 设置 http_proxy 和 https_proxy 代理,代理需要是 http 开头的# 编辑 inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml
# 设置 container_manager 为 docker# 编辑 inventory/mycluster/group_vars/all/docker.yml
# 设置 docker_registry_mirrors,添加阿里云镜像加速地址# 开始创建集群
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml# 删除集群
# 会卸载 docker
#ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root reset.yml

http://www.ppmy.cn/news/852675.html

相关文章

Linux如何进行双屏主屏显示

单击Settings齿轮鼠标,打开设置,找到Displays即可进行切换。

Linux下vim里关键字高亮和取消高亮

1.显示高亮 在Vi里面如果要搜索某个关键字,只要在命令状态下键入/xxx,比如,我要搜索init的位置,我就键入:/init 然后回车,一个文件中,所有出现这个字样的地方都会被高亮显示。按n键&#xff0c…

AM335x关于LCD屏幕的配置--TI--Sitara AM335x系列

很多朋友在配置AM335x的LCD屏幕的时候会发现有频率配不出来,或者是不好配的情况,因为感觉他的时钟树过于繁琐,这里,正好抽空整理了一下这部分的内容(主要参考的是AM335x的TRM的第8章PRCM模块和13章LCD Controller。 这里在LCD Controller里面的配置描述的比较详细了,分频…

Linux删除 指定数目行【或者所有行】删除光标到行首

转到文件结尾G 转到第9行9G 删除所有内容(先用G转到文件尾),使用::1,.d 删除第9行到第200行的内容(先用200G转到第200行),使用:9,.d 删除说明:vi中,“.”当前行,“1,.”表示从第一行到当前行,“…

LCD屏幕参数通过数据手册得到--Linux驱动lcd

这里是以正点原子的7寸1024*600的屏幕为例 在这个图中,一般都是按照sync mode的参数进行设置的,sync mode似乎又是和HV MODE相对应的,sync mode和HV MODE有HS和VS的值。我们可以得到: 行: Horizontal pulse width HSPW…

RK3588核心板显示资源分配实操竟如此简单!飞凌嵌入式

前言 眼睛作为人类最重要的感觉器官,通过“视觉”帮助我们接收了大部分的外界信息,“视觉效果的好坏”直接影响着我们日常生产和生活质量的高低,因此“显示能力”成为了评价产品优劣的一项重要指标。在影音、游戏、智慧办公、工业自动化和交通…

linux系统怎么连接显示器,Linux下笔记本外接显示器 · Eulerlee

8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 被垃圾主板坑了,笔记本的hdmi口是从独显接出来的,但是我的kali上又没有安装NVIDIA的官方驱动,所以显示器接上去没有反应。为了…