Skip to main content

Rancher vs. Kubesphere

· 15 min read
info.RancherKubesphere
开发者Rancher/SUSE青云开源
源码rancher/rancherkubesphere/kubesphere
Stars15.5k4.6k
开源协议Apache-2.0控制器 Apache-2.0
前端 AGPL-3.0 / 不允许商业闭源修改前端
安装Helmks-installer(Ansible)+CRD
部署 K8Srke/rancherkubekey
版本v2.5v3.0
监控Grafana+PrometheusPrometheus+前端集成
告警Grafana/Altermanager邮件、企业微信、Slack
日志Banzi OperatorElasticseach, fluentbit + 前端集成
事件日志,审计日志
ServiceMeshIstioIstio
DevOps2.5 之后 Fleet GitOps
2.5 之前 Pipeline/Jenkins
Jenkins
应用商店Helm Repoopenpitrix/openpitrix
角色权限管理
配置方式Web UI/CRD编辑 CRD/yaml
应用HelmHelm/CRD
实现依赖-etcd+redis+minio+openldap+mysql
实现服务rancher+fleetks-controller-manager
ks-apiserver+ks-console
多集群
UI 美观⭐️⭐️⭐️⭐️⭐️
UI 功能⭐️⭐️⭐️⭐️⭐️
云平台集成⭐️⭐️
文档⭐️⭐️⭐️
开发友好⭐️⭐️⭐️⭐️
运维友好⭐️⭐️⭐️⭐️
使用者对 K8S 掌握程度
核心体验多集群运维部署友好的一体化开发
友好=美观的界面
一体化开发=Jenkins+Elastic
核心竞争力多集群
资源管理运维
核心应用集成
集成多功能的美观界面 / AGPL-3.0

Firecracker 运行 AlpineLinux

· 8 min read

Firecracker 是亚马逊 AWS 为了解决虚拟化运行 serveless 服务实现的 VMM/Virtual Machine Monitor,作为 QEMU 的替代品,专注于为云上环境提供虚拟化。

优点

  • 启动快 < 125ms
  • 内存占用少 < 5mb
  • Rust 实现
  • musl 静态链接
  • firecracker 自身约 1.6 MB - 无依赖

Kubernetes vs OpenStack

· 6 min read

10年趋势

简介

vsOpenStackKubernetes
起源2010 年 NASA+Rackspace1.0 2015 年 Google
定位私有云容器编排
主要调度资源计算/VM
存储
网络
容器
及配套周边资源
自定义资源
主要编写语言PythonGolang

人生第四阶段

· 3 min read

人生阶段

鲁道夫·施泰纳的人智学理论,定义人的发展每七年一个阶段。

鲁道夫·施泰纳 - Rudolf Steiner,1861 年 2 月 27 日-1925 年 3 月 30 日,奥地利的哲学家、改革家、建筑师和教育家

Hello CGO

· 2 min read

Tips

初试

# 生成 libdemo.so libdemo.h
go build -buildmode=c-shared -o libdemo.so ./demo.go
# 编译 main
go build main.go
./main

# macos - 查看内容
nm libdemo.so | grep hello -i
# linux
nm libdemo.so
# windows
dumpbin /EXPORTS libdemo.dll

# windows 交叉编译 - 需要安装 mingw
brew install mingw-w64

# 32 位 交叉编译
GOOS=windows GOARCH=386 CGO_ENABLED=1 CC=i686-w64-mingw32-gcc go build -buildmode=c-shared -o libdemo.dll ./demo.go
GOOS=windows GOARCH=386 CGO_ENABLED=1 CC=i686-w64-mingw32-gcc go build main.go

# macos wine 不支持 32 位 - mingw 版本低不支持 64 位
# mac 会出现异常 cc1: sorry, unimplemented: 64-bit mode not compiled in
# 通过 docker 编译
docker run --rm -v $HOME/go:/root/go -v $PWD:/host -w /host wener/go:win sh

GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc go build -buildmode=c-shared -o libdemo.dll ./demo.go
GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc go build main.go

# 回到 mac 使用 wine 执行
# wine 无法在 macos 上编译安装 - 系统版本问题 - 需要使用 cask 安装
brew cask install wine-stable
wine64 main.exe

# wine 4.0 初始化 dll 失败
# 0010:fixme:winsock:set_dont_fragment IP_DONTFRAGMENT for IPv4 not supported in this platform
# 0009:err:module:attach_dlls "libdemo.dll" failed to initialize, aborting
# 0009:err:module:attach_dlls Initializing dlls for L"Z:\\Users\\wener\\demo\\main.exe" failed, status c0000005

demo.go

package main

import "C"

//export Version
func Version() int32 {
return 123
}

//export Hello
func Hello(name *C.char) *C.char {
return C.CString("Hello "+C.GoString(name)+"!")
}

func main() {}

main.go

package main

import "fmt"

/*
#cgo CFLAGS: -I.
#cgo LDFLAGS: -L. -ldemo
#include "libdemo.h"
*/
import "C"

func main() {
fmt.Printf("Int %v String %v\n",C.Version(), C.GoString(C.Hello(C.CString("Wener"))))
}