简介: 本机上运行k8s的各种不同软件的对比和结构图
1. 本地k8s运行总结
1) 运行软件
(1) minikube kind k3s
(2) MicroK8S
(3) K0S
(4) Docker Desktop
(5) OpenShift
2) 各种系统主要图
(1) k3s
(2) k0s
(3) MiniKube
(4) Kind
(5) K8s
(6) Docker Desktop k8s
(7) OpenShit CRC
https://www.yuque.com/wushifengcn/kb/fb9tb8
https://developer.aliyun.com/article/881518
本机上运行k8s的各种不同软件的对比和结构图

|
|
MICROK8S |
K3S |
MINIKUBE |
|
CNCF certified |
Yes |
Yes |
Yes |
|
Vanilla Kubernetes |
Yes |
– |
Yes |
|
Architecture support |
x86, ARM64, s390x |
x86, ARM64, ARMhf |
x86, ARM64, ARMv7, ppc64, s390x |
|
Enterprise support |
Yes |
Yes |
– |
|
Single-node support |
Yes |
Yes |
Yes |
|
Multi-node cluster support |
Yes |
Yes |
– |
|
Automatic high availability |
Yes |
– |
– |
|
Automatic updates |
Yes |
– |
– |
|
Memory requirements |
540 MB |
512 MB |
2 GB |
|
Add-on functionality |
Yes |
– |
Yes |
|
Container runtime |
containerd, kata |
CRI-O |
Docker, containerd, CRI-O |
|
Networking |
Calico, Cilium, CoreDNS, Traefik, NGINX, Ambassador, Multus, MetalLB |
Flannel, CoreDNS, Traefik, Canal, Klipper |
Calico, Cilium, Flannel, ingress, DNS, Kindnet |
|
Storage |
Hostpath storage, OpenEBS, Ceph |
Hostpath storage, Longhorn |
Hostpath storage |
|
GPU acceleration |
Yes |
– |
Yes |
https://computingforgeeks.com/k0s-vs-k3s-vs-microk8s-kubernetes-distributions-comparison/
|
Feature |
k0s |
k3s |
microk8s |
|
Licensing |
Completely Open Source |
Completely Open Source |
Completely Open Source |
|
Packaging |
k0s is distributed as a single binary with minimal host OS dependencies besides the host OS kernel |
Packaged as a single binary. |
MicroK8s is a Kubernetes cluster delivered as a single snap package. |
|
Kubernetes Versions |
v1.20 and v1.21 |
Latest release updates Kubernetes to v1.22.1 |
Kubernetes v1.22, v1.21 |
|
Container Runtime |
ContainerD (default) |
ContainerD (default) |
ContainerD is the container runtime used by MicroK8s |
|
Supported Host OS |
Linux (kernel v3.10 or newer) Windows Server 2019 (experimental) |
K3s is expected to work on most modern Linux systems |
Windows 10, Linux, macOS |
|
Control Plane Storage Options |
In-Cluster Elastic Etcd with TLS (default), In-Cluster SQLite (default for single node), External PostgreSQL, External MySQL |
sqlite3 is the default storage mechanism. etcd3, MySQL, Postgres also still available |
MicroK8s supports high availability using Dqlite as the datastore for cluster state. |
|
Built-In Security Features |
RBAC, Support OpenID Providers, Pod Security Policies, Network Policies, Micro VM Runtimes (coming soon), Control Plane Isolation |
Secure by default with reasonable defaults for lightweight environments |
Secure by default with reasonable defaults for lightweight environments |
|
Supported CNI Providers |
Kube-Router (default), Calico or Custom |
K3s will run with flannel by default as the CNI, using VXLAN as the default backend. Custom supported as well |
Flanneld runs if ha-cluster is not enabled. If ha-cluster is enabled, calico is run instead. |
|
Supported Machine Architectures |
x86-64, ARM64, ARMv7 |
Latest release supports x86_64, ARMv7, and ARM64 |
x86_64, ARMv7, and ARM64 |
|
Backing Company |
Mirantis |
Rancher |
Canonical |
|
Addons |
Minimum Addons |
Traefik, Helm,LB |
Dashboard, Ingress, DNS, and more |
https://docs.docker.com/desktop/kubernetes/
If you have Docker Desktop, go to preferences, go to the Kubernetes tab, and click Enable Kubernetes.

CodeReady Containers (CRC) manages a local OpenShift 4.x cluster optimized for testing and development purposes. https://github.com/code-ready/crc
Minishift helps you run OpenShift 3.x clusters locally by running a single-node OpenShift cluster inside a virtual machine (VM). https://github.com/minishift/minishift

https://docs.rancher.cn/docs/k3s/architecture/_index
单节点k3s server的架构

K3s高可用架构
一个高可用 K3s 集群由以下几个部分组成:

https://docs.k0sproject.io/v1.23.5+k0s.0/architecture/








总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby中使用两个参数异步运行exe吗?我已经尝试过ruby命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何rubygems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
GivenIamadumbprogrammerandIamusingrspecandIamusingsporkandIwanttodebug...mmm...let'ssaaay,aspecforPhone.那么,我应该把“require'ruby-debug'”行放在哪里,以便在phone_spec.rb的特定点停止处理?(我所要求的只是一个大而粗的箭头,即使是一个有挑战性的程序员也能看到:-3)我已经尝试了很多位置,除非我没有正确测试它们,否则会发生一些奇怪的事情:在spec_helper.rb中的以下位置:require'rubygems'require'spork'
是否有可能:before_filter:authenticate_user!||:authenticate_admin! 最佳答案 before_filter:do_authenticationdefdo_authenticationauthenticate_user!||authenticate_admin!end 关于ruby-on-rails-before_filter运行多个方法,我们在StackOverflow上找到一个类似的问题: https://
给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最