【K8s】专题三(4):Kubernetes 安装方法之 KWOK

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!

公众号二维码


目录

一、KWOK 简介

二、KWOK 工具下载、安装

三、KWOK 部署 Kubernetes 集群

四、kwokctl 常用命令


一、KWOK 简介

KWOK (Kubernetes WithOut Kubelet)是一种工具包,能够在几秒钟内建立起包含数千个节点的集群。在这种场景下,KWOK 使用很少的内存来模拟大量节点和 Pod 的行为,因此资源占用率非常低。

KWOK 项目地址:GitHub - kubernetes-sigs/kwok

KWOK 官网地址:Home | KWOK


二、KWOK 工具下载、安装

KWOK 提供了两个工具,分别是 kwok、kwokctl,本文使用 kwokctl 工具部署集群。

# AMD架构
wget -O /usr/bin/kwokctl https://github.com/kubernetes-sigs/kwok/releases/download/v0.5.1/kwokctl-linux-amd64
chmod +x /usr/bin/kwokctl

# ARM架构
wget -O /usr/bin/kwokctl https://github.com/kubernetes-sigs/kwok/releases/download/v0.5.1/kwokctl-linux-arm64
chmod +x /usr/bin/kwokctl

# 查看版本信息
kwokctl --version


三、KWOK 部署 Kubernetes 集群

1、准备工作

# 关闭防火墙
systemctl disable --now firewalld

# 关闭 selinxu
setenforce 0
sed -i ’s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config

# 清空 iptables 规则
iptables -F && iptables -t nat -F

# 禁用 swap 分区
swapoff -a
sed -i '/swap / s/^\(.*\)$/#\1/g' /etc/fstab

# 配置主机间 SSH 免密(详细过程略)

# 安装 docker、kubectl(详细过程略)

2、部署集群

  • 方式一(docker run 方式)
# 提前下载所需镜像
docker pull myifeng/registry.k8s.io_kwok_cluster:v0.5.1-k8s.v1.28.0
docker tag myifeng/registry.k8s.io_kwok_cluster:v0.5.1-k8s.v1.28.0 registry.k8s.io/kwok/cluster:v0.5.1-k8s.v1.28.0

# 部署集群
docker run -itd -p 8080:8080 --name kwok registry.k8s.io/kwok/cluster:v0.5.1-k8s.v1.28.0
  • 方式二(kwokctl create 方式)
# 提前下载所需镜像
docker pull myifeng/registry.k8s.io_etcd:3.5.11-0
docker tag myifeng/registry.k8s.io_etcd:3.5.11-0 registry.k8s.io/etcd:3.5.11-0
docker pull myifeng/registry.k8s.io_kube-apiserver:v1.29.0
docker tag myifeng/registry.k8s.io_kube-apiserver:v1.29.0 registry.k8s.io/kube-apiserver:v1.29.0
docker pull myifeng/registry.k8s.io_kube-controller-manager:v1.29.0
docker tag myifeng/registry.k8s.io_kube-controller-manager:v1.29.0 registry.k8s.io/kube-controller-manager:v1.29.0
docker pull myifeng/registry.k8s.io_kube-scheduler:v1.29.0
docker tag myifeng/registry.k8s.io_kube-scheduler:v1.29.0 registry.k8s.io/kube-scheduler:v1.29.0
docker pull myifeng/registry.k8s.io_kwok_kwok:v0.5.1
docker tag myifeng/registry.k8s.io_kwok_kwok:v0.5.1 registry.k8s.io/kwok/kwok:v0.5.1

# 部署集群
kwokctl create cluster --name=kwok

🔔 输出如下:
Cluster is creating
cluster=kwok
Cluster is created
elapsed=0.4s cluster=kwok
Cluster is starting
cluster=kwok
Cluster is started
elapsed=1.6s cluster=kwok
You can now use your cluster with:

        kubectl cluster-info --context kwok-kwok

Thanks for using kwok!

3、创建节点

# 创建 Node 节点(否则 pod 报错:no nodes available to schedule pods)
kubectl apply -f - <<EOF
apiVersion: v1
kind: Node
metadata:
  annotations:
    node.alpha.kubernetes.io/ttl: "0"
    kwok.x-k8s.io/node: fake
  labels:
    beta.kubernetes.io/arch: amd64
    beta.kubernetes.io/os: linux
    kubernetes.io/arch: amd64
    kubernetes.io/hostname: kwok-node-0
    kubernetes.io/os: linux
    kubernetes.io/role: agent
    node-role.kubernetes.io/agent: ""
    type: kwok
  name: kwok-node-0
spec:
  taints: # Avoid scheduling actual running pods to fake Node
  - effect: NoSchedule
    key: kwok.x-k8s.io/node
    value: fake
EOF
---------------------------------------------------------
# 去除污点
kubectl taint node --all kwok.x-k8s.io/node-

4、实测结果

Kubernetes 集群组件均以 docker 容器方式运行
 

09ef5c33405b   registry.k8s.io/kube-scheduler:v1.29.0            "kube-scheduler --ku…"   10 minutes ago   Up 23 seconds     kwok-kwok-kube-scheduler
1b860a04fbf5   registry.k8s.io/kube-controller-manager:v1.29.0   "kube-controller-man…"   10 minutes ago   Up 23 seconds     kwok-kwok-kube-controller-manager
a8368d53cc66   registry.k8s.io/kwok/kwok:v0.5.1                  "kwok --manage-all-n…"   10 minutes ago   Up 23 seconds     kwok-kwok-kwok-controller
3615b8f84f1a   registry.k8s.io/kube-apiserver:v1.29.0            "kube-apiserver --et…"   10 minutes ago   Up 23 seconds     kwok-kwok-kube-apiserver


四、kwokctl 常用命令
kwokctl --help
kwokctl is a tool to streamline the creation and management of clusters, with nodes simulated by kwok

Usage:
  kwokctl [command] [flags]
  kwokctl [command]

Available Commands:
  completion  Generate the autocompletion script for the specified shell
  config      Manage [reset, tidy, view] default config
  create      Creates one of [cluster]
  delete      Deletes one of [cluster]
  etcdctl     etcdctl in cluster
  export      Exports one of [logs]
  get         Gets one of [artifacts, clusters, kubeconfig]
  hack        [experimental] Hack [get, put, delete] resources in etcd without apiserver
  help        Help about any command
  kubectl     kubectl in cluster
  logs        Logs one of [audit, etcd, kube-apiserver, kube-controller-manager, kube-scheduler, kwok-controller, dashboard, metrics-server, prometheus, jaeger]
  scale       Scale a resource in cluster
  snapshot    Snapshot [save, restore, record, replay, export] one of cluster
  start       Start one of [cluster]
  stop        Stop one of [cluster]

Flags:
  -c, --config strings   config path (default [~/.kwok/kwok.yaml])
      --dry-run          Print the command that would be executed, but do not execute it
  -h, --help             help for kwokctl
      --name string      cluster name (default "kwok")
  -v, --v log-level      number for the log level verbosity (DEBUG, INFO, WARN, ERROR) or (-4, 0, 4, 8) (default INFO)
      --version          version for kwokctl

Use "kwokctl [command] --help" for more information about a command.
# 查看 kwok 集群,可选项:artifacts, clusters, kubeconfig
kwokctl get clusters

# 切换 kwok 集群
kubectl config use-context kwok-kwok

# 停止 kwok 集群
kwokctl  stop  cluster --name=kwok

# 启动 kwok 集群
kwokctl start  cluster --name=kwok

# 删除 kwok 集群
kwokctl delete cluster --name=kwok

# 执行 etcdctl 命令
kwokctl etcdctl xxx

# 执行 kubectl 命令
kwokctl kubectl xxx

# 查看日志,可选项:etcd, kube-apiserver, kube-controller-manager, kube-scheduler, kwok-controller
kwokctl logs xxx

  • 20
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行者Sun1989

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值