V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OldCarMan
V2EX  ›  Kubernetes

大家现实 k8s 环境的技术组合是什么? docker/Podman/containerd...的选择是什么?

  •  
  •   OldCarMan · 68 天前 · 4038 次点击
    这是一个创建于 68 天前的主题,其中的信息可能已经有所发展或是发生改变。

    rt,自从 kubernetes 1.24 正式移除了 dockershim 组件已经过去一段时间了,想了解一下大家现在 k8s 环境的各类技术组合是什么?

    
    当然,即使 dockershim 被移除,如果你还想继续使用 docker 引擎,还是可以使用 cri-docker 来适配的。
    
    

    关于上面说的 k8s 技术组合比较泛,举个例子,比如:

    • 容器管理工具:Podman

    • CRI: containerd

    • 集群部署&管理:kubeadm

    • plugins:

      • 容器 network(cni): flannel
      • 集群 network: ingress
    • addons:

      • 服务发现:CoreDNS
      • ui-dashboard: kubernetes-dashboard
    • 日志:EFK

    • 监控:metrics ,prometheus

    • 存储:rook

    ...

    PS: 另外大佬们回复的技术组合在实际应用中存在哪些问题?谢谢大家回复。

    52 条回复    2023-05-08 17:01:05 +08:00
    youzi0516
        1
    youzi0516  
       68 天前   ❤️ 1
    建议 : 使用公有云服务 不要自建
    FabricPath
        2
    FabricPath  
       68 天前
    如上所说,除非上市公司之类对“固定资产”和“费用”有要求外,小于 5000 台机器直接用公有云。
    FabricPath
        3
    FabricPath  
       68 天前
    不过正经说的话
    podman 似乎没啥必要? k8s+containerd 就行,crictl 和 ctr 已经能完成常见的运维操作了。
    网络用 Cilium (内核达不到要求的话先升内核)
    监控 Prometheus 吧,不过可选似乎也只有 influx 套件了?
    m4d3bug
        4
    m4d3bug  
       68 天前 via Android
    podman 不对运行时负责,我猜你想说的是 CRI-O
    BeautifulSoap
        5
    BeautifulSoap  
       68 天前   ❤️ 2
    k3s 一把梭
    XiLingHost
        6
    XiLingHost  
       68 天前
    kubespray 部署,用 containerd 做容器运行时,其它都是默认
    dolphintwo
        7
    dolphintwo  
       68 天前
    原来我也考虑这些
    现在:公有云一把梭,组件用啥我不关心
    zed1018
        8
    zed1018  
       68 天前
    同 k3s 一把梭,本地 /staging/production 都是
    mango88
        9
    mango88  
       68 天前
    在用 kubesphere , kubekey 搭建集群,
    发行版是 1.22 版本
    CRI 怕踩坑还是用的 docker
    hzfyjgw
        10
    hzfyjgw  
       68 天前
    @mango88 #9 kubernetes 1.24 之后 CRI 移除 docker 支持
    bootvue
        11
    bootvue  
       68 天前
    k3s+rancher
    chenPiMeiHaoChi
        12
    chenPiMeiHaoChi  
       68 天前
    containerd ,命令行用 nerdctl ,说实话我感觉不大好用。好在 rancher 能解决大部分情况。
    jitongxi
        13
    jitongxi  
       68 天前
    sealos+kuboard, 我一个臭开发,用懒人包就行
    zzl22100048
        14
    zzl22100048  
       68 天前
    k3s 一把梭 本来是测试用的,后来生产也上了
    kaddusabagei38
        15
    kaddusabagei38  
       68 天前
    容器管理具体指的是什么?
    OldCarMan
        16
    OldCarMan  
    OP
       68 天前
    谢谢大家建议和回复。
    @youzi0516 @dolphintwo 不过这玩意看工作环境,另外个人开发有时想使用,还是不大实际。
    @FabricPath 哈哈,这个除非规模有点大了,监控套件吗?我经常看到的似乎都是围绕 Prometheus ,可以参考这里: https://landscape.cncf.io/card-mode?category=monitoring&project=graduated,incubating,member,no&grouping=category&sort=stars
    @m4d3bug podman 我个人当它做 docker 引擎的代替方案,你的 CRI-O 是 CRI 的一种实现吧。
    @BeautifulSoap @zed1018 @bootvue @zzl22100048 有点意外,之前以为大家可能使用 minikube 之类的多点(不过单节点)
    @XiLingHost kubespray 体验怎么样,比较少听说
    @mango88 你可以体验一下,dockershim 的代替方案:cri-dockerd ,不过有种 kubernetes 生态越来越边缘化 docker 的感觉。
    @chenPiMeiHaoChi 嗯嗯,听说 Podman 比较对 docker 指令集的兼容性比较好(平稳过渡)
    @jitongxi 哈哈,是的,运维有时确实麻烦。
    @kaddusabagei38 容器管理引擎吧,类 docker 引擎方案
    XiLingHost
        17
    XiLingHost  
       68 天前
    @OldCarMan kubespray 本身其实就是官方维护的一套 ansible 配置,说实话安装起来挺慢的,bug 也不少
    dk7952638
        18
    dk7952638  
       68 天前
    nomad
    OldCarMan
        19
    OldCarMan  
    OP
       68 天前
    @XiLingHost soga, kubernetes 生态东西有点多,哈哈,听到 bug 不少,开发和运维估计都沉默了。
    OldCarMan
        20
    OldCarMan  
    OP
       68 天前
    @dk7952638 新方式 get ✔
    godsoul
        21
    godsoul  
       68 天前
    flannel 性能比较差,建议使用类似 calico 这种,ingress 也可以不用,直接跑个网关暴露给 slb ,CoreDNS 最要也加个 local dns cache
    XiLingHost
        22
    XiLingHost  
       68 天前
    @OldCarMan 主要是很多情况下必须把 master 上修 bug 的提交合并到它们的镜像里用,不然每次遇到 bug 一看 issue 都发现是在最近的一个 release 后提交的 fix
    OldCarMan
        23
    OldCarMan  
    OP
       68 天前
    @godsoul 谢谢分享,哈哈,我看有些人直接跑个,ingress-nginx 。
    @XiLingHost 使用 kubespray 可以避免这个问题吗,还是另外一个意思?
    XiLingHost
        24
    XiLingHost  
       68 天前
    @OldCarMan 意思是,kubespray 本身的问题。
    它的测试其实是不完全的,在一些少见的情况(比如 containerd 的私有 registry 配置)有时候会出错。
    虽然修复一般很快,但是他们的 docker 镜像是跟随 release 的。
    因此遇到这种情况,就必须从 master 上把修复的内容在镜像里应用来解决问题。
    richangfan
        25
    richangfan  
       68 天前
    我开了几台虚拟机搭 k8s 集群,用 containerd 老是掉线,用 cri-o 就没问题,也不用另外安装 cni ,挂了一天都没重启一次
    wangxiaoaer
        26
    wangxiaoaer  
       68 天前
    感觉有点跟不上了,最初 docker 、docker-compose 、docker-swarm 觉得还挺简单。结果后来 k8s 后,什么 pod 啥的都出来了,再看看 op 提问里面那些名词超过 2/3 没听过,有点恐惧。

    有没有扫盲文档给理一下思路?
    mritd
        27
    mritd  
       67 天前 via iPhone
    k3s 一把梭
    Cola98
        28
    Cola98  
       67 天前
    rancher 容器云管理 CRI 是 docker CSI 是 xksy 监控是 prometheus ,日志 elk
    cheng6563
        29
    cheng6563  
       67 天前
    回复:有点意外,之前以为大家可能使用 minikube 之类的多点(不过单节点)

    k3s 比 minikube 开销还低些,而且可单可群,不用担心 k8s.gcr.io 墙的问题,为何不用
    baiyi
        30
    baiyi  
       67 天前
    建议直接用 containerd ,如果要用 docker 也尽量用新版本,docker 的问题还是挺多的
    fioncat
        31
    fioncat  
       67 天前
    kvm (逃
    iwdmb
        32
    iwdmb  
       67 天前
    aaronkk
        33
    aaronkk  
       67 天前
    基本都是用 kubectl 去管理的,移除 dockershim 感觉也没啥影响,至少通过 cri 直接调用 contained 性能还提升了不少,有 docker 习惯的话 nerdctl 过渡下,问题也不大
    iwdmb
        34
    iwdmb  
       67 天前
    K3s 也進 CNCF 了
    flexbug
        35
    flexbug  
       67 天前
    @wangxiaoaer #26 https://landscape.cncf.io/ 看这个就行了
    cnbattle
        36
    cnbattle  
       67 天前
    投 K3S 一票
    OldCarMan
        37
    OldCarMan  
    OP
       67 天前
    @XiLingHost soga,release 确实有点坑
    @richangfan nice ,我记得 containerd 是默认 cri,掉线是不是哪里没设置好。
    @wangxiaoaer 技术这玩意日新月异,大变化基本几年一个周期。
    @mritd @iwdmb @cnbattle 看来 k3s 深得人心
    @Cola98 nice,这个搭配有遇到过什么问题吗?
    @cheng6563 “k3s 不用担心 k8s.gcr.io 墙的问题”,是默认都采用了国内镜像吗?还是它在国内有自己的镜像仓库?
    @baiyi docker 对于很多像我一样的人主要是历史包袱,是从 docker 开始接触 devops 的
    @fioncat 新方式 get ✔
    @aaronkk 确实
    cnbattle
        38
    cnbattle  
       67 天前
    @OldCarMan k3s 是基于部署包部署的(依赖的软件和 images 都在离线包里),不是直接拉取 gcr 的镜像,
    问题在于 运行安装脚本时 ,要在线下载部署包 还是 自己先下载好,在线安装从 github 下载相关文件

    有国内的镜像部署脚本,直接运行安装,我习惯自己下载离线部署包, 安装

    可以看下 https://blog.csdn.net/d7185540/article/details/107675616
    OldCarMan
        39
    OldCarMan  
    OP
       67 天前
    @wangxiaoaer 可以先从主要架构看起,推荐看看这下面这几个:

    1.https://devopscube.com/kubernetes-architecture-explained/
    2.https://kubernetes.io/docs/concepts/overview/components/ (官网)
    3.https://d33wubrfki0l68.cloudfront.net/f740b41ed02348ac1aaa43732d8eff3427ae28a1/47c0e/docs/images/diagram-guide-example-3.svg

    至于主要功能节点有哪些对应的方案实现,可以看这里:
    https://landscape.cncf.io/
    https://kubernetes.io/docs/concepts/cluster-administration/addons/

    技术方案可以参考大厂实践方案(不一定要用人家的服务,看看别人的技术方案就行了,特别是一些细分领域的),比如阿里的:
    https://help.aliyun.com/document_detail/126295.html
    OldCarMan
        40
    OldCarMan  
    OP
       67 天前
    @cnbattle soga, 谢谢。离线部署就担心一个可选择性问题还有一个镜像安全问题。不过哈哈,这么多使用,加开源,一般问题不大。如果镜像来自 GitHub 其实还好,就担心镜像源不统一,从而导致一些仓库镜像版本的问题。
    OldCarMan
        41
    OldCarMan  
    OP
       67 天前
    @OldCarMan 这么多人使用,打少个“人”。
    solitude2
        42
    solitude2  
       67 天前 via Android
    @youzi0516 不自建,公司的中台部门的工作量哪来呢?
    julyclyde
        43
    julyclyde  
       65 天前
    podman-compose 对 network=host 支持有问题
    其实他们已经修了,但是一直没发布新版本,需要 pip 安装 git 版本才可以
    OldCarMan
        44
    OldCarMan  
    OP
       64 天前
    @julyclyde soga,还没用过 podman ,好用吗?相比于 docker 来说。
    youzi0516
        45
    youzi0516  
       63 天前
    @solitude2 挂了谁担 当前环境下 失误被开几率极高
    youzi0516
        46
    youzi0516  
       63 天前
    另外自己测试玩 直接 kubesphere 别费那劲趟 rancher 的坑
    sampeng
        47
    sampeng  
       61 天前
    公有云用什么,我就用什么。怎么着?你还有得选?
    Nnq
        48
    Nnq  
       61 天前
    @FabricPath 想问下 这里的 5000 是🈶️什么最佳实践么?
    还是一个大概的数量?
    OldCarMan
        49
    OldCarMan  
    OP
       61 天前
    @youzi0516 哈哈,最直接的用 dockerdestop,一键部署,不过如果是 window 用户,wins 自带的虚拟环境(无论是 hyper-v 还是 wsl )太坑了,经常各种兼容性问题。

    @sampeng 嗯,绝大部分需要自己选择方案部署的人,要么是想搭一个自己玩的环境,要么公司有一定规模的吧,现在大部分中小型公司线上服务基本都是云业务,不过云业务也有收费的问题,tiny 规模的公司估计也用不起。

    @Nnq 个人猜测这是规模效应带来的技术成本最优化选择方案吧,5000 应该是互联网中型公司踏上大型公司的一个边界起点,之所以公司一开始主要业务都上云,是因为一开始公司规模小,业务量较低,技术人员少,云服务自带的共享性和成熟的技术方案能快速解决很多初创企业面临的技术挑战,然而随着公司规模变大,技术团队规模增加,业务量大幅提高,公司自我体系内的技术基础设施 /人员设施正在不断的完善,原有的技术挑战在现有团队里越来越能成熟应对,甚至能有多余的技术力量去解决其他问题,所以搞一套自有的技术服务不会很意外,甚至规模大了可能发展成新的业务增长点;另外人多了意味着能力和成本都增加了,必须有一个成本变现的过程,来对冲成本增加压力,降本增效,做大规模;最后达到这个规模公司,除了要考虑成本问题,还要考虑可控性问题,打个比方就像国家的粮食 /能源安全战略一样,东西我可以到你那里买,但是我必须要有一个基本的“自给自足”的底线作为我保证战略安全的需要😂
    FabricPath
        50
    FabricPath  
       60 天前
    @Nnq 自建机房和公有云费用较为平衡的区间,服务器成本是固定的(基本上公有云一年的费用就等于服务器成本),平均运营费用(机架成本、电费、制冷费)会随着规模增大减小
    OldCarMan
        51
    OldCarMan  
    OP
       60 天前
    @FabricPath 哈哈,其实这个道理扩大到一个国家也差别类似,比如所谓的“人口红利”,当一件事物多了,跟这件事物相关的支出成本就会相对的降低,比如一间教室里有 25 个人在听课和 50 个人在听课,除了多一些课桌椅,用一样的课室和老师,但后者却输出多一倍的人才。
    panwork
        52
    panwork  
       22 天前
    @iwdmb 大佬,咨询个问题,我用 K3S 搭了以后上了 java 业务,用 ingress 做转发,总是间歇性的延迟高,常见延迟 100ms 左右。一段时间不调用,总会有一个请求莫名提高到 5s ,然后之后又恢复正常。业务容器单独用 docker 就没问题,放到 K3S 里就有这个问题。一直找不到问题,有相关解决思路吗?
    关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2614 人在线   最高记录 5634   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 00:32 · PVG 08:32 · LAX 17:32 · JFK 20:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.