HELLO------------------kubernetes基础知识理解

一、k8s是什么:

kubernetes的简介

Kubernetes是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,它促进了声明式配置和自动化。它有一个巨大的、快速增长的生态系统。Kubernetes服务、支持和工具随处可见。
Kubernetes这个名字源于希腊语,意思是舵手或领航员。谷歌在2014年开源了Kubernetes项目。Kubernetes组合谷歌超过15年的经验利用来自社区的最佳想法和实践大规模运行生产工作负载。

kubernetes的发展历程

传统部署时代:早期,组织在物理服务器上运行应用程序。

无法为物理服务器中的应用程序定义资源边界,这导致了资源分配问题。
例如,如果多个应用程序在一台物理服务器上运行,可能会出现一个应用程序占用大部分资源的情况,结果是其他应用程序性能不佳。解决这个问题的方法是在不同的物理服务器上运行每个应用程序。但是,由于资源未得到充分利用,这种情况无法扩展,而且组织维护许多物理服务器的成本很高。

虚拟化部署时代:作为一种解决方案,引入了虚拟化。

它允许您在单个物理服务器的中央处理器上运行多个虚拟机。虚拟化允许应用程序在虚拟机之间隔离,并提供一定级别的安全性,因为一个应用程序的信息不能被另一个应用程序自由访问。
虚拟化允许更好地利用物理服务器中的资源,并允许更好的可扩展性,因为应用程序可以轻松添加或更新,降低硬件成本,等等。通过虚拟化,您可以将一组物理资源呈现为一组一次性虚拟机。每个虚拟机都是一个完整的机器,在虚拟化硬件之上运行所有组件,包括其自己的操作系统。

集装箱部署时代:容器类似于虚拟机,但它们具有宽松的隔离属性,以便在应用程序之间共享操作系统。

因此,容器被认为是轻量级的。与虚拟机类似,容器有自己的文件系统、共享的中央处理器、内存、进程空间等等。由于它们与底层基础设施是分离的,因此它们可以跨云和操作系统分布进行移植。

容器的优势

敏捷的应用程序创建和部署:与虚拟机映像使用相比,容器映像创建更加容易和高效
持续的开发、集成和部署:通过快速简单的回滚(由于映像不变性),提供可靠和频繁的容器映像构建和部署
开发和运营关注点分离:在构建/发布时而不是部署时创建应用程序容器映像,从而将应用程序从基础架构中分离出来。可观察性不仅显示了操作系统级的信息和指标,还显示了应用程序的运行状况和其他信号。
跨开发、测试和生产的环境一致性:在笔记本电脑上运行与在云中运行相同的内容。云和操作系统分发可移植性:运行在Ubuntu、RHEL、CoreOS、内部、主要公共云和其他任何地方。
以应用程序为中心的管理:将抽象级别从在虚拟硬件上运行操作系统提升到使用逻辑资源在操作系统上运行应用程序。
松散耦合、分布式、灵活、自由的微服务:应用程序被分成更小、独立的部分,可以动态地部署和管理——而不是在一台大型单一用途机器上运行的单一堆栈。
资源隔离:可预测的应用性能。
资源利用:效率高,密度大。

为什么需要Kubernetes?

它能做什么容器是捆绑和运行应用程序的好方法。
在生产环境中,您需要管理运行应用程序的容器,并确保没有停机时间。例如,如果一个容器关闭,另一个容器需要启动。如果这种行为由系统来处理不是更容易吗?
库本内特斯就是这么来救援的!Kubernetes为您提供了一个灵活运行分布式系统的框架。它负责应用程序的扩展和故障转移,提供部署模式等等。例如,Kubernetes可以轻松地为您的系统管理金丝雀部署。

二、k8s的特性:

服务发现和负载平衡:Kubernetes可以使用DNS名称或自己的IP地址公开容器。如果一个容器的流量很高,Kubernetes能够负载平衡和分配网络流量,从而使部署稳定。
存储编排Kubernetes允许您自动安装您选择的存储系统,如本地存储、公共云提供商等。
自动展开和回滚:您可以使用Kubernetes描述部署的容器的期望状态,并且它可以以受控的速率将实际状态更改为期望状态。例如,您可以自动化Kubernetes来为您的部署创建新的容器,删除现有的容器,并将它们的所有资源应用到新的容器中。
自动装箱:您为Kubernetes提供了一个节点集群,它可以用来运行容器化的任务。你告诉Kubernetes每个容器需要多少CPU和内存(RAM)。Kubernetes可以将容器安装到您的节点上,以充分利用您的资源。
自愈Kubernetes重新启动失败的容器,替换容器,杀死不响应您的用户定义的健康检查的容器,并且直到它们准备好服务时才通知客户端。
秘密和配置管理Kubernetes允许您存储和管理敏感信息,如密码、OAuth令牌和SSH密钥。您可以部署和更新机密和应用程序配置,而无需重建容器映像,也无需在堆栈配置中公开机密。

三、k8s的架构与组件

单节点:
在这里插入图片描述
个人理解此图:· 这个图是一定要看懂的,,这是三个节点的,一个master节点。也叫单节点· 后面的两个node节点(也叫pod节点,也叫业务节点)提供相对应的服务,比如说相对应的网站服务,邮箱服务,APP服务· 客户端想要访问的化直接通过广域网当中的防火墙,通过防火墙连接里面当中的node节点,就能提供相对应的服务,当然在防火墙后面会做一个负载均衡。它是怎么访问里面多个容器的呢?· 你会发现容器container在里面,外面是pod,其实pod就是k8s的最小的管理单元,而且pod是容器的群集。但是生产环境中一个pod仅有一个容器。为了方便管理。。。当然你要是做容器的采集的时候会放两个,一个负载采集日志,一个负载提供业务。· kube-proxy:每个Node都需要一个kube-proxy守护进程,它能够按需为service生成iptables或ipvs规则,从而捕获访问当前service的cluster ip的流量并将其转发至正确的后端Pod对象。· kebe-proxy起的作用是反向代理,它是唯一的外面请求的入口,它处理完后,就会进行转发,转发给后面的一个或者多个pod去处理,处理完后再返回给它转发出去。在这里会做一个负载均衡看给上面或者下面的kebe-proxy。· kubelet:kubelet是运行与Node上面的守护进程,他从API server接收关于Pod对象的配置信息并确保它们处于期望的状态,kubellet会在API server上注册当前工作节点,定期向master汇报资源使用情况,并通过cAdvisor监控头容器和节点资源使用情况。kubelet会去watch kube-apiserver,如果发现有新任务的调度结果分到了自己这个Node节点上,便会接过来执行此任务。完成后将结果汇报给kube-apiserver。· kubelet它是有一个线连接到master的API server。可以把它想成是公公。它是master在node上面的代理,叫指令代理,master会委托kubelet在node上执行。。常出现的问题是你在master上看不到后年的业务信息。原因常常因为网络,还有一个就是kubelet挂掉了,但是一般它不会出现问题。因为,当node节点想加入进群的时候,会先生成一个证书,交给master,master运行你node加入群集的时候会给你一个授权,所以说kubelet挂掉了你首先要去检查证书,看证书有没有过期,有没有进行什么串改。它运行之前还会依赖一个东西叫kube-conig,kube-config包含着证书,环境也要找他实现。你这所有东西准备全了。交个master审核,完后master会给一个颁发一个证书。所有要检查它,也要看看日志的情况。· master要是挂了,就麻烦了,要重新打服务的。所有生产环境中是三个master的。三副本机制。· kube-controller:控制器。就好比人类的大脑一样,负责维护集群的状态、故障检测与恢复、自动扩展、节点状态等等。kube-controller有一个control loop的机制,它会循环检测集群中Pod的状态,假如Nginx启的不是预期的80端口,那就由kube-controller来控制容器重启、重建,直到达到预期效果为止。· kubectl它是k8s的命令,无论是字符界面还是图形化的,它是执行认为给它下达的命令,请求。· Auth是授权,你发的指令不是任何用户都能执行的,它进行进行权限验证的。· API server是控制k8s的唯一访问入口,大小所有事必须将事传给它,它会把信息存储到Etcd中,Etcd是数据库。因为只有他才有权限去往数据库记录数据。,其他的做完事情后要交给它,请求他记录到数据库。接下来看跟着它混的两个小弟。· 首先看controller-manager也叫控制器,决定着你创建资源的类型,你是有转态还是无状态化,你是一次性的还是周期性计划任务。无状态化就是只管数量,不管主从,如不能少于三个,它会自动修复的。有状态化,如mysql它的主就不能随意替换的,有自己的角色。· 另一只是scheduler,中文是调度器,当你想创建的资源的时候,比如说创建一个容器的时候请求先发给kubectl然后进行身份验证Auth然后找APIserver 它会先看你创建的是什么类型的,如有无状态化,,定义好后看资源创建在哪里。。。这个时候scheduler就会去算,它会算在资源创建的位置,是在node1还是node2上,然后交个API server去决定创建在哪里、(那一个资源空缺可以去创建)Etch不见得非要放在master上也可放在node上,,生产环境一般放在master上。
在这里插入图片描述

四、k8s的核心概念:

pod

最小部署单元
一组容器的集合
一个pod中的容器共享网络命名空间
pod是短暂的

Controllers

Replicaset:确保预期的pod副本数量
Deployment:无状态应用部署
StatefulSet :有状态的应用部署
SaemonSet:确保所有Node运行同一个Pod
Job:一次性任务
Cronjob:定时任务
更高级层次和对象,部署和管理Pod

Service

防止Pod失联
定义一组pod的访问策略

Label

标签,附加在某资源上,用于关联对象,查询和筛选

Namespaces

命名空间,将对象逻辑上隔离

Annotation

注释

云计算

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值