Kubernetes-集群的十年历程-管理-踩过的十个大坑 (kubernetes)
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 社群获得支持, 私信回复“社群”可以免费获取技术支持跟学习资料。
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。