更多奇技淫巧欢迎订阅博客:https://fuckcloudnative.io
前言
项目的由来
随着“中兴事件”不断升级,引起了国人对国产自主可控技术的高度关注;希望能找到一个稳定、能兼容国产 CPU 的一整套架构方案,来构建 IaaS 平台和 PaaS 平台,满足单位对安全自主可控的需求。要基于全国产方式解决公司业务需求至少要在软硬件层面满足,而国内基本都是基于 x86 解决方案,想找到满足需求的国产化解决方案还是非常困难的事情。
说明
一个二进制工具加一个资源包,不依赖 haproxy keepalived ansible 等重量级工具,一条命令就可实现 kubernetes 高可用集群构建, 无论是单节点还是集群,单 master 还是多 master,生产还是测试都能很好支持!简单不意味着阉割功能,照样能全量支持 kubeadm 所有配置。立即获取 sealos 及 arm64 安装包[1]
1.20 完全移除 docker. 使用
containerd
作为 cri.kubernetes < 1.20
, 仍使用 docker
sealos 特性与优势:
支持 arm64 架构, v1.20 版本离线包支持 containerd 集成,完全抛弃 docker.
支持离线安装,工具与资源包(二进制程序 配置文件 镜像 yaml 文件等)分离,这样不同版本替换不同离线包即可
百年证书
使用简单
支持自定义配置
内核负载,极其稳定,因为简单所以排查问题也极其简单
不依赖 ansible haproxy keepalived, 一个二进制工具,0 依赖
资源包放在阿里云 oss 上,再也不用担心网速
dashboard ingress prometheus 等 APP 同样离线打包,一键安装
etcd 一键备份(etcd 原生 api 调用)。支持上传至 oss,实现异地备份, 用户无需关心细节。
快速开始
注意事项
必须同步所有服务器时间
所有服务器主机名不能重复
推荐
系统支持:centos7.6 以上 ubuntu16.04 以上 内核推荐 4.14 以上
推荐配置:centos7.8
环境信息
主机名 | IP 地址 |
---|---|
master0 | 192.168.0.2 |
master1 | 192.168.0.3 |
master2 | 192.168.0.4 |
node0 | 192.168.0.5 |
服务器密码:123456
kubernetes 高可用安装教程(arm64)
只需要准备好服务器(arm64),在任意一台服务器上执行下面命令即可
-
# 下载并安装sealos, sealos是个golang的二进制工具,直接下载拷贝到bin目录即可, release页面也可下载
-
$ wget -c https:
//sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos-arm64 && \
-
chmod +x sealos-arm64 && mv sealos-arm64 /usr/bin/sealos
-
-
# 下载离线资源包, arm64 版本就不免费了. 请自行购买.
-
-
# 安装一个三master的kubernetes集群
-
$ sealos init --passwd
123456
-
--master
192.168
.0
.2 --master
192.168
.0
.3 --master
192.168
.0
.4
-
--node
192.168
.0
.5
-
--pkg-url /root/kube1
.20
.0-arm64.tar.gz
-
--version v1
.20
.0
参数含义
参数名 | 含义 | 示例 |
---|---|---|
passwd | 服务器密码 | 123456 |
master | k8s master 节点 IP 地址 | 192.168.0.2 |
node | k8s node 节点 IP 地址 | 192.168.0.3 |
pkg-url | 离线资源包地址,支持下载到本地,或者一个远程地址 | /root/kube1.19.0-arm64.tar.gz |
version | 资源包[2]对应的版本 | v1.19.0 |
增加 master
-
$ sealos join --master
192.168
.0
.6 --master
192.168
.0
.7
-
$ sealos join --master
192.168
.0
.6
-192.168
.0
.9 # 或者多个连续IP
增加 node
-
$ sealos join --node
192.168
.0
.6 --node
192.168
.0
.7
-
$ sealos join --node
192.168
.0
.6
-192.168
.0
.9 # 或者多个连续IP
项目的构建
我们解决的问题
containerd 支持 arm64 的二进制
kubernetes 的 arm64 二进制版本(原生支持)
kubernetes 的基础镜像 arm64 版本(原生支持)
基于 ipvs 的高可用需要支持 arm64 镜像版本
快速构建打包产品, 并自动化测试及部署上线.
containerd 支持 arm64
官方的 containerd 是没有 release 到 arm64 版本的二进制, 我们只能基于官方源码, 自己构建二进制项目. 项目开源在这个仓库[3]. 官方的 github仓库[4].
由于官方不发布arm64
版本的containerd
二进制, 所以手动编写了Makefile
. 构建和 linux adm64
一模一样.
基于 ipvs 的 lvscare 支持 arm64
官方源码[5], 我们重写了 dockerfile. 更好的支持 arm64 架构系列.
docker
$ docker pull fanux/lvscare
containerd
$ ctr -n=k8s.io image pull fanux/lvscare
自动化 ci/cd
目前采用 github 的 action 进行自动化 CI/CD. 源码在这里[6]. 测试采用华为云的鲲鹏服务器构建 3master, 1node 进行测试部署. 部署完成后打包发布到sealyun.com[7]
测试调用
因为华为云没有官方的命令行调用生成服务器/公网 ip. 因此自己写了一个小工具[8], 快速生成 ecs. 结合 action 进行快速部署. 下载即可使用.
-
$ mycli huawei create --help
-
create ecs in sgp
-
-
Usage:
-
mycli huawei create [flags]
-
-
Flags:
-
--FlavorRef
string huawei falvor id ,
default is centos
7.6 (
default
"kc1.large.2")
-
--ImageRef
string huawei image id ,
default is
2C
4G (
default
"456416e6-1270-46a4-975e-3558ac03d4cd")
-
--SubnetId
string huawei subnet id (
default
"b5ea4e5d-de19-442b-ac32-3998100e4854")
-
--Vpcid
string huawei Vpcid (
default
"a55545d8-a4cb-436d-a8ec-45c66aff725c")
-
--Zone
string huawei AvailabilityZone ,
default is centos xin jia po (
default
"ap-southeast-3a")
-
--adminPass
string huawei root pass (
default
"Louishong4168@123")
-
-c, --count
int32 Specify huawei ecs count (
default
1)
-
--eip create huawei ecs with eip or not
-
-h, --help help
for create
-
--keyName
string ssh key name
-
--projectId
string huawei project id (
default
"06b275f705800f262f3bc014ffcdbde1")
-
-
Global Flags:
-
--config
string config file (
default is $HOME/.mycli.yaml)
安装演示
安装, 下载最新的sealos
, 以及kubernetes-arm64
的安装包[9].
-
$ wget -c https:
//sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos-arm64 && \
-
chmod +x sealos-arm64 && mv sealos-arm64 /usr/bin/sealos
-
-
$ sealos init --master
192.168
.0
.35 --master
192.168
.0
.83 --master
192.168
.0
.20 --node
192.168
.0
.242 --passwd
123456 --version v1
.20
.0 --pkg-url /tmp/kube1
.20
.0-arm64.tar.gz
-
...
-
13:
55:
14 [DEBG] [ssh.
go:
25] [ssh][
192.168
.0
.242:
22]command result is:
-
13:
55:
14 [INFO] [scp.
go:
159] [ssh][
192.168
.0
.242:
22]transfer total size is:
0MB
-
13:
55:
14 [INFO] [ssh.
go:
58] [ssh][
192.168
.0
.242:
22] rm -rf /root/kube
-
13:
55:
14 [DEBG] [
print.
go:
21] ==>SendPackage==>KubeadmConfigInstall==>InstallMaster0==>JoinMasters==>JoinNodes
-
13:
55:
14 [INFO] [
print.
go:
26] sealos install success.
-
-
___ ___ ___ ___ ___ ___
-
/\ \ /\ \ /\ \ /\__\ /\ \ /\ \
-
/::\ \ /::\ \ /::\ \ /:/ / /::\ \ /::\ \
-
/:/\ \ \ /:/\:\ \ /:/\:\ \ /:/ / /:/\:\ \ /:/\ \ \
-
_\:\~\ \ \ /::\~\:\ \ /::\~\:\ \ /:/ / /:/ \:\ \ _\:\~\ \ \
-
/\ \:\ \ \__\ /:/\:\ \:\__\ /:/\:\ \:\__\ /:/__/ /:/__/ \:\__\ /\ \:\ \ \__\
-
\:\ \:\ \/__/ \:\~\:\ \/__/ \/__\:\/:/ / \:\ \ \:\ \ /:/ / \:\ \:\ \/__/
-
\:\ \:\__\ \:\ \:\__\ \::/ / \:\ \ \:\ /:/ / \:\ \:\__\
-
\:\/:/ / \:\ \/__/ /:/ / \:\ \ \:\/:/ / \:\/:/ /
-
\::/ / \:\__\ /:/ / \:\__\ \::/ / \::/ /
-
\/__/ \/__/ \/__/ \/__/ \/__/ \/__/
-
-
官方文档:sealyun.com
-
项目地址:github.com/fanux/sealos
-
QQ群 :
98488045
-
常见问题:sealyun.com/faq
-
查看部署状态
-
kubectl get node && kubectl get pod -A
-
NAME STATUS ROLES AGE VERSION
-
sealos Ready control-plane,master
4m55s v1
.20
.0
-
sealos
-0001 Ready control-plane,master
4m17s v1
.20
.0
-
sealos
-0002 Ready control-plane,master
4m16s v1
.20
.0
-
sealos
-0003 Ready <none>
3m27s v1
.20
.0
-
NAMESPACE NAME READY STATUS RESTARTS AGE
-
kube-system calico-kube-controllers
-69b47f4dfb
-2mcv2
1/
1 Running
0
4m38s
-
kube-system calico-node-g78tq
1/
1 Running
0
3m32s
-
kube-system calico-node-gccbm
1/
1 Running
0
3m27s
-
kube-system calico-node-gjw2r
1/
1 Running
0
4m38s
-
kube-system calico-node-hc4t8
1/
1 Running
0
4m17s
-
kube-system coredns
-74ff55c5b
-9fjnm
1/
1 Running
0
4m38s
-
kube-system coredns
-74ff55c5b-nttdl
1/
1 Running
0
4m38s
-
kube-system etcd-sealos
1/
1 Running
0
4m37s
-
kube-system etcd-sealos
-0001
1/
1 Running
0
3m59s
-
kube-system etcd-sealos
-0002
1/
1 Running
0
3m57s
-
kube-system kube-apiserver-sealos
1/
1 Running
0
4m37s
-
kube-system kube-apiserver-sealos
-0001
1/
1 Running
0
4m17s
-
kube-system kube-apiserver-sealos
-0002
1/
1 Running
1
3m54s
-
kube-system kube-controller-manager-sealos
1/
1 Running
1
4m36s
-
kube-system kube-controller-manager-sealos
-0001
1/
1 Running
0
4m17s
-
kube-system kube-controller-manager-sealos
-0002
1/
1 Running
0
2m59s
-
kube-system kube-proxy
-7bs98
1/
1 Running
0
4m17s
-
kube-system kube-proxy
-88lv5
1/
1 Running
0
4m38s
-
kube-system kube-proxy-g8zfj
1/
1 Running
0
3m32s
-
kube-system kube-proxy-gl6vd
1/
1 Running
0
3m27s
-
kube-system kube-scheduler-sealos
1/
1 Running
1
4m37s
-
kube-system kube-scheduler-sealos
-0001
1/
1 Running
0
4m17s
-
kube-system kube-scheduler-sealos
-0002
1/
1 Running
0
2m50s
-
kube-system kube-sealyun-lvscare-sealos
-0003
1/
1 Running
0
3m23s
-
[root@sealos
-0001 ~]# arch
-
aarch64
至此, arm64 版本的kubernetes
云平台构建完毕。
参考资料
[1]
立即获取 sealos 及 arm64 安装包: https://www.sealyun.com/goodsDetail?type=cloud_kernel&name=kubernetes-arm64
[2]资源包: https://www.sealyun.com/goodsDetail?type=cloud_kernel&name=kubernetes-arm64
[3]仓库: https://github.com/sealyun-market/containerd
[4]仓库: https://github.com/containerd/containerd
[5]官方源码: https://github.com/sealyun/lvscare
[6]这里: https://github.com/oldthreefeng/arm64-test
[7]sealyun.com: https://www.sealyun.com
[8]小工具: https://github.com/oldthreefeng/mycli
[9]安装包: https://www.sealyun.com/goodsDetail?type=cloud_kernel&name=kubernetes-arm64
原文链接:https://www.fenghong.tech/blog/kubernetes/sealos-install-arm64-1.20/
你可能还喜欢
点击下方图片即可阅读
云原生是一种信仰 ????
扫码关注公众号
后台回复◉k8s◉获取史上最方便快捷的 Kubernetes 高可用部署工具,只需一条命令,连 ssh 都不需要!
点击 "阅读原文" 获取更好的阅读体验!
❤️给个「在看」,是对我最大的支持❤️
转载:https://blog.csdn.net/alex_yangchuansheng/article/details/111465622