本文选取“Vagrant+VirtualBox+Kind”的方案在本地快速配置Kubernetes测试环境。Vagrant是一个虚拟机管理工具,支持VirtualBox和VMware等虚拟化工具,Kind(Kubernetes in Docker)以容器作为Node构建Kubernetes集群,仅需简单的步骤即可在本地部署一个k8s集群,是新手学习k8s的便捷工具。本文内容包含以下几个部分:
- 配置虚拟机
- 安装Docker、Kind、kubectl
- 用Kind创建第一个k8s集群
1. 配置虚拟机
- 需要下载的文件(搜索官网进行下载即可):Vagrant、VirtualBox、CentOS虚拟机镜像(box)
- 执行
vagrant box add
命令添加 box:vagrant box add e:\Downloads\CentOS-7.box --name centos-7 ==> box: Box file was not detected as metadata. Adding it directly... ==> box: Adding box 'centos-7' (v0) for provider: box: Unpacking necessary files from: file:///e:/Downloads/CentOS-7.box box: ==> box: Successfully added box 'centos-7' (v0) for 'virtualbox'!
命令后面跟着的是下载的文件路径,并且通过 --name centos-7
为这个 box 指定一个名字
- 查询box:
vagrant box list centos-7 (virtualbox, 0)
- 下载VBoxGuestAddition(需要和VirtualBox版本一致):
- 创建一个新目录,先执行
vagrant init
命令:mkdir centos7 cd centos7 vagrant init centos-7
- 启动虚拟机:
vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Importing base box 'centos-7'... ==> default: Matching MAC address for NAT networking... ==> default: Setting the name of the VM: demo_default_1588406874156_65036 ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat ==> default: Forwarding ports... default: 22 (guest) => 2222 (host) (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key
- 连接虚拟机:
vagrant ssh
- 关闭虚拟机:
vagrant halt
- 重启虚拟机:
vagrant reload
2. 安装Docker、Kind、kubectl
- 新建以下脚本用于安装Docker:
$ cat << EOF > install-docker.sh #!/bin/bash set -e # centos 一键安装 docker 脚本. #卸载旧版本 yum remove -y docker docker-common docker-selinux docker-engine #安装需要的软件包 yum install -y yum-utils device-mapper-persistent-data lvm2 #添加yum源 yum-config-manager --add-repo h提提p://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #安装最新版docker yum install -y docker-ce #配置镜像加速器 mkdir -p /etc/docker echo '{ "registry-mirrors": [ "h提提ps://reg-mirror.qiniu.com", "h提提ps://hub-mirror.c.163.com", "h提提ps://mirror.baidubce.com", "h提提ps://docker.mirrors.ustc.edu.cn" ] }' > /etc/docker/daemon.json #启动并加入开机启动 systemctl enable docker --now docker version echo "docker install finish." EOF
- 运行脚本进行安装:
$ sh install-docker.sh
- 安装Kind:
$ curl -Lo ./kind h提提ps://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64 $ chmod +x ./kind $ sudo mv ./kind /usr/local/bin/kind
- 安装kubectl:
$ curl -LO "h提提ps://dl.k8s.io/release/$(curl -L -s h提提ps://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" $ chmod +x kubectl $ sudo mv kubectl /usr/local/bin
4. 用Kind创建Kubernetes集群
- 拉取kindest镜像:
$ docker pull kindest/node:v1.25.3
- 新建yaml配置文件,此处创建一个主节点一个工作节点:
$ cat <<EOF > kind2.yaml # a cluster with 1 control-plane nodes and 1 workers kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane - role: worker EOF
- 用yaml配置文件创建集群,通过
--image
指定镜像,--config
指定配置文件:$ kind create cluster --image kindest/node:v1.25.3 --name kind2 --config kind2.yaml
- 查看集群:
$ kind get clusters
- 查看集群节点:
$ kind get nodes --name kind2
至此Kubernetes本地测试环境配置完成,可以开始用这套环境开始学习k8s啦!