使用Vagrant创建和管理本地Kubernetes(K8s)集群的步骤是什么

news/2024/7/4 8:00:03 标签: vagrant, kubernetes, ruby, 云原生

Alt

文章目录

  • 步骤1:准备环境
  • 步骤2:创建Vagrantfile
  • 步骤3:启动虚拟机
  • 步骤4:安装Kubernetes
  • 步骤5:配置Kubernetes网络插件
  • 步骤6:将Worker节点加入集群
  • 步骤7:验证集群
  • 步骤8:部署应用
  • 步骤9:访问应用
  • 步骤10:清理资源
  • 结论

🎈个人主页:程序员 小侯
🎐CSDN新晋作者
🎉欢迎 👍点赞✍评论⭐收藏
✨收录专栏:云计算
✨文章内容:Vagrant
🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗

在本文中,我们将探讨如何使用Vagrant来创建和管理一个本地的Kubernetes(K8s)集群。Vagrant是一个用于构建和管理虚拟化环境的开源工具,它可以让您轻松地创建和配置虚拟机,以便在本地进行开发、测试和学习。通过使用Vagrant,您可以在本地快速搭建Kubernetes集群,无需依赖云服务或物理硬件。
在这里插入图片描述

步骤1:准备环境

在开始之前,请确保您已经安装了以下软件和工具:

  • VirtualBox: 用于虚拟机管理。
  • Vagrant: 用于创建和配置虚拟机环境。
  • kubectl: Kubernetes命令行工具,用于管理Kubernetes集群。

步骤2:创建Vagrantfile

首先,创建一个名为Vagrantfile的配置文件,用于描述您的虚拟机环境。以下是一个示例Vagrantfile的内容:

ruby">Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/bionic64"
  
  # 配置Master节点
  config.vm.define "master" do |master|
    master.vm.network "private_network", type: "dhcp"
    master.vm.hostname = "k8s-master"
    master.vm.provider "virtualbox" do |vb|
      vb.memory = "2048"
      vb.cpus = 2
    end
  end

  # 配置Worker节点
  config.vm.define "worker" do |worker|
    worker.vm.network "private_network", type: "dhcp"
    worker.vm.hostname = "k8s-worker"
    worker.vm.provider "virtualbox" do |vb|
      vb.memory = "2048"
      vb.cpus = 2
    end
  end
end

在这个示例中,我们使用了ubuntu/bionic64的Vagrant镜像,并创建了一个Master节点和一个Worker节点。

步骤3:启动虚拟机

在配置文件创建好后,使用以下命令启动虚拟机:

vagrant up

这将会根据Vagrantfile中的配置启动虚拟机,并分配私有IP地址。

步骤4:安装Kubernetes

一旦虚拟机启动完成,您可以通过SSH登录到Master节点,并安装Kubernetes。在Master节点上执行以下命令:

# 安装kubeadm、kubelet和kubectl
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl

# 初始化Kubernetes集群
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

此命令将初始化Kubernetes Master节点。在初始化过程中,您将看到一些输出,包括一个kubeadm join命令,用于将Worker节点加入集群。请记下这个命令,稍后会用到。

步骤5:配置Kubernetes网络插件

Kubernetes需要一个网络插件来实现Pod之间的通信。我们将使用Flannel网络插件,执行以下命令在Master节点上配置Flannel:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

步骤6:将Worker节点加入集群

回到Vagrant虚拟机,登录到Worker节点,并运行之前保存的kubeadm join命令,将Worker节点加入集群。在Worker节点上执行:

sudo kubeadm join <Master节点的IP>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

步骤7:验证集群

在Master节点上,运行以下命令来验证Kubernetes集群的状态:

kubectl get nodes

如果一切正常,您应该看到Master节点和Worker节点都处于"Ready"状态。

步骤8:部署应用

现在,您可以在Kubernetes集群上部署应用程序。以下是一个示例Nginx应用的Deployment配置:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
     

 labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

使用kubectl apply -f命令将这个配置文件部署到Kubernetes集群中。

步骤9:访问应用

要访问部署的Nginx应用程序,您需要创建一个Service来公开应用程序。以下是一个示例Service的配置:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: NodePort

使用kubectl apply -f命令将这个配置文件部署到Kubernetes集群中。然后,您可以通过Worker节点的IP地址和NodePort访问Nginx应用程序。

步骤10:清理资源

当您完成测试后,可以使用以下命令来销毁Vagrant虚拟机和相关资源:

vagrant destroy -f

结论

通过本文,您学会了如何使用Vagrant创建和管理一个本地的Kubernetes集群。这个本地集群可以用于开发、测试和学习Kubernetes,而无需云服务或物理硬件。使用Vagrant,您可以轻松地搭建和销毁Kubernetes环境,为学习和实验提供了便利。希望这篇文章能帮助您开始使用Vagrant搭建本地Kubernetes集群。

后记 👉👉💕💕美好的一天,到此结束,下次继续努力!欲知后续,请看下回分解,写作不易,感谢大家的支持!! 🌹🌹🌹


http://www.niftyadmin.cn/n/5012380.html

相关文章

VSCode学习笔记一:添加代码模板

一目了然 1 简述2 设置模板3 Global Snippets file示例 1 简述 问&#xff1a;为什么要设置代码模板&#xff1f; 答&#xff1a;编程语言是有个性的&#xff0c;不同语言的演讲风格是不一样的。 旁白&#xff1a;我不懂&#xff1f;&#xff01; 问&#xff1a;为什么要设置…

小米汽车,能否在新能源汽车江湖站稳脚跟?

最近&#xff0c;圈内都在传小米汽车亦庄工厂已试生产近一个月&#xff0c;每周可产50辆样车&#xff0c;正在为首款新能源汽车量产做最后的准备。 此前的业绩交流会上&#xff0c;小米集团总裁卢伟冰透露&#xff0c;小米汽车结束了夏测且进展非常顺利&#xff0c;2024年上半…

ThreadPoolExecutor 类

ThreadPoolExecutor 是 Java 中用于创建和管理线程池的一个强大类,位于 java.util.concurrent 包中。它提供了灵活的配置选项,允许您自定义线程池的行为和特性。 以下是关于 ThreadPoolExecutor 类的一些重要信息和示例: 创建 ThreadPoolExecutor 实例: 要创建一个 Thread…

easyui-sidemenu 菜单 后台加载

前言 一个项目的功能较齐全&#xff0c;而齐全就预示着功能菜单比较长&#xff0c;但是现实中在不同的甲方使用中往往只需要摘取其中几项功能&#xff0c;所以就想到用配置菜单以满足其需求&#xff0c;且无需变更原始代码&#xff0c;查找一些资料总是似是而非或是誊抄别的什…

ORACLE的分区(一)

目录 一、分区概念 二、表分区的优点 三、分区策略 一、分区概念 随着时间的发展&#xff0c;一个表的数据会越来越多&#xff0c;当数据量增大的时候我们一般采取建立索引优化索引的方式提高查询速度&#xff0c;但是数据量再次增大即使是索引也无法提高速度&#xff0c;这时…

EasyExcel填充数据EasyExcel填充数据流下载 easyexcel填充excel下载 easyexcel填充

EasyExcel填充数据EasyExcel填充数据流下载 easyexcel填充excel下载 easyexcel填充 1、填充数据然后将文件输出给浏览器 1、填充数据然后将文件输出给浏览器 官网地址 官网的demo填充生成的是file文件, 实际需求用的最多的是 填充完数据将Excel输出给浏览器 填充模版Excel文…

【jmeter】连接mysql无法使用executeQuery()

Can not issue data manipulation statements with executeQuery(). 翻译为&#xff1a; 在这里插入图片描述 看一下JDBC Request里的Query Type 改为Prepared Updata Statement&#xff0c;改完再试一下

uni-app 之 获取网络列表数据

uni-app 之 获取网络列表数据 image.png <template><!-- vue2的<template>里必须要有一个盒子&#xff0c;不能有两个&#xff0c;这里的盒子就是 view--><view>--- uni.request 网络请求API接口 ---<view v-for"(item) in caturl" :key&…