作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。
我们Kubernetes讲到现在已经讲了80+小节,当然这些内容并没有包含所有的内容,这些也是我相对比较熟悉的内容,所以我这里做一个简单的总结。
基本概念&安装集群
1.基本概念,主要介绍使用比较多的概念,比如Pod,Service等。
2.安装Docker版本,这个属于早期使用较多的版本。
3.安装Containerd版本,新版本只支持Containerd,调用链上减少一环。
4.生产高可用方案,多节点,高可用,证书100年。
资源&工作负载
1.Pod介绍,介绍什么是Pod,Pod和容器之间的关系。
2.静态Pod,介绍了一种特殊的Pod,以及应用场景。
3.Master节点,介绍了Master上运行的组件及功能。
4.Node节点,介绍了Node上运行的组件及功能。
5.ReplicaSets介绍,介绍它的操作方法和用途。
6.Deployment介绍,Kubernetes里面使用最多的工作负载,绝大部分业务都是以此形式存在。
7.DaemonSet介绍,介绍守护进程主要部署方式和功能。
8.StatefulSet介绍,有状态组件常用的部署方式及应用场景。
安全&配置
1.ConfigMap介绍,介绍了ConfigMap资源特性。
2.ConfigMap案例,介绍了ConfigMap在实际环境中挂载配置文件方式使用ConfigMap。
3.Secret介绍,介绍Secret和ConfigMap区别,Secret主要是密文形式。
4.Secret案例,介绍一个真实案例,用于存储Docker仓库的账号和密码。
资源&性能
1.HealthCheck介绍,介绍健康检查的几种形式和功能。
2.HealthCheck案例,介绍了一个真实环境的健康检查的案例,用于提高服务的健壮性。
3.资源限制Limit和资源请求Request,介绍了Limit在于Cgroup的实现,和Request在调度里面的作用。
服务&访问形式
1.Service基本介绍,介绍Service的实现原理和其负载均衡的作用。
2.其他类型的服务,NodePort,Loadbalance,headless service,介绍其他几种不同类型的服务,在不同时候的用处。
3.服务(Service)流量走向,介绍我们的流量是如何通过Iptables转发到实际Pod。
4.externalTrafficPolicy介绍,介绍了我们的特殊类型的服务,实现不同的负载后端和保留源IP地址。
5.Ingress介绍和安装,介绍一种特殊的流量入口,通过使用域名转发7层协议实现统一入口管理。
6.Ingress案例,介绍一个真实的案例,把一个虚拟域名转发到后端指定的Pod里面。
7.CoreDNS介绍(一),介绍了内部域名解析流程。
8.CoreDNS介绍(二),介绍了内部域名的服务器全称和服务简写。
Helm
1.Helm介绍和安装,这里介绍了一个类似Yum源的安装软件的部署方式和安装实现。
2.Helm的部署具体应用,介绍了一个使用Helm部署一个真实服务Redis的情况。
3.Helm的内部逻辑,介绍了Helm内部实现逻辑和修改方式。
存储
1.PV和PVC介绍,介绍在Kubernetes里面多种存储方案及抽象出来的2个概念:PersistentVolume(PV)和PersistentVolumeClaim(PVC)。
2.PV和PVC案例,介绍了通过PV和PVC来抽象出来磁盘挂载,把存储和应用之间进行解耦。
3.StorageClass介绍,通过StorageClass实现自动管理存储,避免前面需要手动创建PV和PVC的情况。
4.StorageClass案例,介绍了一个使用NFS作为后端StorageClass存储,来提供给应用使用。
任务
1.Job,介绍了一次性任务的原理和使用案例。
2.CronJob,介绍了可循环使用的任务的配置方式和逻辑。
3.InitContainers,介绍了初始化容器的使用方式和使用地方。
调度
1.调度Scheduler介绍,介绍Kubernetes在Pod调度里面的几种算法:预选和优选,然后进行打分的过程。
2.标签label和nodeSelector介绍,介绍如何通过标签实现让Pod调度到指定的节点。
3.污点Taints和容忍Tolerations,介绍如何让Node拒绝Pod和让Pod可以忽略Node的拒绝。
4.Node亲和性和反亲和性,一种更灵活的调度方式,可以规避掉nodeSelector太强制的问题。
5.Pod亲和性和反亲和性,可以确保Pod可以和谁在一起和不能和谁在一起的问题,提高了Pod的健壮性。
证书和权限
1.证书介绍,介绍了Kubernetes里面所涉及到的证书,签发关系和时间问题。
2.证书续期,介绍如何通过命令对Kubernetes涉及到的证书进行续期。
3.永久证书(100年),介绍通过修改kubeadm源码,实现创建集群的证书都是永久(100年)的,这样可以规避掉由于证书过期而引发的问题。
4.ServiceAccount,介绍在Pod内部如何定义权限,让Pod具有访问Kube-apiserver的能力。
5.UserAccount,介绍如何创建一个用于集群外部访问集群的证书,从而达到权限控制的能力。
维护Kubernetes集群
1.隔离Cordon和驱逐Drain,介绍如何更优雅,对业务的影响最小的服务器维护方式。
2.服务质量QoS,介绍如何QoS作用和如何根据业务的重要程度配置合适的QoS策略。
3.log和exec逻辑,介绍在管理维护Pod常用的2个参数实现原理和可能容易出问题的地方。
4.Pod创建流程,介绍了Pod的生命周期以及当我们创建Pod的时候内部逻辑是如何走向的。
5.Pod状态,介绍Pod各个状态以及如何查看具体的事件,从而可以进行更快的处理方式。
6.Node状态,介绍Node的状态变化,从而更好的解决问题。
7.注解Annotations,介绍了注解的功能和主要作用。
8.Reloader介绍和使用,介绍如何使用注解功能,实现我们业务的自动重启功能。
9.命名空间NameSpace,介绍了Kubernetes里面的资源隔离形式和资源限制方式来实现集群更好的维护。
10.集群日志,介绍核心管控组件调整日志级别的功能,通过日志我们可以分析更加容易找到问题故障原因。
11.备份和Etcd介绍,如何对Kubernetes里面的资源进行备份的两种方式。
12. kubectl常用命令,对前面应用到的命令进行了一个总结。
13.Dashboard,介绍仪表板的安装和主要功能。
14.配置COS存储,介绍如何把Docker仓库和腾讯的对象存储进行对接,从而实现后端存储的高可用。
15.自动扩缩容HPA,如何通过监控组件,实现Pod自动扩缩容,从而应对突然而来的流量高峰。
16.故障检查和故障自愈NPD,引入了一种新的故障检查和故障恢复的能力。
网络插件
1.CNI介绍,介绍Kubernetes通过CNI插件实现网络和集群配置解耦,让我们可以选择适合自己的网络插件。
2.Flannel插件,一种最简单的网络插件的原理和通信方式。
3.Calico介绍,另外一种相对复杂,但是有更多功能的网络插件。
服务目录和CRD
1.服务目录(ServiceCatalog)介绍一,介绍了早期Kubernetes里面引用第三方资源的方式。
2.服务目录(ServiceCatalog)介绍二,介绍ServiceCatalog里面的涉及到的多个概念。
3.自定义资源CRD,介绍自定义资源的原理和实现方式。
4.Operator,介绍CRD的具体实现,并且也是当前使用Kubernetes集群使用中间件的趋势。
5.Mariadb-Opetator,一个可以用于生产环境的数据库案例:有单机版和集群版。
6.ZooKeeper-Opterator,另外一个可以用于生产环境的案例。
监控
1.监控介绍Promethues,从早期的监控到云原生的监控,Prometheus已经是事实上的标准。
2.Prometheus安装,通过Helm安装Prometheus-Opterator,然后实现Prometheus及附属组件的安装。
3.Prometheus监控项目,介绍了Prometheus默认的监控项目和接入第三方监控的方法。
4.图形化监控Grafana,自带的Grafana的介绍和导入自定义图表的方式。
KubeVirt
1.KubeVirt介绍和安装,介绍了一种特殊的需求,在Pod里面跑虚拟机的部署方式。
2.构建自己Pod虚拟机镜像,如何把自己的业务封装在虚拟机里面,并使用Kubernetes来调度。
其他
以上内容基本上就是我接近3个月的Kubernetes更新内容,作为体验入门是没问题的,如果还需要更加深入还需要不停的练习。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。