![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
29天玩转Kubernetes
文章平均质量分 79
如何在一个容器化的技术风口提前准备好,并且脱颖而出、升职加薪、走上人生巅峰?
湫一刀
陨落世界的修行者
展开
-
29.手把手系列之二进制部署高可用k8s集群
29.手把手系列之二进制部署高可用k8s集群二进制部署高可用k8s集群本章节采用纯二进制文件方式部署https(证书有效期为10年)高可用k8s集群,所有涉及的配置文件和镜像均已提供。另外,默认集群规模可支撑254个节点。如果需要调整,请自行修改/etc/kubernetes/controller-manager中的–node-cidr-mask-size=24字段。本章节目录:1>生产环境高可用设计原则2>生产环境高可用架构3>基础环境准备4>Docker环境准原创 2021-11-02 10:00:00 · 401 阅读 · 0 评论 -
28.Kubernetes的包管理利器:Helm使用进阶
28.Kubernetes的包管理利器:Helm使用进阶Helm是一种管理Charts的工具,而charts则是打包预配置Kubernetes基础资源的配置合集。上一章节我们学习了Helm的认知和部署安装,这一章节中我们将学习自定义chart制作、打包和发布,release的版本发布和回滚功能,希望能给大家学习Helm起到抛砖引玉的作用。1.自定义chart制作1)首先我们先创建我们myapp的chart项目#进入local仓库的目录[root@centos-1 local]# cd /ro原创 2021-11-01 10:00:00 · 187 阅读 · 0 评论 -
27.Kubernetes的包管理利器:Helm基础
27.Kubernetes的包管理利器:Helm基础Helm是一种管理Charts的工具,而charts则是打包预配置Kubernetes基础资源的配置合集1.概念介绍如图所示,各组件说明如下:helm:负责本地开发,作为命令行客户端,通过grpc协议,向tiller发送请求tiller:接受helm请求,合并charts、发布、卸载和回滚release,并向API server发送相应请求charts:基础资源的配置模版集合config:charts配置参数,用于渲染chartsch原创 2021-10-31 10:00:00 · 118 阅读 · 0 评论 -
26.使用HPA控制器动态扩展基础资源
26.使用HPA控制器动态扩展基础资源应用资源的使用率通常和业务特性密切相关,其会有高峰和低谷的时候。如何削峰填谷、如何提高集群的整体资源利用率、如何让service中的Pod个数进行自动调整呢?这就得依赖于Horizontal Pod Autoscaling(HPA控制器)了!1.系统扩展浅谈随着业务的快速发展,我们都会从以下两个维度来思考如何扩展系统,从而保证业务的稳定性:1) 提升系统的单机处理能力 :又称垂直扩展1> 增强单机硬件性能,例如:增加CPU的核数,由8核扩展到16原创 2021-10-30 10:00:00 · 233 阅读 · 0 评论 -
25.使用CRD扩展Kubernetes-API和高级主题
25.使用CRD扩展Kubernetes-API和高级主题有些场景,kubernetes内建的资源类型往往不能满足我们的需求,如redis集群初始化、扩容、缩容、备份等操作。这时候就需要我们考虑如何去扩展kubernetes的API。1.扩展方式为了增强kubernetes的定制化功能,我们可以通过以下三种方式来扩展Kubernetes API:1>修改kubenetes的apiserver源码:难度最大、kubernetes版本更新太快,兼容性很困难2>自定义API serv原创 2021-10-29 10:00:00 · 244 阅读 · 0 评论 -
24.污点和容忍度深入研究
24.污点和容忍度深入研究Taint(污点)和Toleration(容忍度)可以作用于node和pod上,其目的是优化pod在集群间的调度,这跟节点亲和性类似;只不过它们作用的方式相反,其用作确保pod不会被调度在指定的节点上。1.概念引入为了可以让大家更简单、更直观的了解到污点和容忍度的意思,我这里画了个趣图。如图所示,node节点上分别有云、五角星、十字架这三个不同组合的污点;Pod-A上有云和五角星的污点容忍度,Pod—B上则没有容忍度。最终调度结果为:1.Pod-A:调度至nod原创 2021-10-28 10:00:00 · 265 阅读 · 0 评论 -
23.高级调度机制之topologyKey
23.高级调度机制之topologyKey上一章节中,我们谈到了预选和优选策略,也谈到了节点亲和度和pod亲和度,最后还抛出了一个关键字段:topologyKey。这一章节,让我们来全面学习一下这个字段的原理和用法。1. 什么是topologyKey?首先,我们得先了解一下,topologyKey是什么?原则上,topologyKey可以是任何合法的标签密钥。 但是,出于性能和安全性原因,topologyKey受到以下一些限制:1>对于亲和关系,以及pod反亲和的硬亲和条件requi原创 2021-10-27 17:58:07 · 2247 阅读 · 0 评论 -
22.资源调度器与调度机制
22.资源调度器与调度机制在Kubernetes中,调度是指确保Pod与Node节点的匹配度,以便Kubelet可以运行它们。1.调度概述在kubernetes集群的概念中,调度主要是做两件事情:1.监听新创建,且未被分配至任何node节点的pod资源2.根据机身集群的计算资源、规则、匹配度等情况,为新的pod资源进行调度2.调度流程调度流程如图所示,调度流程可分为两大块:Filtering和Scoring1.Filtering预选阶段,也称为predicate。会按照预选过原创 2021-10-27 17:53:39 · 321 阅读 · 0 评论 -
21.Kubernetes中的网络安全组:Network-Policy
21.Kubernetes中的网络安全组:Network-Policy网络策略是关于如何定义Pod组与彼此间,以及其他网络端点进行通信的规范。NetworkPolicy资源使用标签选择pod并且定义网络流量策略。1.Network-Policy概述默认情况下,pod资源是非隔离性的,它可以接收任何来源的流量。这其实不是我们生产环境所期望的,因为它不够安全!此时就诞生了Network-Policy,如果做个比喻,我觉得它更像是阿里云上安全组的概念。用于实现:1.多租户的隔离(名称空间级别原创 2021-10-25 10:00:00 · 681 阅读 · 0 评论 -
20.Flannel网络插件体系
20.Flannel网络插件体系网络是Kubernetes的核心部分,学好这一章节可以让你对于集群架构有一个较完善的了解1.Kubernetes网络中的挑战网络是Kubernetes的核心部分,但是要确切地了解其工作方式可能会面临各种挑战,比如:1>高度耦合的容器间通信:这通过pod和locahost间通信得以解决2>pod间的通信:这是本章节需要着重讲解的3>pod到service的通信:这是由service解决的4>最后一点就是,外部流量与service的通信原创 2021-10-24 10:00:00 · 130 阅读 · 0 评论 -
19.Dashboard部署
19.Dashboard部署在 Kubernetes 社区中,有一个很受欢迎的Dashboard项目,它可以给用户提供一个可视化Web界面来查看当前集群的各种信息、应用我们的yaml文件。用户也可以用Kubernetes Dashboard监控应用的状态、执行故障排查任务以及管理Kubernetes的各种基础资源。1.环境信息组件版本kubernetesv1.16.3dashboardv2.0.0-beta5对于其他版本的获取,以及详细的版本兼容性,你可以在d原创 2021-10-23 10:00:00 · 250 阅读 · 0 评论 -
18.准入控制器
18.准入控制器Admission Controller准入控制器作为把手kubernetes系统安全的最后一道关卡,对已知且有权限用户的操作合规性验证是缺一不可的!1.什么是准入控制器?准入控制器(Admission Controller)位于API Server中,在对象被持久化之前,准入控制器拦截对API Server的请求,一般用来做身份验证和授权。其中包含两个特殊的控制器钩子:MutatingAdmissionWebhook和ValidatingAdmissionWebhook1原创 2021-10-22 10:00:00 · 312 阅读 · 0 评论 -
17.Apiserver和RBAC
17.Apiserver和RBAC1.如何保证Kubernetes系统安全如何保证Kubernetes系统安全,我们可以从以下三大部分进行学习、研究和设计:1.Apiserver首当其冲的就是apiserver,他是系统安全三板斧中的第一道关卡,其作用为:谁能进入我们的kubernetes集群,这个谁可以是客户端用户、应用程序,也可以是集群中的node节点。说到这里,你可能对后半句话有些疑虑。防范外部的访问我是知道的,为什么还要防范集群内部的请求呢?容我先来举个例子。如果你了解、原创 2021-10-21 10:00:00 · 90 阅读 · 0 评论 -
16.Operator控制器
16.Operator控制器原创 2021-10-20 10:00:00 · 174 阅读 · 0 评论 -
15.StatefulSet控制器的金丝雀发布
15.StatefulSet控制器的金丝雀发布如果说Deployments和ReplicaSets解决的是无状态服务部署、扩缩容的刚需,那么StatefulSet控制器则是为了解决有状态服务的部署难题。1.什么是StatefulSet?StatefulSet是一个管理有状态应用的API对象。StatefulSet作为Controller为Pod提供其唯一的标识。它可以保证应用程序部署和扩展的先后顺序2.StatefulSet的应用场景StatefulSet 适用于有以下某个或多个需求的应原创 2021-10-19 12:00:00 · 192 阅读 · 0 评论 -
14.Secret资源深度剖析
14.Secret资源深度剖析Secret解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中。1.什么是Secret?kubernetes的secret对象可以让你存储和管理敏感信息,如密码、oauth token和ssh keys。把这些信息配置到secret里面会比在pod spec中定义更安全和灵活。如果有兴趣,你还可以参考阅读secret的设计目的(https://git.k8s.io/community/contributors/原创 2021-10-18 10:00:00 · 866 阅读 · 0 评论 -
13.ConfigMap资源之该用-from-literal还是-from-file
13.ConfigMap资源之该用-from-literal还是-from-file1.什么是ConfigMap?ConfigMap(简称CM)允许你把配置文件从image镜像本地中解耦出来,来保持集装箱化应用的便携性。ConfigMap可以通过监听在配置文件、命令行参数、环境变量等其他配置的架构中,然后在你的pod容器和系统组件运行时,达到配置的加载功能。同时ConfigMap也建议将那些,可以使得你更好的进行变更和管理配置文件的配置,从pod和系统组件中剥离出来。ConfigMap存储配置信原创 2021-10-15 10:00:00 · 298 阅读 · 0 评论 -
12.pv、pvc和sc的作用
12.pv、pvc和sc的作用1.Volume定义在容器的生命周期里,位于磁盘上的文件,它的生命周期是很短暂的,docker里面如此,kubernetes里亦然。数据很可能因为各种不可抗因素丢失,比如pod被迫下线时,它会根据rs控制器的数量定义,重新生成一个干净状态的新pod。Volume的引入不但解决里数据稳定性的问题,也解决了同一个pod内,多个containers数据共享的需求;和docker里不同的是:1)kubernetes中内置封装了很多存储类型,pod也可以选择性的使用一个或原创 2021-10-14 12:00:00 · 1038 阅读 · 0 评论 -
11.Ingress资源
11.Ingress资源?对于负载均衡和外网代理的解决方案,云上环境,我们使用SLB;传统环境,我们会选Haproxy、LVS,但在kubernetes体系中,我只会选择ingress(controllers)!1.什么是Ingress?ingress是一个管理kubernetes集群南北流量的api 对象,典型的有HTTP。并且可以提供:LB负载均衡的能力。注意:1)南北流量和东西流量是服务网格中的经常描述网络流量的术语。南北流量(NORTH-SOUTH traffic):集群外部-&g原创 2021-10-14 10:00:00 · 287 阅读 · 0 评论 -
10.Service资源的五种代理模式
10.Service资源的五种代理模式Service资源是Kubernetes中最核心的资源对象之一,其定义了一个统一访问的服务入口地址,客户端可以通过这个入口地址访问其背后的一组由Pod副本组成的集群实例。 Service与其后端Pod副本集群之间则是通过Label Selector标签选择器来实现动态注册和调度的。1.为什么需要Service资源?我们之前提到过一个控制器:deployment,他会根据rs控制器中定义的用户期望数量,去平衡现有状态和用户状态;也有自己的选择器,关联新增的pod资原创 2021-10-13 15:37:04 · 598 阅读 · 0 评论 -
9.Job控制器
9.Job控制器Job控制器负责批量处理短暂的一次性任务,即仅执行一次的任务,并根据Spec字段的属性创建Pod资源,并持续监控Pod的状态,直至其状态为Completed。如果失败,则根据restartPolicy重启策略决定是否创建新的Pod再次重试任务。1.什么是Job?Job控制器为一次性任务,任务完成时的状态为Completed,常用作文件日志备份、数据迁移操作,如下所示:[root@centos-1 mainfasts]# kubectl get podNAME原创 2021-10-13 09:23:05 · 185 阅读 · 0 评论 -
8.DaemonSet控制器
8.DaemonSet控制器本章节给你带来第二个控制器:DaemonSet的讲解。你将了解到:什么是DaemonSet,以及他的配置实战,最后我还引出了污点和容忍度的专有名词,如果你已经有了一定的基础。1.什么是DaemonSet?DaemonSet是一个确保每个符合规则的node节点有且仅有一个对应Pod的控制器。你要注意以下两点:1.新节点加入集群,也会新增一个Pod2.当节点下线后,相应Pod也会被回收DaemonSet控制器的应用场景,就是解决日志收集、监控系统等客户端部署的刚原创 2021-10-13 09:15:40 · 289 阅读 · 0 评论 -
7.Deployment控制器的更新机制
7.Deployment控制器的更新机制本章节开始,将对控制器逐个进行讲解、分析和实战,我们先讲解最基础且最常用的控制器:Deployment!1.控制器对象的分类kubernetes中的控制器有很多,他们用作满足不同的业务场景,大家可以先来了解一下,有一个基础的概念。1.守护进程型1)无状态应用:非系统级应用应用场景:常见的http服务器:nginx、apache推荐控制器:Deployment2)无状态应用:系统级应用应用场景:日志和监控收集的客户端,特点就是每个node节点需要原创 2021-10-13 09:08:00 · 220 阅读 · 0 评论 -
6.Pod进阶
6.实践篇:Pod进阶之不为人知的九大细节本章节将多以文字描述的形式,讲述Pod资源管理中的9大基础部分,可能会比较枯燥,请各位备好肥宅快乐水!那么,我们开始吧!1.标签标签是“键值”类型的数据,它们可于资源创建时直接指定,也可随时按需添加,而后即可由标签选择器进行匹配度检查,从而完成资源的挑选。你需要注意:1>一个对象可拥有不止一个标签,而同一个标签也可被添加至多个资源之上;...原创 2020-04-07 10:32:52 · 102 阅读 · 0 评论 -
5.Pod资源清单配置基础
5.实践篇:Pod资源清单配置基础Docker语境中我们都说容器、docker,大家耳熟能详。但到了kubernetes中,这个专有名词仿佛就被"取而代之"了。kubernetes的语境中,我们将一个容器集合称之为Pod1.What is Pod?What is Pod那什么是Pod呢?如图所示,Pod中有一个pause容器,和一堆业务容器,他们有各自的PID、MOUNT和USER,...原创 2020-04-07 10:31:52 · 114 阅读 · 0 评论 -
4.证书管理和资源类型
4.入门篇:不能说的秘密:证书管理和资源类型通过本章节的学习,你可以充分了解到一个https的kubernetes集群中所需的证书及其作用,以及kubernetes语境内的api资源类型,最后我还补充了几个基础的GET命令,此时你可以登录到上一章节我们使用kubeadm创建的集群,进行一些基础的查询操作了1.证书管理k8s于生产环境运行时,我强烈建议大家运行在https的安全环境下,其证书...原创 2020-03-31 14:40:26 · 162 阅读 · 0 评论 -
3.Kubeadm部署
3.入门篇:用过都说好的大宝剑之kubeadmkubeadm是一个提供了kubeadm init和kubeadm join最佳实践命令,且用于快速构建一个kubernetes集群的工具,你可以使用此工具快速构建一个kubernetes学习环境。通过本章节的学习,你将能够使用kubeadm工具,成功构建出一个基础的kubernetes集群的学习环境1.环境准备IP主机名角色操作...原创 2020-03-31 14:36:12 · 87 阅读 · 0 评论 -
序言:我们为什么要学Kubernetes
为什么要学?近几年,随着业务需求的快速发展,“动态”的特性仿佛就成了技术解决业务刚需的必要条件。3年前的研发端的spring cloud通过注册中心eureka解决了服务动态上下线、注册和续约的问题;同时,kubernetes则通过其强大和完善的基础组件、对象、控制器和平台的高级特性,从运维端对产品的稳定性和扩展性进行保驾护航!但要学好kubernetes,并不容易,这对于初学者和有一定经...原创 2020-03-24 15:30:46 · 148 阅读 · 0 评论