欢迎来到 KLTS新手攻略,相信通过上期《DaoCloud道客云原生开源项目KLTS,全称为Kubernetes Long Term Support,为Kubernetes早期版本提供长期免费的维护支持》,大家对 KLTS 开源项目都有了一定的了解。

KLTS 持续维护 Kubernetes 早期发行的版本,定期修复常见的 CVE 漏洞和 bug,可直接用于生产,完全开源,包含了完整的 Kubernetes 运行时环境及其依赖。KLTS 提供的维护版本,可以说是 Kubernetes 早期发行的版本的超级补丁。

如何使用?如何可持续的发展和培育 KLTS ?接下来就为大家详细介绍一下, KLTS 现有成果、如何使用、RoadMap 规划,以及如何参与到 KLTS 项目贡献中来。

01 KLTS 现有成果

KLTS 已经正式上线一段时间了,目前 KLTS 的维护者包括 Kubernetes 社区 Member、Reviewer、Approver 各个层级的成员,涉及到社区中多个 SIG。与之对应的,他们也是 KLTS 的 Member、Reviewer、Maintainer。

目前,在 KLTS 成员的辛勤维护下,目前 KLTS 发布了 Its.1 的版本内容,支持 Kubernetes 1.10~1.19 的 10 个版本。修复了一些中高优先级的 CVE 和严重问题,还提供了国内镜像加速,支持 CentOS 和 Ubuntu 操作系统,定制了一键安装脚本,目前共计 76 个 PRs。

如下图所示,V1.16.15 是 Kubernetes 的社区发行版本号,而 lts.0 是 KLTS 提供的补丁版本号。

一键安装即可尽享 KLTS 维护版本

为方便广大开发者进入社区后,更便捷安装和使用版本内容,KLTS 提供了以下脚本,可以自动完成安装流程,一键到位,方便快捷

wget https://github.com/klts-io/klts/raw/main/install.sh
chmod +x install.sh
./install.sh
Usage: ./install.sh [OPTIONS]-h, --help : Display this help and exit--kubernetes-container-registry=ghcr.io/klts-io/kubernetes-lts : Kubernetes container registry--kubernetes-version=1.18.20-lts.1 : Kubernetes version to install--containerd-version=1.3.10-lts.0 : Containerd version to install--runc-version=1.0.2-lts.0 : Runc version to install--kubernetes-rpm-source=https://github.com/klts-io/kubernetes-lts/raw/rpm-v1.18.20-lts.0 : Kubernetes RPM source--containerd-rpm-source=https://github.com/klts-io/containerd-lts/raw/rpm-v1.3.10-lts.0 : Containerd RPM source--runc-rpm-source=https://github.com/klts-io/runc-lts/raw/rpm-v1.0.2-lts.0 : Runc RPM source--others-rpm-source=https://github.com/klts-io/others/raw/rpm : Other RPM source--kubernetes-deb-source=https://github.com/klts-io/kubernetes-lts/raw/deb-v1.18.20-lts.0 : Kubernetes DEB source--containerd-deb-source=https://github.com/klts-io/containerd-lts/raw/deb-v1.3.10-lts.0 : Containerd DEB source--runc-deb-source=https://github.com/klts-io/runc-lts/raw/deb-v1.0.2-lts.0 : Runc DEB source--others-deb-source=https://github.com/klts-io/others/raw/deb : Other DEB source--focus=enable-iptables-discover-bridged-traffic,disable-swap,disable-selinux,setup-source,install-kubernetes,install-containerd,install-runc,install-crictl,install-cniplugins,setup-crictl-config,setup-containerd-cni-config,setup-kubelet-config,setup-containerd-config,daemon-reload,start-containerd,status-containerd,enable-containerd,start-kubelet,status-kubelet,enable-kubelet,images-pull,control-plane-init,status-nodes,show-join-command : Focus on specific step--skip='' : Skip on specific step

此外,对于想要了解安装细节和准备工作流程的伙伴,我们准备了下列比较详细的安装介绍

2.1 准备工作

1) 准备一台兼容的 Linux 主机。Kubernetes 项目为基于 Debian 和 Red Hat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令。

2) 每台主机至少 2 GB 或更多的内存 (如果内存太少将影响应用的运行) CPU 2 核或更多

3) 集群中所有主机的网络连通 (公网和内网)

4) 单个节点上不能有重复的主机名、MAC 地址或 product_uuid,请参阅确保每个节点上 MAC 地址和 product_uuid 的唯一性。

5) 开启主机上的某些端口,请参阅检查所需端口。

6) 禁用交换分区。为了保证 kubelet 正常工作,您必须禁用交换分区。

2.2 确保每个节点上 MAC 地址和 product_uuid 的唯一性

  • 使用命令 ip link 或 ifconfig -a 来获取网络接口的 MAC 地址
  • 使用 sudo cat /sys/class/dmi/id/product_uuid 命令来校验 product_uuid

一般来讲,硬件设备拥有唯一的地址,但是有些虚拟机的地址可能会重复。Kubernetes 使用 MAC 地址和 product_uuid 来确定集群中的唯一节点。如果这些值在每个节点上不唯一,可能会导致安装失败 。

安装失败:

https://github.com/kubernetes/kubeadm/issues/31

2.3 检查网络适配器

如果您有一个以上的网络适配器,同时您的 Kubernetes 组件通过默认路由不可达,我们建议您预先添加 IP 路由规则,这样 Kubernetes 集群就可以通过对应的适配器完成连接。

2.4 允许 iptables 检查桥接流量

确保 br_netfilter 模块被加载。这一操作可以通过运行 lsmod | grep br_netfilter 来完成。若要显式加载该模块,可执行命令 sudo modprobe br_netfilter。

为了让您的 Linux 节点上的 iptables 能够正确地查看桥接流量,您需要确保在 sysctl 配置中将 net.bridge.bridge-nf-call-iptables 设置为 1。例如:

cat <<EOF | sudo tee /etc/modules-load.d/k8s.confbr_netfilterEOFcat <<EOF | sudo tee /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOFsudo sysctl --system

更多细节请查阅网络插件需求页面。

网络插件需求:

https://kubernetes.io/zh/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/#network-plugin-requirements

2.5 检查所需端口

控制平面节点

工作节点

以上是 NodePort 服务的默认端口范围。

NodePort 服务:

https://kubernetes.io/zh/docs/concepts/services-networking/service/

使用 * 标记的任意端口号都可以被覆盖,所以您需要保证定制的端口是开放的。

虽然控制平面节点已经包含了 etcd 的端口,您也可以使用自定义的外部 etcd 集群,或指定自定义端口。

您使用的 Pod 网络插件 (见下) 也可能需要某些特定端口开启。由于各个 Pod 网络插件都有所不同,请参阅相应文档中的端口要求。

2.6 设置节点名字

命令的语法格式如下:

hostnamectl set-hostname your-new-host-nameecho "127.0.0.1 $(hostname)" >> /etc/hostsecho "::1       $(hostname)" >> /etc/hosts

2.7 关闭 Swap

执行以下命令关闭 Swap:

swapoff -a

如果需要永久关闭,请编辑 /etc/fstab 文件,将 swap 的挂载路径改为注释。

2.8 关闭 Selinux

执行以下命令关闭 Selinux:

setenforce 0

如果需要永久关闭,请编辑

/etc/sysconfig/selinux

将 SELINUX=enforcing

替换为 SELINUX=disabled。

2.9 安装 runtime

为了在 Pod 中运行容器,Kubernetes 使用容器运行时(Container Runtime)。

Linux 节点

默认情况下,Kubernetes 使用容器运行时接口 (Container Runtime Interface,CRI) 来与您所选择的容器运行时交互。

如果您不指定运行时,则 kubeadm 会自动尝试检测系统上已经安装的运行时,方法是扫描一组众所周知的 Unix 域套接字。

下面的表格列举了一些容器运行时及其对应的套接字路径:

如果同时检测到 Docker 和 Containerd,则优先选择 Docker。这是必然的,即使您仅安装了 Docker,因为 Docker 18.09 附带了 Containerd,所以两者都是可以检测到的。如果检测到其他两个或多个运行时,则 kubeadm 输出错误信息并退出。

kubelet 通过内置的 dockershim CRI 实现与 Docker 集成。

其它操作系统

默认情况下, kubeadm 使用 docker 作为容器运行时。kubelet 通过内置的 dockershim CRI 实现与 Docker 集成。

Docker

基于 Red Hat 的发行版

执行以下命令安装基于 Red Hat 发行版的 Docker:

yum install docker

基于 Debian 的发行版

执行以下命令安装基于 Debian 发行版的 Docker:

apt-get install docker.io

Containerd

Containerd 官方默认只提供 amd64 架构的下载包,如果您采用的是其他基础架构,可以从 Docker 官方仓库安装 containerd.io 软件包。在安装 Docker 引擎中找到为各自的 Linux 发行版设置 Docker 存储库和安装 containerd.io 软件包的有关说明。

也可以使用以下源代码构建:

VERSION=1.5.4wget -c https://github.com/containerd/containerd/releases/download/v${VERSION}/containerd-${VERSION}-linux-amd64.tar.gztar xvf containerd-${VERSION}-linux-amd64.tar.gz -C /usr/local/mkdir /etc/containerd/ && containerd config default > /etc/containerd/config.tomlwget -c -O /etc/systemd/system/containerd.service https://raw.githubusercontent.com/containerd/containerd/main/containerd.servicesystemctl start containerd && systemctl enable containerd

参阅容器运行时以了解更多信息。

容器运行时:

https://kubernetes.io/zh/docs/setup/production-environment/container-runtimes/

03 KLTS 未来可期

目前 KLTS 发布的一个版本中,已经包含了比较重要的 kernel memory 泄漏问题的规避方案和几个高危漏洞的修复。为了方便用户使用,一键安装脚本已经可以支持最常用的 Centos 和 Ubuntu ,另外就是国内镜像加速做了配置。

KLTS 的路线图制定主要针对目前项目的完整性、易用性和信创场景的覆盖,此外还会结合各种不同的升级的需求,包括跨版本平滑升级等。

完整性方面,我们计划加入 containerd 和 runc 的 LTS 项目,这是因为 containerd 的版本和 kuberentes 版本也有兼容性问题,比如 containerd 1.4 版本需要 kuberentes 版本 1.19+。具体可以参考 https://github.com/klts-io/containerd-lts 的项目介绍,会有这方面的介绍。

易用性层面,我们客户有很多是离线环境,因此离线环境安装升级是急需要解决的问题。

信创层面,随着国内信创云的不断发展,这个方向的需求也是越来越多,未来我们也会逐步完成对各类信创场景的支持。

此外,KLTS 也会根据新用户的需求,更新和完善我们的路线图。

快来参与贡献 KLTS 的明天就在你手中

加入社区的伙伴,在首页点击项目 (project) 的一栏,页面底部任务看板可以查看现有的任务内容。通过参与 PR Review/问题回复/文档,维护 CI 健康,使用新版本并给出反馈等,参与社区贡献。

此外,KLTS 还设有双周会议,通常会涉及功能、问题的讨论。如:上次周会的 Action Item 进展追踪,是否有新的发布和 Pending 事项,新增 CVE 和 Issue 讨论,以及其他议题。有任何想法、需求、试用反馈,都可以积极在 github、slack 周会上,提问和提出建议。会议时间是周三下午 2 点,相关讨论的议题会提前添加到周会链接。

周会链接:

https://meeting.tencent.com/dm/PkJXF9cytpxe

合抱之木生于毫末,KLTS 方兴未艾,期待秉持自由软件精神、怀揣浪漫主义思想的广大开发者们,加入 KLTS 开源社区,一起贡献,共同培育,结出硕果。

  • 加入 KLTS 社区

    https://github.com/klts-io/

  • 加入 KLTS Slack 聊天频道

    https://join.slack.com/t/klts/shared_invite/zt-za36806q-6PWB_yRRY9rP78orYVonig

当然您也可以加入我们的企业微信交流群和我们交流互动:http://blog.daocloud.io/wp-content/uploads/kefu.jpeg

DaoCloud 公司简介:「DaoCloud 道客」云原生领域的创新领导者,成立于 2014 年底,拥有自主知识产权的核心技术,致力于打造开放的云原生操作系统为企业数字化转型赋能。产品能力覆盖云原生应用的开发、交付、运维全生命周期,并提供公有云、私有云和混合云等多种交付方式。成立迄今,公司已在金融科技、先进制造、智能汽车、零售网点、城市大脑等多个领域深耕,标杆客户包括交通银行、浦发银行、上汽集团、东风汽车、海尔集团、屈臣氏、金拱门(麦当劳)等。目前,公司已完成了 D 轮超亿元融资,被誉为科技领域准独角兽企业。公司在北京、武汉、深圳、成都设立多家分公司及合资公司,总员工人数超过 350 人,是上海市高新技术企业、上海市“科技小巨人”企业和上海市“专精特新”企业,并入选了科创板培育企业名单。

【K8s超级补丁】KLTS攻略:KLTS现有成果、如何使用、RoadMap规划,如何参与到KLTS项目贡献中来相关推荐

  1. Windows8.1超级瘦身攻略

    Win8系统盘增长速度真的挺恐怖的,如果不加管理,每次安装/更新后都可着劲的吃硬盘空间,朽木的C盘占用已经到了50G左右,虽说现在硬盘容量普遍都是T级别,无需在意这些东西,但是对于SSD来说,空间使用 ...

  2. Liunx实现超级签名详细攻略(一)超级签名简介

    本文将从零开始详细讲解在Liunx中完全自动化实现超级签名流程. iOS超级签名: 主要目的: 把开发的APP不通过App Store安装到用户手机中. 优点: 不用上架App Store,稳定不掉签 ...

  3. 超级兔子人三人按键_超级兔子人攻略大全 新手入门少走弯路[视频][多图]

    超级兔子人是一款非常有趣的休闲类型游戏,很多新手玩家都不知这款游戏怎么玩,接下来嗨客小陈为大家介绍超级兔子人攻略大全. 超级兔子人攻略大全 从各种3D场景中选择一个闯关模式,可单人进行挑战,也可与好友 ...

  4. java机动武斗传隐藏_超级机器人大战j攻略 超级机器人大战j全隐藏要素

    超级机器人大战j攻略 主角的前辈 凯尔 第3话让英二说得凯尔 第4话同样让英二说得凯尔,接下来选择赞成保护凯尔 第10话后分歧走AA路线(大天使),第14话中用英二跟凯尔战斗 第39话入手 主角的姐姐 ...

  5. 搭建 超级签 详细攻略

    超级签网上的讲解已经有很多很多了,但是都不够细致, 对于我这种没接触过苹果开发的人来说, 还是有点蛋疼. 这也是这篇博客的目的,希望帮助到更多人. 开头先说下超级签, 也不知道谁起的这么有创意的名字. ...

  6. 计算机基础知识论文统一格式,计算机论文格式(超级详细的攻略)

    一般来说,论文写作都是有标准的写作格式的,并且论文的优劣可以看出一个学者的学术情况,下面是计算机论文格式的介绍,欢迎阅读指正. 1.题名.题名是一篇论文的总题目,是论文内容的高度概括,是论文精髓集中表 ...

  7. CHAOS;HEAD 简体中文汉化补丁版 攻略(0.9版)

    注:标★号的地方是妄想触发器.写有"绿"的请选择左上的积极妄想,"红"的则是右上的消极妄想.标注"Through"的请跳过. ------- ...

  8. 超级机器人大战阿尔法php,超级机器人大战α流程攻略 机战Alpha外传分支多线路攻略(9)...

    ★第三十六话 リン·ミンメイ/林明美(超级系) 一条辉追着敌人进入MACROSS内,然后获得卡多鲁的帮助.辉的主要目的就是在3回合内赶到林明美所处之地,然后因为MACROSS的变形一同被卷入地下.接着 ...

  9. cf1月超级翻盘_攻略中心:坚持不懈,比赛史上那些惊天翻盘-穿越火线官方网站-腾讯游戏...

    穿越火线在中国属于最争气的电竞项目,当然有着这么多年的比赛史,穿越火线出现过很多次的黑马强势逆袭或者强队翻车(S9AG不敌AE),当然这并不是最好看的,最好的莫过于强势的将落后很大的比分追平然后加时的 ...

最新文章

  1. Evolview:提升系统进化树颜值
  2. python把矩阵存为文件_python 读取文件并把矩阵转成numpy的两种方法
  3. 微型计算机课程介绍,微机原理及应用课程教学大纲教案
  4. AtCoder AGC043D Merge Triplets (DP、组合计数)
  5. 第三次学JAVA再学不好就吃翔(part73)--SimpleDateFormat类
  6. linux内存一直占满问题
  7. 51单片机c语言教程第二章,51单片机C语言教程-郭天祥-PDF转word版第二章.docx
  8. 国产杂牌机java_国货精品 山寨 杂牌 HiPhone 诺卡 MTK联发科 mrp
  9. teststand调用python模块_TestStand 界面重置【小技巧】
  10. 计算机无法验证签名,win7系统无法验证文件数字签名的解决方法
  11. 魔兽是用Python开发的,一起看看Python开发的知名网站和游戏!
  12. MySQL数据库篇---对数据库,数据库中表,数据库中表的记录进行添修删查操作---保姆级教程
  13. int型变量占多少个字节?
  14. 关于立创EDA专业版图纸尺寸的设置问题
  15. Android X86 解决ARM兼容的问题
  16. 自动化收取蚂蚁森林能量(无须连接电脑)
  17. How Tomcat Works, A Guide to Developing Your Own Java Servlet Container
  18. 基于用户乘车行为大数据的客流分析及预测模型
  19. 365地图java_数字说话 中国最全的电子地图网站
  20. Arduino设计记录位置的自动机械臂

热门文章

  1. SSD-2(代码部分介绍)
  2. Apache和php安装
  3. 转: angularjs学习总结(~~很详细的教程)
  4. 成佩涛-项目管理类经理必须了解的工具
  5. ServiceMesh实践与探索
  6. windows源码编译PHP7.1
  7. 萌新 学习python 途中一点疑惑记录IndexError: string index out of range
  8. 2019年苹果iOS App上架详细图文教程
  9. 不要黄泛区及东北人?地域歧视谁之责
  10. 商业php源码,Thinkphp内核2019全新UI威客任务平台网站商业原版源码