k3s 集群学习环境搭建

[TOC]

  • 使用本文前,必须熟悉 linux 操作系统基础操作知道容器技术,或者 熟练使用 docker-ce,否则很多基础操作问题,本文不会讲解
  • 本文是针对 k3s 集群部署,目标是学习使用 k8s,前置条件是 至少 3 台 虚拟机,或者 3台实体机
    • 目前云原生生态上,宿主操作系统 建议使用 Debian 或者 ubuntu 22.04 ,建议使用更新的内核,防止有奇怪的问题产生,下面的操作就是基于 debian 11 来说明
    • 操作运维平面上还是分 server ( 管理服务节点) 和 agent(工作负载节点),所以建议 额外加一台 agent 机器
    • 集群中,每个节点从网络上是全部等效可见的,注意调整网络配置或者防火墙配置

k3s 是 rancher 开源的一个 Kubernetes 发行版,并且对宿主的运行要求非常低,非常适合做 k8s 实验环境,和边缘技术服务的基建

watchtower compose 容器自动更新

watchtower 是一个可以自动更新 Docker 容器的应用程序(轮询)。它监视运行中的容器,并在检测到容器镜像有更新时,自动拉取新镜像使用相同的参数重新启动容器

当然,GitOps 是一种更现代的方法,它通过 Git 仓库作为单一事实来源来管理基础设施和应用部署。比如使用 ArgoCDFlux 这样的工具,可以实现更复杂的部署策略,但是对于小型项目,GitOps 可能有点 杀鸡用牛刀,因为部署一套 k8s 甚至 k3s 其实蛮费力的。

私有 git registry 工具 2024 年度比较

私有 git 仓库,作为软件工程的底层基建,市面上有很多开源解决方案

  • 本文比较时间为 2024 年 1月,如有新增改动,不属于本文比较范畴
  • 部分比较,比如 开源程度 版本管理 由个人主观统计开源对外展现,如有异议,为本人主观统计
项目gitlabgogsgiteaTortoiseGitonedev
首发时间20112015201620082020
开源程度开源CE版本授权受限个人维护响应缓慢社区维护响应快社区维护几乎停止关闭 issues 不对外沟通
维护类型GitLab 公司个人 unknwon开源组织 go-giteaTortoiseGit team个人 robinshine
版本管理严格日志详细版本严格,日志详细版本严格,日志详细文档日志详细,无改动跟踪版本变更大,全是MAJOR改动,且无改动跟踪
开发语言rubygolanggolangC++java
Git 基建rugged
(binding for github.com/libgit2/libgit2)
github.com/gogs/git-modulegithub.com/go-git/go-gitgithub.com/libgit2/libgit2org.eclipse.jgit
数据库驱动ruby-pg
(写死 postgres 修改需要改源码)
github.com/go-xorm/xormxorm.io/xormN/Aorg.hibernate
Web 基础Ruby on Railsgopkg.in/macaron.v1github.com/go-chi/chiN/Aorg.apache.wicket
项目gitlabgogsgiteaTortoiseGitonedev
git基础功能完整完整完整只包含 windows 平台完整
git lfs支持受限最大单文件1G支持不支持受限支持,不推荐使用git lfs
仓库镜像EE version Repository mirroring支持无官方文档链接Repository MirrorN/AOneDev 7.1+
管理模型pull requestpull requestpull request无管理模型pull request
版本支持tag/releasetag/releasetag/releasetagtag/release
仓库支持不支持(企业版支持 package registry)不支持支持主流仓库,点击查看不支持
CI/CD自带 master/agent runner不支持自带 act-runner
或者使用三方
drone
woodpecker-ci
不支持自带 master/agent 模式

k3s containerd cilium hubble 集群快速上手

  • 使用本文前,必须清楚熟悉 k8s ,熟练使用 k8s,清楚 CNI (Container Network Interface) 概念和原理
  • 本文是针对集群部署,目标是使用 cilium ,用以提升网络工作负载 ,服务的可见性,可维护性的实验,作为 k8s 使用 eBPF 的验证环境使用,不能作为生产环境配置
  • 集群中,从网络上是全部等效可见的,因为集群内 cilium-agent ( 简写 cilium-ag) 可以不需要 管理平面或操作运维平面 Cilium Operator 导致
  • 但是在物理平面或操作运维平面上还是分 server ( 管理服务节点) 和 agent(工作负载节点)

k3s 是 rancher 开源的一个 Kubernetes 发行版,并且对宿主的运行要求非常低,非常适合做 k8s 实验环境,和边缘技术服务的基建

线程模型 线程切换成本

首先明确进程与进程的基本概念:

  • 进程是资源分配的基本单位
  • 线程是CPU调度的基本单位
  • 一个进程下可能有多个线程
  • 多个线程共享进程的资源

不同的 OS 进程 和 线程是实现细节不一样的

特别是 用户态和内核态 区别非常大