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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: VirtualBox: 用于虚拟机管理。Vagrant: 用于创建和配置虚拟机环境。kubectl: Kubernetes命令行工具,用于管理Kubernetes集群。

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

1761e39677449357c370ec3e848a6ca9_ce726a6f88334394bdc2e9f8ef96960d.png


步骤1:准备环境

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


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

步骤2:创建Vagrantfile

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


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集群。


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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
6天前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
29 4
|
7天前
|
Kubernetes 监控 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第26天】随着云计算技术的发展,容器化成为现代应用部署的核心趋势。Kubernetes(K8s)作为容器编排领域的佼佼者,以其强大的可扩展性和自动化能力,为开发者提供了高效管理和部署容器化应用的平台。本文将详细介绍Kubernetes的基本概念、核心组件、实践过程及面临的挑战,帮助读者更好地理解和应用这一技术。
29 3
|
13天前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
14天前
|
Kubernetes 持续交付 开发工具
ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。
|
29天前
|
Kubernetes 应用服务中间件 nginx
搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
325 1
|
25天前
|
Kubernetes Ubuntu Linux
Centos7 搭建 kubernetes集群
本文介绍了如何搭建一个三节点的Kubernetes集群,包括一个主节点和两个工作节点。各节点运行CentOS 7系统,最低配置为2核CPU、2GB内存和15GB硬盘。详细步骤包括环境配置、安装Docker、关闭防火墙和SELinux、禁用交换分区、安装kubeadm、kubelet、kubectl,以及初始化Kubernetes集群和安装网络插件Calico或Flannel。
117 0
|
1月前
|
Kubernetes Cloud Native 云计算
云原生之旅:Kubernetes 集群的搭建与实践
【8月更文挑战第67天】在云原生技术日益成为IT行业焦点的今天,掌握Kubernetes已成为每个软件工程师必备的技能。本文将通过浅显易懂的语言和实际代码示例,引导你从零开始搭建一个Kubernetes集群,并探索其核心概念。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你打开一扇通往云原生世界的大门。
103 17
|
1月前
|
Kubernetes Cloud Native 微服务
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
88 1
|
1月前
|
负载均衡 应用服务中间件 nginx
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
48 1
|
1月前
|
Kubernetes Cloud Native Ubuntu
云原生之旅:Kubernetes集群搭建与应用部署
【8月更文挑战第65天】本文将带你进入云原生的世界,通过一步步指导如何在本地环境中搭建Kubernetes集群,并部署一个简单的应用。我们将使用Minikube和Docker作为工具,探索云原生技术的魅力所在。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和实践技巧。