更新时间:2023-01-10 15:52:20浏览次数:499+次
本文介绍在Rocky Linux 9/AlmaLinux 9上安装和使用k3d的方法。K3d是在Docker中运行K3s(Rancher Lab的最小Kubernetes发行版)的轻量级包装器。K3d使得在Docker中创建单节点和多节点k3s集群非常容易,例如,用于Kubernetes上的本地开发。
安装和使用k3d
在开始之前,我们必须确保服务器满足以下要求:
kubectl与Kubernetes集群交互。
Docker完全可以使用k3d。注意:k3d v5.x.x至少需要Docker v20.10.5 (runc >= v1.0.0-rc93)才能正常工作。
1、安装Docker
K3d完全取决于docker,在这一步中,我们将设置它并确保它运行平稳。
以下是在CentOS/Rocky Linux/AlmaLinux上安装Docker CE的方法。
卸载旧版本:
sudo yum remove docker docker-common docker-selinux docker-engine
安装所需的依赖项:
sudo yum -y install yum-utils device-mapper-persistent-data lvm2
设置稳定repo:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装Docker CE:
sudo yum -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin
启动并启用docker服务:
sudo systemctl start docker && sudo systemctl enable docker
将您的用户帐户添加到docker组:
sudo usermod -aG docker $USER
newgrp docker
检查服务状态:
systemctl status docker
2、安装kubectl和其他软件包
在安装之前,我们需要一些软件包来帮助我们获取、编辑和操作文件。运行以下命令以安装所有这些基本软件包:
sudo def install -y vim curl wget
为了与我们将要创建的集群交互,我们需要kubectl包。通过运行以下命令安装它:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
确认安装的版本:
kubectl version --output=yaml
您还可以通过运行以下命令,使用dnf包管理器安装kubectl。
添加Kubernetes存储库:
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
然后进行安装:
sudo def install -y kubectl
您还可以确认安装的版本:
kubectl version --output=yaml
您应该看到类似于以下内容的输出:
clientVersion:
buildDate: "2022-11-09T13:36:36Z"
compiler: gc
gitCommit: 872a965c6c6526caa949f0c6ac028ef7aff3fb78
gitTreeState: clean
gitVersion: v1.25.4
goVersion: go1.19.3
major: "1"
minor: "25"
platform: linux/amd64
kustomizeVersion: v4.5.7
3、启用ip_tables模块
K3d带有traefik,它需要iptables来启用一些路由。为了使其动作顺畅,我们需要启用“ip_tables”模块。执行以下操作:
sudo modprobe ip_tables
echo 'ip_tables' | sudo tee -a /etc/modules
4、在Rocky Linux 9/AlmaLinux 9上安装k3d
现在我们将看到k3d的安装部分。在此之前,我们将按如下方式在服务器中安装它:
wget -q -O - https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash
您将看到类似于以下内容的输出:
Preparing to install k3d into /usr/local/bin
k3d installed into /usr/local/bin/k3d
Run 'k3d --help' to see what you can do with it.
5、在单个服务器节点上创建集群
为了展示k3d的强大功能,我们将以非常简单的方式创建一个单节点集群。您只需运行以下命令:
k3d cluster create geekscluster
在创建集群时,您将看到以下内容:
INFO[0000] Prep: Network
INFO[0000] Created network 'k3d-geekscluster'
INFO[0000] Created image volume k3d-geekscluster-images
INFO[0000] Starting new tools node...
INFO[0000] Pulling image 'ghcr.io/k3d-io/k3d-tools:5.4.6'
INFO[0001] Creating node 'k3d-geekscluster-server-0'
INFO[0002] Starting Node 'k3d-geekscluster-tools'
INFO[0002] Pulling image 'docker.io/rancher/k3s:v1.24.4-k3s1'
INFO[0007] Creating LoadBalancer 'k3d-geekscluster-serverlb'
INFO[0008] Pulling image 'ghcr.io/k3d-io/k3d-proxy:5.4.6'
INFO[0010] Using the k3d-tools node to gather environment information
INFO[0010] HostIP: using network gateway 172.18.0.1 address
INFO[0010] Starting cluster 'geekscluster'
INFO[0010] Starting servers...
INFO[0010] Starting Node 'k3d-geekscluster-server-0'
INFO[0014] All agents already running.
INFO[0014] Starting helpers...
INFO[0014] Starting Node 'k3d-geekscluster-serverlb'
INFO[0021] Injecting records for hostAliases (incl. host.k3d.internal) and for 2 network members into CoreDNS configmap...
INFO[0023] Cluster 'geekscluster' created successfully!
INFO[0023] You can now use it like this:
kubectl cluster-info
它将在“~/.kube/config”处自动创建一个KubeConfig文件,因此您可以立即通过“kubectl”命令开始与集群交互。因此,让我们检查集群信息如下:
$ kubectl cluster-info
Kubernetes control plane is running at https://0.0.0.0:33701
CoreDNS is running at https://0.0.0.0:33701/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://0.0.0.0:33701/api/v1/namespaces/kube-system/services/https:metrics-server:https/proxy
再让我们看看pods:
$ kubectl get pods -n kube-system
至此,您已经准备好部署应用程序以在本地测试它们,或者使用它进行各种实用的操作。
相关资讯