Kubernetes 技巧
获取帮助详细信息
k3s 集群学习环境搭建
[TOC]
阅读前说明
- 使用本文前,
必须熟悉 linux 操作系统基础操作
,知道容器技术
,或者熟练使用 docker-ce
,否则很多基础操作问题,本文不会讲解 - 本文是针对 k3s 集群部署,目标是学习使用 k8s,前置条件是 至少 3 台 虚拟机,或者 3台实体机
- 目前云原生生态上,宿主操作系统 建议使用 Debian 或者
ubuntu 22.04
,建议使用更新的内核,防止有奇怪的问题产生,下面的操作就是基于 debian 11 来说明 - 操作运维平面上还是分 server ( 管理服务节点) 和 agent(工作负载节点),所以建议 额外加一台 agent 机器
- 集群中,每个节点从网络上是全部等效可见的,注意调整网络配置或者防火墙配置
- 目前云原生生态上,宿主操作系统 建议使用 Debian 或者
介绍
k3s 介绍
k3s 是 rancher 开源的一个 Kubernetes 发行版,并且对宿主的运行要求非常低,非常适合做 k8s 实验环境,和边缘技术服务的基建
watchtower notifications 配置方法
配置说明
Bark 通知
bark 是 iOS 平台下非常好用的个人推送服务
通知图标来源 https://containrrr.dev/watchtower/images/logo-450px.png ,可以自行修改
需要准备 {host},也就是 公开或者私人部署的 bark 服务
watchtower compose 容器自动更新
介绍
watchtower 是一个可以自动更新 Docker 容器的应用程序(轮询)。它监视运行中的容器,并在检测到容器镜像有更新时,自动拉取新镜像
并 使用相同的参数重新启动容器
当然,GitOps 是一种更现代的方法,它通过 Git 仓库作为单一事实来源来管理基础设施和应用部署。比如使用 ArgoCD 或 Flux 这样的工具,可以实现更复杂的部署策略,但是对于小型项目,GitOps 可能有点 杀鸡用牛刀
,因为部署一套 k8s 甚至 k3s 其实蛮费力的。
私有 git registry 工具 2024 年度比较
介绍
私有 git 仓库,作为软件工程的底层基建,市面上有很多开源解决方案
- 本文比较时间为 2024 年 1月,如有新增改动,不属于本文比较范畴
- 部分比较,比如
开源程度
版本管理
由个人主观统计开源对外展现,如有异议,为本人主观统计
比较项目
- gitlab 由 GitLab公司开发的、基于Git的集成软件开发平台,开源版本 https://gitlab.com/rluna-gitlab/gitlab-ce
- gogs 由开源组织维护的轻量级 Git 平台,托管在 https://github.com/gogs/gogs
- gitea 原本是Gogs软件的分支项目,尽管Gogs是一个开源项目,但是它的代码仓库是由单个维护者控制的,这导致开源社区在开发上的互动受限,社区化后形成的 go-gitea 项目 目前托管在https://github.com/go-gitea/gitea
- TortoiseGit 由 TortoiseGit team 维护的 Windows 平台下的 Git 服务客户端,目前托管在https://github.com/TortoiseGit/TortoiseGit
- onedev 由开源个人维护的 基于 Git 的 集成软件开发平台 ,托管在 https://github.com/theonedev/onedev
基础参数比较
项目 | gitlab | gogs | gitea | TortoiseGit | onedev |
---|---|---|---|---|---|
首发时间 | 2011 | 2015 | 2016 | 2008 | 2020 |
开源程度 | 开源CE版本授权受限 | 个人维护响应缓慢 | 社区维护响应快 | 社区维护几乎停止 | 关闭 issues 不对外沟通 |
维护类型 | GitLab 公司 | 个人 unknwon | 开源组织 go-gitea | TortoiseGit team | 个人 robinshine |
版本管理 | 严格日志详细 | 版本严格,日志详细 | 版本严格,日志详细 | 文档日志详细,无改动跟踪 | 版本变更大,全是MAJOR改动,且无改动跟踪 |
开发语言 | ruby | golang | golang | C++ | java |
Git 基建 | rugged (binding for github.com/libgit2/libgit2) | github.com/gogs/git-module | github.com/go-git/go-git | github.com/libgit2/libgit2 | org.eclipse.jgit |
数据库驱动 | ruby-pg (写死 postgres 修改需要改源码) | github.com/go-xorm/xorm | xorm.io/xorm | N/A | org.hibernate |
Web 基础 | Ruby on Rails | gopkg.in/macaron.v1 | github.com/go-chi/chi | N/A | org.apache.wicket |
功能比较
项目 | gitlab | gogs | gitea | TortoiseGit | onedev |
---|---|---|---|---|---|
git基础功能 | 完整 | 完整 | 完整 | 只包含 windows 平台 | 完整 |
git lfs | 支持 | 受限最大单文件1G | 支持 | 不支持 | 受限支持,不推荐使用git lfs |
仓库镜像 | EE version Repository mirroring | 支持无官方文档链接 | Repository Mirror | N/A | OneDev 7.1+ |
管理模型 | pull request | pull request | pull request | 无管理模型 | pull request |
版本支持 | tag/release | tag/release | tag/release | tag | tag/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 介绍
k3s 是 rancher 开源的一个 Kubernetes 发行版,并且对宿主的运行要求非常低,非常适合做 k8s 实验环境,和边缘技术服务的基建