sealerio / sealer

Build, Share and Run Both Your Kubernetes Cluster and Distributed Applications (Project under CNCF)
http://sealer.cool
Apache License 2.0
2.06k stars 361 forks source link

用户需求 #479

Open fanux opened 3 years ago

fanux commented 3 years ago

明源云诉求:

1.应用镜像缓存支持打包进集群镜像,目前测试发现应用镜像没有打包进集群。需要支持完全离线场景 2.针对国产化场景,支持arm架构的实例,目前主要在华为云麒麟上测试 3.集群运行起来后检查网络连通情况,检查主机路由等,集群运行起来了,但是存在pod相互访问,跨节点访问等不通的情况。导致在kubefile里面写的应用安装步骤无法正常进行 4.状态检测,离线环境会使用到存储方案,我们目前使用的是ceph,ceph初始化过程比较长,且容易遇到阻断问题,我们的应用完全依赖ceph存储,在kubefile运行过程中无法检测ceph状态,容易阻断应用安装。 5.kubefile运行helm命令支持超时跳过这条命令,helm安装应用如果应用pod处于pending状态(比如无法申请到ceph提供的存储卷),最后导致kubefile构建失败。

fanux commented 3 years ago

政采云需求:

[ ]【进行中】1. 镜像缓存成本太高,要拉起一个新集群。 个人觉得:fake一个kubernetes的api server收集镜像的方式很geek也很完美,没必要启集群来收集镜像。 [ ]【webhook不是一个好的方案,稳定性很差,而且建立映射是个对用户有感知的过程】2. 有些纠结针对docker和registry的hack, 其实我们更倾向于利用准入控制来实现镜像地址的替换。当然如果registry和docker能接受PR合并就完美了。 [x]【进行中】3. registry地址是写死在代码里面的,要支持定制。 【镜像标准稳定下来了我们就会批量构建rootfs】4. kubernetes的版本选择不多。 跟随kubernetes版本的rootfs的自动化CI 有没有计划安排。想玩玩1.20 [x]【进行中,用config的方式支持最新版本calico】5. cni配置的可定制性太弱。自动换成host-gateway模式,但是VPC下不支持ARP广播导致pod间无法通信。感觉有些过度设计,一些配置应该默认使用经过验证的最佳实践, 例如ipip模式,建议提供默认值且不要用逻辑帮用户做决定而是暴露一些参数使高级用户可以修改。傻瓜一点,一个小白用户也能交付一个安全可靠的集群。 [x]【已支持,现在registry不会所有节点都分发】6. rootfs复制成本太高, 实际交付场景下我们的应用镜像17G。。。分发到所有节点实在没必要。 [ ]【待讨论】7. master[0] 这个设计感觉有些奇怪, 一些指令可以随便选一台机器去执行例如kubectl, 但是不应该依赖iplist中的顺序。 [ ]【目前应该脚本有检测保持一致的】8. Cgroup 驱动 docker与systemd保持一致使用:cgroupdriver https://kubernetes.io/zh/docs/setup/production-environment/container-runtimes/

Q: 第一个:就是我在a机器上进行build操作,clusterfile上指定master节点的ip是b机器,build的过程其实是去b机器起一个k8s集群,然后按照自己写的kubefile去一个个执行命令,把东西都起起来。最后把这个起起来可运行的多个容器,打成一个快照生成镜像。所以我在a机器上是找不到打出来的镜像,要在b机器上才有。是这么一个原理么。 A: 是的,还可以使用其它的build方式,参考文档:https://github.com/alibaba/sealer/blob/main/docs/build/build_zh.md

Q: 第二:比如说我需要在集群镜像中跑了很多个应用,也可以理解为我要打出来的集群镜像很大,然后去打镜像的时候,也就需要考虑到机器能不能承载这么多的资源咯,否则因为机器性能不足根本打不出来集群镜像 A: 是的,大概有多大,不过一般机器都有几百G吧,难道镜像比几百G还大?

Q: 第三:昨天群里有个问题就是,在build的时候,报错码exit status 127,对于用户来说根本不能理解这个码,我觉得应该把解释也带上 A: 这个问题可以给我们提个issue哈。

Q: 第四:报错127是命令不存在,能否有机制去check命令,比如说wget的时候,去check命令,或者说去check一些命令集,甚至说可以直接自动yum install掉去,因为昨天是申请了新机器,但是新机器上没有wget命令,导致了问题的排查 A: 我觉得像docker一样能把command not found提示出来就可以

fanux commented 3 years ago

焱融云需求:

@fanux.中弈 我们安装目前是这样的,

  1. 需要在Centos 7 物理机(虚拟机)的系统上安装若干的rpm包,
  2. 根据具体的拓扑配置(例如那些磁盘可用,角色,网络的配置) 提供yaml格式的配置文件,
    3, 使用我们的安装工具安装存储。
    ------------以上在宿主机上完成
  3. 如果需要对于k8s, 那么 k8s registry内集成我们的CSI镜像, 通过 kubectl create -f yfs-csi.yaml 即可完成相关的CSI部署, 之后会建立StorageClass, 用户在k8s平台可以选择对应的StorageClass来建立PVC 访问存储。

这个过程我们能支持吗?

答:

  1. 这些rpm已经是离线的rpm包就可以非常简单。 如果是需要联网下载 那只要客户环境有网sealer也可以支持。
  2. sealer有强大的配置管理能力,这块也完全支持
  3. 这个安装工具是一个二进制还是什么?如果是个二进制或者脚本也完全支持。 如果是ansible之类的虽然能支持但是会重,可能需要改造一下。
  4. 缓存镜像完全支持,而且支持的非常爽,只需要在Kubefile中写 CMD kubectl create -f yfs-csi.yaml 这里面的镜像就自动缓存了,创建storageClass也完全没问题
fanux commented 3 years ago

杭银消费金融: Q : 1.是否可以区分网络插件,以镜像的方式,比如:kubernetes:v1.19.9-caclio,kubernetes:v1.19.9-flannel 2.etcd是否可以和master分离部署 3.Clusterfile文件内容说明 4.kubectl命令自动补全 5.coredns自动扩容 6.建议sealer增加删除node节点命令

A:

  1. 当前就是这种方式,只是flannel镜像尚未提供
  2. 可以的,sealer具备自定义kubeadm配置的能力,但是我们非常不推荐这两个分开
  3. 官网制作中,会完善这块
  4. 可以使用sealer shell plugin进行自定义
  5. 修改replica即可不属于sealer关心的范畴
  6. 已支持,只需要在clusterfile中删除对应ip 再apply即可
fanux commented 3 years ago

佳华物联云: Q: 1.希望支持集群节点arm+amd混合的情况,因为有GPU+arm机器的场景 2.支持k3s,有些资源紧张的机器需要部署k3s 3.能否提供一份基础rootfs,用户可以自己编译基础镜像,且支持双架构 4.支持k8s升级 5.支持containerd A:

  1. 暂时还没比较优雅的方案支持这种混合的方式
  2. 计划支持k3s和k0s中
  3. 从先有镜像中取第一个layer即可,在/var/lib/sealer下面
  4. 升级支持中
  5. 1.20以上版本都会支持containerd,到时机器人会统一制作镜像。
fanux commented 2 years ago

KodeRover: Provide 1.20.14 BaseImage.