一键在arm64架构上部署高可用kubernetes v1.20.0集群

网友投稿 1328 2022-05-30

[TOC]

项目的由来

随着“中兴事件”不断升级,引起了国人对国产自主可控技术的高度关注;希望能找到一个稳定、能兼容国产CPU的一整套架构方案,来构建IaaS平台和PaaS平台,满足单位对安全自主可控的需求。要基于全国产方式解决公司业务需求至少要在软硬件层面满足,而国内基本都是基于x86解决方案,想找到满足需求的国产化解决方案还是非常困难的事情。

说明

一个二进制工具加一个资源包,不依赖haproxy keepalived ansible等重量级工具,一条命令就可实现kubernetes高可用集群构建,

无论是单节点还是集群,单master还是多master,生产还是测试都能很好支持!简单不意味着阉割功能,照样能全量支持kubeadm所有配置。 立即获取sealos及arm64安装包

1.20 完全移除docker. 使用containerd作为cri. kubernetes < 1.20, 仍使用docker

sealos特性与优势:

支持arm64架构, v1.20版本离线包支持containerd集成,完全抛弃docker.

一键在arm64架构上部署高可用kubernetes v1.20.0集群

支持离线安装,工具与资源包(二进制程序 配置文件 镜像 yaml文件等)分离,这样不同版本替换不同离线包即可

百年证书

使用简单

支持自定义配置

内核负载,极其稳定,因为简单所以排查问题也极其简单

不依赖ansible haproxy keepalived, 一个二进制工具,0依赖

资源包放在阿里云oss上,再也不用担心网速

dashboard ingress prometheus等APP 同样离线打包,一键安装

etcd一键备份(etcd原生api调用)。支持上传至oss,实现异地备份, 用户无需关心细节。

快速开始

注意事项

必须同步所有服务器时间

所有服务器主机名不能重复

推荐

系统支持:centos7.6以上 ubuntu16.04以上 内核推荐4.14以上

推荐配置:centos7.8

环境信息

服务器密码: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

参数含义

增加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版本的二进制, 我们只能基于官方源码, 自己构建二进制项目. 项目开源在这个仓库. 官方的github仓库.

由于官方不发布arm64版本的containerd二进制, 所以手动编写了Makefile. 构建和 linux adm64 一模一样.

基于ipvs的lvscare支持arm64

官方源码, 我们重写了dockerfile. 更好的支持arm64架构系列.

docker

$ docker pull fanux/lvscare

containerd

$ ctr -n=k8s.io images pull docker.io/fanux/lvscare:latest

自动化ci/cd

目前采用github的action进行自动化CI/CD. 源码在这里. 测试采用华为云的鲲鹏服务器构建3master, 1node进行测试部署. 部署完成后打包发布到sealyun.com

测试调用

因为华为云没有官方的命令行调用生成服务器/公网ip. 因此自己写了一个小工具, 快速生成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的安装包.

$ 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] [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 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云平台构建完毕.

鲲鹏 Kubernetes

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java知识点问题总结之原始数据类型
下一篇:【活动结束】【内容共创系列】1024,懂你所需,予你温暖,致敬新时代可爱的程序员们
相关文章