当前位置:首页 > 数码 > Kubernetes-集群的十年历程-管理-踩过的十个大坑 (kubernetes)

Kubernetes-集群的十年历程-管理-踩过的十个大坑 (kubernetes)

admin8个月前 (04-11)数码27

Kubernetes是容器技术的绝对王者,它允许我们在YAML文件中描述应用程序的外观,然后Kubernetes会完成其余的工作。

高效管理Kubernetes集群至关重要。本文总结了管理Kubernetes集群三年的10条最有价值的经验教训。

1. 不要自己管理Kubernetes底层基础设施

将Kubernetes底层基础设施交给合适的云服务商管理会更高效。

2. 使用代码部署Kubernetes基础设施

不要在控制台上进行任何集群操作,使用代码更新基础设施。

3. 避免过度使用您无法完全控制的Helm Chart

理解values.yaml文件中的每个变量并避免使用默认值。

4. Kubernetes不适合直接迁移

集群的十年历程

重新调整旧应用程序以与Kubernetes兼容,或者继续使用虚拟机。

5. 是否安装服务网格?

只有在集群中的应用程序需要相互通信并交换信息需要保护时才需要安装服务网格。

6. 不要使用多种工具

kubectl可以满足90%的需求,最多选择kubectx、kubens、k9s等少数工具。

7. 务必定义分配给pod的资源限制

防止资源消耗过大。

8. 避免在pod中保留数据

安装在NAS上而不是磁盘上。

9. 配置HPA

让Kubernetes根据需求自动管理资源利用率。

10. 不要害怕改变

每四个月升级一次集群版本,并回顾发行说明和专家经验。

写在最后

这些经验教训涵盖了从管理底层基础设施到优化部署流程、确保集群的可扩展性和安全性等各个方面。


高可用kubernetes集群搭建

架构说明

Kubernetes集群组件:

k8s集群高可用,一般是etcd,kube-apiserver,kube-controller-manager,kube-scheduler服务组件的高可用。

规划:

3个master节点,2个worker节点,使用keepalived+haproxy做高可用

一、前期环境准备

Kubernetes 1.8开始要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动。

方法一 通过kubelet的启动参数–fail-swap-on=false更改这个限制。

方法二 关闭系统的Swap, swapoff -a

修改/etc/fstab文件,注释掉SWAP的自动挂载,使用free -m确认swap已经关闭。

二、docker安装

安装docker-ce,所有节点都要安装

yum-utils 提供yum-config-manager工具,devicemapper存储需要device-mapper-persistent-data和lvm2

添加yum源仓库

官方仓库

安装docker

配置docker中国镜像加速器,修改cgroup driver为systemd,k8s建议使用systemd,配置后重启docker

三、安装haproxy,keepalived

安装haproxy和keepalived,实现kube-apiserver高可用

psmisc提供killall命令

配置haproxy

配置keepalived

注意:在另外两个节点,设置state为BACKUP,priority设置为110,100

启动所有节点的haproxy和keepalived

查看VIP

注意,使用ifconfig命令是看不到的,必须使用ip addr命令

这时候vip在130.252.10.235上,我们关闭235上的haproxy,验证vip是否会漂移到其他节点

四、kubeadm/kubelet/kubectl安装

master节点安装:kubeadm、kubelet、kubectl

node节点安装:kubeadm、kubelet

安装

五、使用kubeadm初始化cluster

step1 准备初始化配置文件

根据自己的环境修改配置.

step2 处理kubernetes依赖的镜像

master需要的镜像为

node节点需要的镜像为

查看需要的镜像版本

拉取镜像

六、初始化第一个master节点

注意:如果你禁用了swap分区,则不需要加--ignore-preflight-errors=Swap

配置kubectl

启用kubectl的自动补全命令

七、安装Pod网络flannel

八、将其他master节点添加到cluster

将node1证书文件复制到其他master节点node2,node3

分别在master1和master2 执行下面的命令

九、将node节点添加到cluster

十、检查集群运行 健康

在master节点查看节点状态

所有的节点都是NotReady,这是因为每个节点都需要启动若干组件,这些组件都是在pod中运行,需要从Google下载镜像

查看pod的状态

查看集群信息

查看etcd集群

查看集群是否 健康

查看集群的leader

注意 :因为是3个节点的ETCD集群,所以只能有一个宕机,如果同时又2个节点宕机,则会出现问题Unable to connect to the server: EOF

etd集群需要大多数节点(仲裁)才能就集群状态的更新达成一致,所以ETCD集群节点一般是奇数个,而且只有存活节点个数大于下线节 点个数才能正常运行,5个节点的ETCD集群,允许同时2个节点故障。

一般建议5个节点,超过五个虽然容错性更高,但是集群写入性就会差。

检查IPVS

资深架构师分享:1 天落地的 Kubernetes 容器化方案

Kubernetes 是趋势

Kubernetes 是一个全新的基于容器技术的分布式架构领先方案。Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

Kubernetes是一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、内建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。同时Kubernetes提供完善的管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节。

2016、2017年开始,各大互联网厂商就已经进行了各种容器化 + Kubernetes的尝试,各种实践证明 Kubernetes 越来越成熟。

Kubernetes 门槛高

然而,Kubernetes 在更大范围内落地的过程却困难重重,原因主要在于其过高的学习门槛:

• 基础知识要求多,Linux、网络、Docker等;

• 集群安装管理复杂;

• Kubernetes 的配置文件 YAML 冗长,对象类型繁多、关联关系复杂

Kuboard 助力

Kuboard 从以下几方面解决 Kubernetes 落地的难题:

Kubernetes 安装手册

通过对 Kubernetes 安装步骤的反复研究,提供了精简的 Kubernetes 安装手册,并且听取网友实际安装过程中的反馈,多次修改和优化,逐渐形成经过检验的、简洁的 Kubernetes 安装手册。

图形化管理界面

提炼 Kubernetes 各核心概念之间的关系,帮助用户理解如何配置 Kubernetes,并以此为依据设计了 Kuboard 工作负载编辑器。使用 Kuboard,用户无需手工编写和维护冗长的 YAML 文件,配合 Kuboard 提供的其他辅助手段,完全通过图形界面就可以实现微服务的部署和维护。

Spring Cloud 微服务部署实战案例

Kuboard 提供 Spring Cloud 在 Kubernetes 上部署的实战案例分析,手把手帮助技术团队完成 Spring Cloud 微服务在 Kubernetes 上的部署和维护。

免费自助

这么好的东西卖多少钱?您完全无需为了使用此方案而进入漫长的商务谈判、内部审批流程。

使用网站上提供的任何文档、资源、方案、软件 完全免费 ,已经有许多技术团队参考这些资料,结合其已有经验,顺利地完成 Kubernetes + 微服务的落地交付。碰到问题时,您也可以通过 Kuboard 社群获得支持, 私信回复“社群”可以免费获取技术支持跟学习资料。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: Kubernetes

“Kubernetes-集群的十年历程-管理-踩过的十个大坑 (kubernetes)” 的相关文章

Kubernetes-网关-战略的流量治理-基于-API (kubernetes)

Kubernetes-网关-战略的流量治理-基于-API (kubernetes)

Kubees网关API经过形象复杂性并提供申明式的方法来定义路由和流量战略,简化了性能流程。 译自EffectiveTrafficManagementwithKubernetesGatewa...

Kubernetes-Kubernetes-深化了解-中的网络原理和最佳通常-网络模型综合指南 (kubernetes与docker的关系)

Kubernetes-Kubernetes-深化了解-中的网络原理和最佳通常-网络模型综合指南 (kubernetes与docker的关系)

这篇详细的博文讨论了Kubees网络的复杂性,提供了关于如何在容器化环境中确保高效和安保通讯的见地。 译自NavigatingtheNetwork:AComprehensiveGuideto...

深入了解-不够用时-调试的救星-superdebug-当debug-Kubernetes (深入了解不够)

深入了解-不够用时-调试的救星-superdebug-当debug-Kubernetes (深入了解不够)

kubectlexec 命令的限制 kubectlexec 命令用于在正在运行的 Pod 中执行命令,但它在 Kubernetes 中有以下限制: 不能以 root 身份运行:容...

Kubernetes弃用Dockershim-转向Containerd-影响及应对指南 (kubernetes与docker的关系)

Kubernetes弃用Dockershim-转向Containerd-影响及应对指南 (kubernetes与docker的关系)

Kubernetes 1.24 版本发布时,正式宣布弃用 Dockershim,转向 Containerd 作为默认的容器运行环境。 Kubernetes 为何弃用 Dockershim?...

b-一文读懂Kubernetes部署战略-b (bci原文)

b-一文读懂Kubernetes部署战略-b (bci原文)

在这篇文章中,咱们将深化钻研Kubees部署概念和一些经常出现战略,了解每种战略的优缺陷。适合的部署战略使咱们能够在颁布运行程序时最大限制地缩小停机时期、增强客户体验并提高牢靠性。 什么是K...

探索监控和自动化在现代软件开发中的作用-从Kubernetes的探针到DevOps (探索监控和自拍的区别)

探索监控和自动化在现代软件开发中的作用-从Kubernetes的探针到DevOps (探索监控和自拍的区别)

探针的作用 从功能上讲,探针的作用很简单:它是一种由 Kubernetes 提供的检查机制,用于检测应用程序是否正常运行。最常见的探测方式是 HTTP 探测。应用程序需要公开一个地址,Kuber...

基本原理揭秘-Informer-深化了解-Kubernetes (基本原理的作用)

基本原理揭秘-Informer-深化了解-Kubernetes (基本原理的作用)

本文剖析k8scontroller中informer启动的基本流程 不论是k8s自身组件,还是自己编写controller,都须要经过apiserver监听etcd事情来成功自己的控制循环逻...