0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

探入探讨k0s介绍及k0sctl使用

马哥Linux运维 来源:博客 作者:博客 2021-10-20 15:51 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

最近两年一直在使用 kubeadm 部署 Kubernetes 集群,总体来说配合一些自己小脚本还有一些自动化工具还算是方便;但是全容器化稳定性确实担忧,也遇到过莫名其妙的证书过期错误,最后重启大法解决这种问题;所以也在探索比较方便的二进制部署方式,比如这个 k0s。

一、k0s 介绍

The Simple, Solid & Certified Kubernetes Distribution.

k0s 可以认为是一个下游的 Kubernetes 发行版,与原生 Kubernetes 相比,k0s 并未阉割大量 Kubernetes 功能;k0s 主要阉割部分基本上只有树内 Cloud provider,其他的都与原生 Kubernetes 相同。

k0s 自行编译 Kubernetes 源码生成 Kubernetes 二进制文件,然后在安装后将二进制文件释放到宿主机再启动;这种情况下所有功能几乎与原生 Kubernetes 没有差异。

二、k0sctl 使用

k0sctl 是 k0s 为了方便快速部署集群所提供的工具,有点类似于 kubeadm,但是其扩展性要比 kubeadm 好得多。在多节点的情况下,k0sctl 通过 SSH 链接目标主机然后按照步骤释放文件并启动 Kubernetes 相关服务,从而完成集群初始化。

2.1、k0sctl 安装集群

安装过程中会自动下载相关镜像,需要保证所有节点可以扶墙,如何离线安装后面讲解。安装前保证目标机器的 hostname 为非域名形式,否则可能会出现一些问题。以下是一个简单的启动集群示例:

首先安装 k0sctl:

#安装k0sctl
wgethttps://github.com/k0sproject/k0sctl/releases/download/v0.9.0/k0sctl-linux-x64
chmod+xk0sctl-linux-x64
mvk0sctl-linux-x64/usr/local/bin/k0sctl

然后编写 k0sctl.yaml 配置文件:

apiVersion:k0sctl.k0sproject.io/v1beta1
kind:Cluster
metadata:
name:k0s-cluster
spec:
hosts:
-ssh:
address:10.0.0.11
user:root
port:22
keyPath:/Users/bleem/.ssh/id_rsa
role:controller+worker
-ssh:
address:10.0.0.12
user:root
port:22
keyPath:/Users/bleem/.ssh/id_rsa
role:controller+worker
-ssh:
address:10.0.0.13
user:root
port:22
keyPath:/Users/bleem/.ssh/id_rsa
role:controller+worker
-ssh:
address:10.0.0.14
user:root
port:22
keyPath:/Users/bleem/.ssh/id_rsa
role:worker
-ssh:
address:10.0.0.15
user:root
port:22
keyPath:/Users/bleem/.ssh/id_rsa
role:worker
k0s:
version:1.21.2+k0s.1
config:
apiVersion:k0s.k0sproject.io/v1beta1
kind:Cluster
metadata:
name:k0s
spec:
api:
address:10.0.0.11
port:6443
k0sApiPort:9443
sans:
-10.0.0.11
-10.0.0.12
-10.0.0.13
storage:
type:etcd
etcd:
peerAddress:10.0.0.11
network:
kubeProxy:
disabled:false
mode:ipvs

最后执行 apply 命令安装即可,安装前确保你的操作机器可以 SSH 免密登陆所有目标机器:

➜tmpk0sctlapply-cbak.yaml

⠀⣿⣿⡇⠀⠀⢀⣴⣾⣿⠟⠁⢸⣿⣿⣿⣿⣿⣿⣿⡿⠛⠁⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀█████████████████████
⠀⣿⣿⡇⣠⣶⣿⡿⠋⠀⠀⠀⢸⣿⡇⠀⠀⠀⣠⠀⠀⢀⣠⡆⢸⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀█████████
⠀⣿⣿⣿⣿⣟⠋⠀⠀⠀⠀⠀⢸⣿⡇⠀⢰⣾⣿⠀⠀⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀█████████
⠀⣿⣿⡏⠻⣿⣷⣤⡀⠀⠀⠀⠸⠛⠁⠀⠸⠋⠁⠀⠀⣿⣿⡇⠈⠉⠉⠉⠉⠉⠉⠉⠉⢹⣿⣿⠀█████████
⠀⣿⣿⡇⠀⠀⠙⢿⣿⣦⣀⠀⠀⠀⣠⣶⣶⣶⣶⣶⣶⣿⣿⡇⢰⣶⣶⣶⣶⣶⣶⣶⣶⣾⣿⣿⠀██████████████████████

k0sctl0.0.0Copyright2021,k0sctlauthors.
Anonymizedtelemetryofusagewillbesenttotheauthors.
Bycontinuingtousek0sctlyouagreetotheseterms:
https://k0sproject.io/licenses/eula
INFO==>Runningphase:Connecttohosts
INFO[ssh]10.0.0.15connected
INFO[ssh]10.0.0.11connected
INFO[ssh]10.0.0.12connected
INFO[ssh]10.0.0.14connected
INFO[ssh]10.0.0.13connected
INFO==>Runningphase:Detecthostoperatingsystems
INFO[ssh]10.0.0.11isrunningUbuntu20.04.2LTS
INFO[ssh]10.0.0.12isrunningUbuntu20.04.2LTS
INFO[ssh]10.0.0.14isrunningUbuntu20.04.2LTS
INFO[ssh]10.0.0.13isrunningUbuntu20.04.2LTS
INFO[ssh]10.0.0.15isrunningUbuntu20.04.2LTS
INFO==>Runningphase:Preparehosts
INFO==>Runningphase:Gatherhostfacts
INFO[ssh]10.0.0.11discoveredens33asprivateinterface
INFO[ssh]10.0.0.13discoveredens33asprivateinterface
INFO[ssh]10.0.0.12discoveredens33asprivateinterface
INFO==>Runningphase:Downloadk0sonhosts
INFO[ssh]10.0.0.11downloadingk0s1.21.2+k0s.1
INFO[ssh]10.0.0.13downloadingk0s1.21.2+k0s.1
INFO[ssh]10.0.0.12downloadingk0s1.21.2+k0s.1
INFO[ssh]10.0.0.15downloadingk0s1.21.2+k0s.1
INFO[ssh]10.0.0.14downloadingk0s1.21.2+k0s.1
......

稍等片刻后带有三个 Master 和两个 Node 的集群将安装完成:

#注意:目标机器 hostname 不应当为域名形式,这里的样例是已经修复了这个问题
k1.node➜~k0skubectlgetnode-owide
NAMESTATUSROLESAGEVERSIONINTERNAL-IPEXTERNAL-IPOS-IMAGEKERNEL-VERSIONCONTAINER-RUNTIME
k1.nodeReady10mv1.21.2+k0s10.0.0.11Ubuntu20.04.2LTS5.4.0-77-genericcontainerd://1.4.6
k2.nodeReady10mv1.21.2+k0s10.0.0.12Ubuntu20.04.2LTS5.4.0-77-genericcontainerd://1.4.6
k3.nodeReady10mv1.21.2+k0s10.0.0.13Ubuntu20.04.2LTS5.4.0-77-genericcontainerd://1.4.6
k4.nodeReady10mv1.21.2+k0s10.0.0.14Ubuntu20.04.2LTS5.4.0-77-genericcontainerd://1.4.6
k5.nodeReady10mv1.21.2+k0s10.0.0.15Ubuntu20.04.2LTS5.4.0-77-genericcontainerd://1.4.6

2.2、k0sctl 的扩展方式

与 kubeadm 不同,k0sctl 几乎提供了所有安装细节的可定制化选项,其通过三种行为来完成扩展:

  • 文件上传:k0sctl 允许定义在安装前的文件上传,在安装之前 k0sctl 会把已经定义的相关文件全部上传到目标主机,包括不限于 k0s 本身二进制文件、离线镜像包、其他安装文件、其他辅助脚本等。

  • Manifests 与 Helm:当将特定的文件上传到 Master 节点的 /var/lib/k0s/manifests 目录时,k0s 在安装过程中会自动应用这些配置,类似 kubelet 的 static pod 一样,只不过 k0s 允许全部资源(包括不限于 Deployment、DaemonSet、namespace 等);同样也可以直接在 k0sctl.yaml 添加 Helm 配置,k0s 也会以同样的方式帮你管理。

  • 辅助脚本:可以在每个主机下配置 hooks 选项来实现执行一些特定的脚本(文档里没有,需要看源码),以便在特定情况下做点骚操作。

2.3、k0sctl 使用离线镜像包

基于上面的扩展,k0s 还方便的帮我们集成了离线镜像包的自动导入,我们只需要定义一个文件上传,将镜像包上传到 /var/lib/k0s/images/ 目录后,k0s 会自定将其倒入到 containerd 中而无需我们手动干预:

apiVersion:k0sctl.k0sproject.io/v1beta1
kind:Cluster
metadata:
name:k0s-cluster
spec:
hosts:
-ssh:
address:10.0.0.11
user:root
port:22
keyPath:/Users/bleem/.ssh/id_rsa
role:controller+worker
#files配置将会在安装前将相关文件上传到目标主机
files:
-name:image-bundle
src:/Users/bleem/tmp/bundle_file
#在该目录下的image压缩包将会被自动导入到containerd中
dstDir:/var/lib/k0s/images/
perm:0755
......

关于 image 压缩包(bundle_file)如何下载以及自己自定义问题请参考官方 Airgap install[1] 文档。
2.4、切换 CNI 插件

默认情况下 k0s 内部集成了两个 CNI 插件:Calico 和 kube-router;如果我们使用其他的 CNI 插件例如 Flannel,我们只需要将默认的 CNI 插件设置为 custom,然后将 Flannel 的部署 yaml 上传到一台 Master 的 /var/lib/k0s/manifests 目录即可,k0s 会自动帮我门执行 apply -f xxxx.yaml 这种操作。

下面是切换到 Flannel 的样例,需要注意的是 Flannel 官方镜像不会帮你安装 CNI 的二进制文件,我们需要借助文件上传自己安装(CNI GitHub 插件下载地址[2]):

apiVersion:k0sctl.k0sproject.io/v1beta1
kind:Cluster
metadata:
name:k0s-cluster
spec:
hosts:
-ssh:
address:10.0.0.11
user:root
port:22
keyPath:/Users/bleem/.ssh/id_rsa
role:controller+worker
files:
#将Flannel的yaml放到Manifests里(需要单独创建一个目录)
-name:flannel
src:/Users/bleem/tmp/kube-flannel.yaml
dstDir:/var/lib/k0s/manifests/flannel
perm:0644
#自己安装一下CNI插件
-name:cni-plugins
src:/Users/bleem/tmp/cni-plugins/*
dstDir:/opt/cni/bin/
perm:0755
k0s:
version:v1.21.2+k0s.1
config:
apiVersion:k0s.k0sproject.io/v1beta1
kind:Cluster
metadata:
name:k0s
spec:
api:
address:10.0.0.11
port:6443
k0sApiPort:9443
sans:
-10.0.0.11
-10.0.0.12
-10.0.0.13
storage:
type:etcd
network:
podCIDR:10.244.0.0/16
serviceCIDR:10.96.0.0/12
#这里指定CNI为custom自定义类型,这样
#k0s就不会安装Calico/kube-router了
provider:custom

2.5、上传 k0s 二进制文件

除了普通文件、镜像压缩包等,默认情况下 k0sctl 在安装集群时还会在目标机器上下载 k0s 二进制文件;当然在离线环境下这一步也可以通过一个简单的配置来实现离线上传:

apiVersion:k0sctl.k0sproject.io/v1beta1
kind:Cluster
metadata:
name:k0s-cluster
spec:
hosts:
-ssh:
address:10.0.0.11
user:root
port:22
keyPath:/Users/bleem/.ssh/id_rsa
role:controller+worker
#声明需要上传二进制文件
uploadBinary:true
#指定二进制文件位置
k0sBinaryPath:/Users/bleem/tmp/k0s
files:
-name:flannel
src:/Users/bleem/tmp/kube-flannel.yaml
dstDir:/var/lib/k0s/manifests/flannel
perm:0644
......

2.6、更换镜像版本

默认情况下 k0s 版本号与 Kubernetes 保持一致,但是如果期望某个组件使用特定的版本,则可以直接配置这些内置组件的镜像名称:

apiVersion:k0sctl.k0sproject.io/v1beta1
kind:Cluster
metadata:
name:k0s-cluster
spec:
hosts:
-ssh:
address:10.0.0.11
user:root
port:22
keyPath:/Users/bleem/.ssh/id_rsa
role:controller+worker
uploadBinary:true
k0sBinaryPath:/Users/bleem/tmp/k0s
files:
-name:flannel
src:/Users/bleem/tmp/kube-flannel.yaml
dstDir:/var/lib/k0s/manifests/flannel
perm:0644
......
k0s:
version:v1.21.2+k0s.1
config:
apiVersion:k0s.k0sproject.io/v1beta1
kind:Cluster
metadata:
name:k0s
spec:
api:
address:10.0.0.11
port:6443
k0sApiPort:9443
sans:
-10.0.0.11
-10.0.0.12
-10.0.0.13
#指定内部组件的镜像使用的版本
images:
#konnectivity:
#image:us.gcr.io/k8s-artifacts-prod/kas-network-proxy/proxy-agent
#version:v0.0.21
#metricsserver:
#image:gcr.io/k8s-staging-metrics-server/metrics-server
#version:v0.3.7
kubeproxy:
image:k8s.gcr.io/kube-proxy
version:v1.21.3
#coredns:
#image:docker.io/coredns/coredns
#version:1.7.0
#calico:
#cni:
#image:docker.io/calico/cni
#version:v3.18.1
#node:
#image:docker.io/calico/node
#version:v3.18.1
#kubecontrollers:
#image:docker.io/calico/kube-controllers
#version:v3.18.1
#kuberouter:
#cni:
#image:docker.io/cloudnativelabs/kube-router
#version:v1.2.1
#cniInstaller:
#image:quay.io/k0sproject/cni-node
#version:0.1.0
default_pull_policy:IfNotPresent
#default_pull_policy:Never

2.7、调整 Master 组件参数

熟悉 Kubernetes 的应该清楚,Master 上三大组件:apiserver、controller、scheduler 管控整个集群;在 k0sctl 安装集群的过程中也允许自定义这些组件的参数,这些调整通过修改使用的 k0sctl.yaml 配置文件完成。

spec.api.extraArgs:用于自定义 kube-apiserver 的自定义参数(KV map)

spec.scheduler.extraArgs:用于自定义 kube-scheduler 的自定义参数(KV map)

spec.controllerManager.extraArgs:用于自定义 kube-controller-manager 自定义参数(KV map)

spec.workerProfiles:用于覆盖 kubelet-config.yaml 中的配置,该配置最终将于默认的 kubelet-config.yaml 合并

除此之外在 Host 配置中还有一个 InstallFlags 配置用于传递 k0s 安装时的其他配置选项。

三、k0s HA 搭建

其实上面的第二部分主要都是介绍 k0sctl 一些基础功能,为的就是给下面这部分 HA 生产级部署做铺垫。

就目前来说,k0s HA 仅支持独立负载均衡器的 HA 架构;即外部需要有一个高可用的 4 层负载均衡器,其他所有 Node 节点链接这个负载均衡器实现 Master 的高可用。在使用 k0sctl 命令搭建 HA 集群时很简单,只需要添加一个外部负载均衡器地址即可;以下是一个完整的,全离线状态下的 HA 集群搭建配置。

3.1、外部负载均衡器

在搭建之前我们假设已经有一个外部的高可用的 4 层负载均衡器,且负载均衡器已经负载了以下端口

6443(for Kubernetes API):负载均衡器 6443 负载所有 Master 节点的 6443

9443(for controller join API):负载均衡器 9443 负载所有 Master 节点的 9443

8132(for Konnectivity agent):负载均衡器 8132 负载所有 Master 节点的 8132

8133(for Konnectivity server):负载均衡器 8133 负载所有 Master 节点的 8133

以下为一个 Nginx 4 层代理的样例:

error_logsyslog:server=unix:/dev/lognotice;

worker_processesauto;
events{
multi_accepton;
useepoll;
worker_connections1024;
}

stream{
upstreamkube_apiserver{
least_conn;
server10.0.0.11:6443;
server10.0.0.12:6443;
server10.0.0.13:6443;
}
upstreamkonnectivity_agent{
least_conn;
server10.0.0.11:8132;
server10.0.0.12:8132;
server10.0.0.13:8132;
}
upstreamkonnectivity_server{
least_conn;
server10.0.0.11:8133;
server10.0.0.12:8133;
server10.0.0.13:8133;
}
upstreamcontroller_join_api{
least_conn;
server10.0.0.11:9443;
server10.0.0.12:9443;
server10.0.0.13:9443;
}

server{
listen0.0.0.0:6443;
proxy_passkube_apiserver;
proxy_timeout10m;
proxy_connect_timeout1s;
}
server{
listen0.0.0.0:8132;
proxy_passkonnectivity_agent;
proxy_timeout10m;
proxy_connect_timeout1s;
}
server{
listen0.0.0.0:8133;
proxy_passkonnectivity_server;
proxy_timeout10m;
proxy_connect_timeout1s;
}
server{
listen0.0.0.0:9443;
proxy_passcontroller_join_api;
proxy_timeout10m;
proxy_connect_timeout1s;
}
}

3.2、搭建 HA 集群

以下为 k0sctl 的 HA + 离线部署样例配置:

apiVersion:k0sctl.k0sproject.io/v1beta1
kind:Cluster
metadata:
name:k0s-cluster
spec:
hosts:
-ssh:
address:10.0.0.11
user:root
port:22
keyPath:/Users/bleem/.ssh/id_rsa
#role支持的值
#'controller'单Master
#'worker'单Worker
#'controller+worker'Master和Worker都运行
role:controller+worker

#从本地上传k0sbin文件,不要在目标机器下载
uploadBinary:true
k0sBinaryPath:/Users/bleem/tmp/k0s

#上传其他文件
files:
#上传Flannel配置,使用自定的Flannel替换内置的Calico
-name:flannel
src:/Users/bleem/tmp/kube-flannel.yaml
dstDir:/var/lib/k0s/manifests/flannel
perm:0644

#上传打包好的image镜像包,k0s会自动导入到containerd
-name:image-bundle
src:/Users/bleem/tmp/bundle_file
dstDir:/var/lib/k0s/images/
perm:0755

#使用Flannel后每个机器要上传对应的CNI插件
-name:cni-plugins
src:/Users/bleem/tmp/cni-plugins/*
dstDir:/opt/cni/bin/
perm:0755
-ssh:
address:10.0.0.12
user:root
port:22
keyPath:/Users/bleem/.ssh/id_rsa
role:controller+worker
uploadBinary:true
k0sBinaryPath:/Users/bleem/tmp/k0s
files:
-name:image-bundle
src:/Users/bleem/tmp/bundle_file
dstDir:/var/lib/k0s/images/
perm:0755
-name:cni-plugins
src:/Users/bleem/tmp/cni-plugins/*
dstDir:/opt/cni/bin/
perm:0755
-ssh:
address:10.0.0.13
user:root
port:22
keyPath:/Users/bleem/.ssh/id_rsa
role:controller+worker
uploadBinary:true
k0sBinaryPath:/Users/bleem/tmp/k0s
files:
-name:image-bundle
src:/Users/bleem/tmp/bundle_file
dstDir:/var/lib/k0s/images/
perm:0755
-name:cni-plugins
src:/Users/bleem/tmp/cni-plugins/*
dstDir:/opt/cni/bin/
perm:0755
-ssh:
address:10.0.0.14
user:root
port:22
keyPath:/Users/bleem/.ssh/id_rsa
role:worker
uploadBinary:true
k0sBinaryPath:/Users/bleem/tmp/k0s
files:
-name:image-bundle
src:/Users/bleem/tmp/bundle_file
dstDir:/var/lib/k0s/images/
perm:0755
-name:cni-plugins
src:/Users/bleem/tmp/cni-plugins/*
dstDir:/opt/cni/bin/
perm:0755
-ssh:
address:10.0.0.15
user:root
port:22
keyPath:/Users/bleem/.ssh/id_rsa
role:worker
uploadBinary:true
k0sBinaryPath:/Users/bleem/tmp/k0s
files:
-name:image-bundle
src:/Users/bleem/tmp/bundle_file
dstDir:/var/lib/k0s/images/
perm:0755
-name:cni-plugins
src:/Users/bleem/tmp/cni-plugins/*
dstDir:/opt/cni/bin/
perm:0755
k0s:
version:v1.21.2+k0s.1
config:
apiVersion:k0s.k0sproject.io/v1beta1
kind:Cluster
metadata:
name:k0s
spec:
api:
#此处填写外部的负载均衡器地址,所有kubelet会链接这个地址
externalAddress:10.0.0.20
#不要忘了为外部负载均衡器添加API证书的SAN
sans:
-10.0.0.11
-10.0.0.12
-10.0.0.13
-10.0.0.20
#存储类型使用etcd,etcd集群由k0s自动管理
storage:
type:etcd
network:
podCIDR:10.244.0.0/16
serviceCIDR:10.96.0.0/12
#网络插件使用custom,然后让Flannel接管
provider:custom
kubeProxy:
disabled:false
#开启kubelet的ipvs模式
mode:ipvs
#不发送任何匿名统计信息
telemetry:
enabled:false
images:
default_pull_policy:IfNotPresent

最后只需要执行 k0sctl apply -c k0sctl.yaml 稍等几分钟集群就搭建好了,安装过程中可以看到相关文件的上传流程:

3d184880-315e-11ec-82a8-dac502259ad0.png

3.3、证书续签和管理

kubeadm 集群默认证书有效期是一年,到期要通过 kubeadm 重新签署;k0s 集群也差不多一样,但是不同的是 k0s 集群更加暴力;只要 CA(默认 10年)不丢,k0s 每次重启都强行重新生成一年有效期的证书,所以在 HA 的环境下,快到期时重启一下 k0s 服务就行。

k0sctl 安装完的集群默认只有一个 k0scontroller.service 服务,Master、Node 上所有服务都由这个服务启动,所以到期之前 systemctl restart k0scontroller.service 一下就行。

四、集群备份和恢复

k0sctl 提供了集群备份和恢复功能,默认情况下只需要执行 k0sctl backup 即可完成集群备份,该命令会在当前目录下生成一个 k0s_backup_TIMESTAMP.tar.gz 备份文件。

需要恢复集群时使用 k0sctl apply --restore-from k0s_backup_TIMESTAMP.tar.gz 命令进行恢复即可;需要注意的是恢复命令等同于在新机器重新安装集群,所以有一定风险。

经过连续两天的测试,感觉这个备份恢复功能并不算靠谱,还是推荐使用 Velero 备份集群。

五、其他高级功能

5.1、etcd 替换

在小规模集群场景下可能并不需要特别完善的 etcd 作为存储,k0s 借助于 kine 库可以实现使用 SQLite 或 MySQL 等传统数据库作为集群存储;如果想要切换存储只需要调整 k0sctl.yaml 配置即可:

apiVersion:k0s.k0sproject.io/v1beta1
kind:Cluster
metadata:
name:k0s
spec:
storage:
type:kine
kine:
dataSource:"sqlite:///var/lib/k0s/db/state.db?more=rwc&_journal=WAL&cache=shared"

5.2、集群用户管理

使用 k0sctl 搭建的集群通过 k0s 命令可以很方便的为集群添加用户,以下是添加样例:

k0skubeconfigcreate--groups"system:masters"testUser>k0s.config

5.3、Containerd 配置

在不做配置的情况下 k0s 集群使用默认的 Containerd 配置,如果需要自己定义特殊配置,可以在安装时通过文件上传方式将 Containerd 配置文件上传到 /etc/k0s/containerd.toml 位置,该配置将会被 k0s 启动的 Containerd 读取并使用。

六、总结

k0s 是个不错的项目,对于二进制宿主机部署 Kubernetes 集群很方便,由于其直接采用 Kubernetes 二进制文件启动,所以基本没有功能阉割,而 k0sctl 又为自动化安装提供了良好的扩展性,所以值得一试。不过目前来说 k0s 在细节部分还有一定瑕疵,比如 konnectivity 服务在安装时无法选择性关闭等;k0s 综合来说是个不错的工具,也推荐看看源码,里面很多设计很新颖也比较利于了解集群引导过程。

相关链接:

https://docs.k0sproject.io/v1.21.2+k0s.1/airgap-install/

https://github.com/containernetworking/plugins/releases

原文链接:https://mritd.com/2021/07/29/test-the-k0s-cluster/

编辑:jq
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器
    +关注

    关注

    0

    文章

    801

    浏览量

    41998
  • 源码
    +关注

    关注

    8

    文章

    689

    浏览量

    31587
  • 负载均衡器
    +关注

    关注

    0

    文章

    20

    浏览量

    2741

原文标题:K0S 使用实战介绍

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    AIM5D05K060M2/AIM5D05K060M2S智能功率模块:特性、参数与应用解析

    。今天我们就来详细探讨一下AIM5D05K060M2/AIM5D05K060M2S这款双列直插式智能功率模块。 文件下载: AIM5D05K060M2S.pdf 模块外观与基本信息
    的头像 发表于 05-16 14:50 613次阅读

    HPT5K0-L系列AC - DC电源:高性能设计与应用

    ,成为众多工程师的理想选择。下面将为大家详细介绍这款电源的特点、性能参数以及应用场景。 文件下载: HPT5K0TS200-L.pdf 一、产品概述 HPT5K0 - L系列电源提供了输出电压和输出电流
    的头像 发表于 04-27 14:05 206次阅读

    Texas Instruments Stellaris® LM3S5K36微控制器:设计全解析

    深入探讨Texas Instruments的Stellaris® LM3S5K36微控制器,从架构到各个功能模块,全面了解它的设计奥秘。 文件下载: LM3S5K36-IQR80-C0T.pdf 架构概述
    的头像 发表于 04-20 14:05 294次阅读

    使用S32K344_0_2_55.0版本HSE(fullmem)无法进行re-format the NVM and RAM catalogs是怎么回事?

    S32K344芯片上安装S32K344_0_2_55.0版本HSE固件后,HSE固件版本号可以正确读取出来。但是在进行re-format the NVM and RAM catalogs的操作
    发表于 04-20 07:41

    安森美NVNJWS5K0P061L P沟道MOSFET:性能剖析与应用指南

    深入探讨安森美(onsemi)的NVNJWS5K0P061L P沟道MOSFET,了解其特点、参数以及应用场景。 文件下载: NVNJWS5K0P061L-D.PDF 产品概述 NVNJWS5
    的头像 发表于 04-19 10:40 335次阅读

    onsemi NVNJWS0K9N10MCL N沟道功率MOSFET深度解析

    onsemi NVNJWS0K9N10MCL N沟道功率MOSFET深度解析 在电子设计领域,MOSFET作为一种关键的半导体器件,广泛应用于各类电路中。今天,我们要来详细探索 onsemi 公司
    的头像 发表于 04-19 10:40 309次阅读

    厚声RSF系列RSF1JB10K0电阻:高耐压与抗脉冲特性分析

    厚声RSF系列RSF1JB10K0电阻的高耐压与抗脉冲特性分析如下 : 一、高耐压特性 1、电压额定值与材料设计 RSF系列电阻采用金属氧化物(Metal Oxide)材料,具有高介电强度特性。以
    的头像 发表于 04-16 16:31 196次阅读
    厚声RSF系列RSF1JB10<b class='flag-5'>K0</b>电阻:高耐压与抗脉冲特性分析

    Freescale K10P32M50SF0芯片:性能与应用深度解析

    Freescale K10P32M50SF0芯片:性能与应用深度解析 在电子工程师的日常工作中,选择一款合适的芯片对于项目的成功至关重要。Freescale的K10P32M50SF0芯片,属于K
    的头像 发表于 04-10 09:35 376次阅读

    S32K3 OTA 演示示例在 EVB 上复位后无法启动S32K358怎么解决?

    S32K344 移植到 S32K358 时所做的修改: 1. 链接器文件调整 int_flash_app : 原点 = 0x00600000,长度 = 0x001D4000 /* 2
    发表于 03-06 07:59

    探索S32K3xx系列MCU:特性、应用与设计考量

    MCU凭借其丰富的特性和出色的性能,成为了众多工程师的首选。今天,我们就来深入探讨一下S32K3xx系列MCU的相关特性、应用场景以及设计过程中需要考虑的关键因素。 文件下载: NXP
    的头像 发表于 12-25 10:55 1557次阅读

    S32K376 BMU与VCU集成方案:硬件、软件与调试全解析

    S32K376 BMU与VCU集成方案:硬件、软件与调试全解析 在电子工程师的日常工作中,动力总成域控制器的设计是一项充满挑战与机遇的任务。今天,我们将深入探讨基于NXP S32K376 MCU
    的头像 发表于 12-24 14:25 791次阅读

    深入解析S32K396:汽车级MCU的卓越之选

    K3xx MCUs的重要成员,凭借其出色的性能和丰富的功能,为汽车行业带来了新的解决方案。今天,我们就来深入探讨一下S32K396的各项特性和技术参数。 文件下载: NXP Semiconductors
    的头像 发表于 12-24 14:15 961次阅读

    深入解析S32K39、S32K37和S32K36系列MCU:特性、参数与应用考量

    深入解析S32K39、S32K37和S32K36系列MCU:特性、参数与应用考量 在当今的电子工程领域,汽车电子的发展日新月异,对微控制器(MCU)的性能、功能和安全性提出了更高的要求。NXP
    的头像 发表于 12-24 11:50 1193次阅读

    使用J-Link Attach NXP S32K3导致对应RAM区域被初始化成0xDEADBEEF

    在IAR Embedded Workbench for Arm中使用J-Link Attach NXP S32K3的时候,会提示对应RAM区域被初始化成0xDEADBEEF,导致对应RAM区域的数据被“篡改”。
    的头像 发表于 11-03 15:26 5710次阅读
    使用J-Link Attach NXP <b class='flag-5'>S32K</b>3导致对应RAM区域被初始化成<b class='flag-5'>0</b>xDEADBEEF

    LC87F0K08A 8位微控制器8K字节闪存ROM/384字节RAM规格书

    电子发烧友网站提供《LC87F0K08A 8位微控制器8K字节闪存ROM/384字节RAM规格书.pdf》资料免费下载
    发表于 07-17 15:33 0次下载