
一、K8s 中枢宗旨(逐一拆解,从基础到中枢)先明确一个前提:K8s 的中枢地点是「自动化连续容器化愚弄」,通盘宗旨齐是围绕这个地点谋略的。咱们从最基础的“集群”启动,逐一教悔。
C 1. 集群(Cluster)这是 K8s 的“根基”,亦然最基础的宗旨。集群是由一组节点(Node)构成的聚集,用于斡旋运行容器化愚弄 ,不错把它结实为一个“大机房”,里面有好多台做事器(节点),通盘容器化愚弄齐运行在这个“大机房”里。
一个完好的 K8s 集群分为两个中枢部分,统筹兼顾:
甩手平面(Control Plane):尽头于“大机房的中控室”,矜重连续和出动通盘集群,决定哪个容器跑在哪个节点上、监控容器情状、处理故障等,是集群的“大脑”。责任节点(Worker Node):尽头于“大机房 #后端 #Kubernetes里的做事器”,是实验运行容器的地方,继承中控室的指示,实施容器的创建、启动、罢手等操作。补充:K8s 集群不支援单点运行(分娩环境),甩手平面时常会部署多个节点,幸免单点故障;责任节点不错字据业务需求横向彭胀,节点越多,能运行的容器就越多。
2. 节点(Node)节点是集群的“最小硬件单位”,实验上是一台物理机(做事器)或编造机,是容器运行的载体。不管是甩手平面节点已经责任节点,齐需要装配 K8s 的中枢组件,智商加入集群。
责任节点上必须装配的3个中枢组件(重心):
Kubelet:节点的“代理东说念主”,矜重和甩手平面通讯,继承甩手平面的指示(比如“启动一个容器”),同期监控容器和节点的情状,把情状上报给甩手平面,确保容器按照要求运行。容器运行时(Container Runtime):用于运行容器的软件,尽头于“容器的发动机”,K8s支援多种容器运行时,比如Docker、containerd等(当今主流是containerd,Docker已冉冉被淘汰)。Kube-proxy:节点的“汇注代理”,矜重处理节点上的汇注通讯,已矣Pod之间、Pod与外部的汇注互通,同期提供恣意的负载平衡功能。恣意说:节点是“容器的宿主”,莫得节点,容器就莫得运行的地方;而 Kubelet、容器运行时、Kube-proxy,是节点能“干活”的必备器用。
3. Pod这是 K8s 中「最小的可部署、可连续单位」,亦然生手最容易污染的宗旨—— Pod 不是容器,而是容器的“包装器”,一个 Pod 不错包含一个或多个细致有关的容器 。
举个例子:一个 Web 愚弄,需要一个运行 Web 做事的容器,还需要一个运行日记汇集的容器,这两个容器必须细致互助(日记汇集容器要汇集 Web 容器的日记),就不错把它们打包在合并个 Pod 里。
Pod 的中枢脾性(必记):
分享资源:合并个Pod里的通盘容器,分享合并个汇注定名空间(即合并个IP地址)和存储卷,容器之间不错通过localhost成功通讯,无需零散成立汇注。人命周期片时:Pod是“一次性”的,一朝被删除、故障或节点宕机,Pod会成功灭绝,不会自动复原(需要借助甩手器连续)。不可成功扩容:不成成功给一个Pod加多副本,要扩容只可通过甩手器创建多个通常的Pod。补充:K8s 中,通盘容器齐必须运行在 Pod 里,莫得“脱离 Pod 的容器”——这是 K8s 的中枢谋略原则之一。
C 4. 甩手器(Controller)前边说过,Pod 的人命周期很片时,一朝故障就会灭绝,而甩手器的作用即是「保险 Pod 的运功绩态相宜预期」,尽头于 Pod 的“管家”,自动处理 Pod 的创建、删除、扩容、故障复原等操作。
K8s 有多种甩手器,重心掌执4种最常用的(生手必懂),逐一讲明:
(1)Deployment:最常用的无情状甩手器用于连续「无情状愚弄」(比如 Web 做事、API 接口),是生手最常使用的甩手器,中枢功能是:
确保指定数目的Pod副本运行(比如指定3个副本,甩手器会自动保管3个Pod,少了就补,多了就删);支援出动更新(比如升级愚弄版块时,先启动新Pod,再删除旧Pod,不中断做事);支援回滚(淌若升级失败,能快速回滚到上一个踏实版块)。示例:通过 Deployment 创建3个 Web 做事 Pod,即使其中1个 Pod 故障,甩手器会自动再创建1个,确保经久有3个 Pod 在运行。
(2)StatefulSet:有情状愚弄甩手器用于连续「有情状愚弄」(比如数据库、Redis 集群、ZooKeeper),这类愚弄的脾性是:需要固定的汇注象征(IP、主机名)、固定的存储(数据不成丢失)、有序的启动/罢手。
StatefulSet 的中枢上风:给每个 Pod 分派固定的称呼和汇注象征,即使 Pod 重建,称呼和 IP 也不会变;同期绑定固定的存储卷,确保数据不丢失。
夺目:无情状愚弄和有情状愚弄的中枢区别——无情状愚弄不需要保存数据,多个 Pod 统斡旋致,不错缓慢替换;有情状愚弄需要保存数据,每个 Pod 有我方的独有象征,不成缓慢替换。
(3)DaemonSet:全局督察甩手器中枢功能:确保集群中的每个节点(或相宜要求的节点)上,齐运行一个通常的 Pod 副本 ,常用于部署“集群级别的大众做事”。
常用场景:日记汇集(比如 Fluentd、Logstash)、监控代理(比如 Prometheus Node Exporter)、汇注插件(比如 Calico)——这些做事需要在每个节点上齐运行,智商隐私通盘集群。
(4)Job/CronJob:任务类甩手器用于运行「一次性任务」或「定时任务」,区别于前边的“经久运行做事”:
Job:一次性任务,比如数据备份、批量处理(比如批量导入数据),任求实施完成后,Pod会自动停止,不会赓续运行;CronJob:定时任务,类似Linux的crontab,比如每天凌晨3点实施数据备份,按照指定的时候周期类似实施任务。C 5. 做事(Service)前边说过,Pod 的人命周期片时,一朝重建,IP 地址会发生变化——淌若其他 Pod 需要造访这个 Pod,IP 变了就无法通讯,Service 即是为了措置这个问题而谋略的。
恣意说:Service 是 Pod 的“固定造访进口”,它界说了一组 Pod 的逻辑聚集,为这组 Pod 提供一个固定的 IP 地址和造访端口 ,不管 Pod 何如重建、IP 何如变化,其他 Pod 或外部做事,齐不错通过 Service 的固定地址造访到地点 Pod。
Service 的中枢旨趣:通过“标签选定器”(Label Selector)匹配 Pod,唯一 Pod 的标签和 Service 的标签一致,就会被纳入 Service 的连续限制;当 Pod 的 IP 变化时,Service 会自动更新里面的 Pod 列表,确保造访不中断。
生手必懂的4种 Service 类型:
ClusterIP(默许):只可在集群里面造访,外部无法造访,适书册群里面Pod之间的通讯(比如Web Pod造访数据库Pod);NodePort:在每个节点上绽开一个固定端口,外部不错通过“节点IP+节点端口”造访Service,稳健测试环境(比如土产货调试);LoadBalancer:适用于云环境(比如阿里云、腾讯云),会自动创建云厂商的负载平衡器,外部通过负载平衡器的IP造访Service,稳健分娩环境;ExternalName:将Service映射到外部域名(比如映射到www.baidu.com),适书册群里面Pod造访外部做事。6. 标签(Label)与标签选定器(Label Selector)这是 K8s 中「用于分组和筛选资源」的中枢计制,尽头于给资源(Pod、Service、Deployment 等)贴“标签”,再通过“标签选定器”筛选出需要的资源。
举个例子:给3个 Web Pod 贴上标签「app: web」,尊龙国际官方网站给2个数据库 Pod 贴上标签「app: db」;然后创建一个 Service,通过标签选定器「app: web」,就能精确匹配到3个 Web Pod,已矣对 Web Pod 的斡旋造访。
中枢脾性:
标签是键值对(比如app: web、env: test、version: v1),不错缓慢界说,活泼分组;一个资源不错贴多个标签,一个标签选定器不错匹配多个标签;K8s的好多中枢功能齐依赖标签选定器(比如Service匹配Pod、Deployment连续Pod)。7. 存储卷(Volume)容器的存储是“临时的”——淌若容器被删除,容器内的数据会丢失(比如数据库容器,删除后数据就没了),Volume 即是为了措置「容器数据持久化」而谋略的。
恣意说:Volume 是一个“分享存储目次”,不错挂载到 Pod 的容器中,容器不错读写这个目次里的数据,即使容器被删除,Volume 里的数据也不会丢失 (Volume 的人命周期和 Pod 无关,由 K8s 斡旋连续)。
生手常用的2种 Volume 类型:
EmptyDir:临时存储,和Pod的人命周期一致,Pod删除,EmptyDir里的数据也会删除,稳健临时缓存数据(比如容器之间分享临时文献);PersistentVolume(PV)+ PersistentVolumeClaim(PVC):持久化存储,PV是集群级别的存储资源(比如云盘、土产货磁盘),PVC是Pod对存储资源的“苦求”——Pod通过PVC苦求存储,PVC绑定PV,已矣数据持久化(稳健数据库、Redis等需要保存数据的愚弄)。C 8. 定名空间(Namespace)用于「隔断集群资源」,尽头于给集群永别“不同的房间”,每个房间里有我方的 Pod、Service、Deployment 等资源,房间之间的资源互相隔断,不会互相影响。
中枢作用:措置多团队、多环境的资源隔断问题——比如开荒环境、测试环境、分娩环境,分别创建不同的定名空间(dev、test、prod),每个环境的资源放在对应的定名空间里,幸免开荒环境的 Pod 影响分娩环境。
补充:K8s 默许有3个定名空间:default(默许定名空间,未指定定名空间的资源齐会放在这里)、kube-system(K8s 中枢组件所在的定名空间)、kube-public(大众资源定名空间)。
C 9. 成立与密钥(ConfigMap、Secret)用于连续 Pod 的成立信息,幸免把成立硬编码到容器镜像中(比如数据库地址、端口、密钥等),方便成立的修改和连续。
两者的区别(重心):
ConfigMap:用于存储「非明锐成立」,比如数据库地址、端口、愚弄的成立参数(比如日记级别),数据以明文面目存储;Secret:用于存储「明锐成立」,比如数据库密码、API密钥、文凭等,数据会进行Base64编码(夺目:Base64是编码,不是加密,分娩环境需要互助加密插件使用)。使用花样:将 ConfigMap/Secret 挂载到 Pod 的容器中,容器不错成功读取里面的成立,修改 ConfigMap/Secret 后,Pod 无需重启(部分场景需要重启)就能加载新成立。
二、K8s 常用器用(生手必备,普及恶果)掌执了中枢宗旨后,光靠呐喊行操作 K8s 会很繁琐,底下先容几款生手必备的常用器用,隐私“集群部署、正常操作、可视化、监控”等场景,帮你快速上手 K8s。
C 1. kubectl:K8s 呐喊行器用(必备)这是 K8s 的官方呐喊行器用,是操作 K8s 集群的“全能器用”,通盘集群操作齐不错通过 kubectl 呐喊完成(比如创建 Pod、稽查 Pod 情状、删除 Service 等)。
生手必记的常用呐喊(高频):
kubectl get pods:稽查现时定名空间的通盘Pod情状;kubectl get services:稽查现时定名空间的通盘Service;kubectl get deployment:稽查现时定名空间的通盘Deployment;kubectl create -f xxx.yaml:通过yaml文献创建资源(Pod、Service等);kubectl apply -f xxx.yaml:创建或更新资源(保举使用,比create更活泼);kubectl delete pod :删除指定Pod;kubectl logs :稽查Pod的日记(排查故障常用);kubectl exec -it -- /bin/bash:投入Pod的容器里面(调试常用)。补充:kubectl 的成立文献默许在~/.kube/config,里面存储了集群的造访地址、文凭等信息,唯一成立好这个文献,就能通过 kubectl 操作良友集群。
2. Minikube:土产货K8s集群器用(生手初学首选)关于生手而言,搭建一个真正的 K8s 集群(多节点)比拟复杂,而 Minikube 不错在土产货快速搭建一个「单节点的 K8s 集群」,用于学习、测试 K8s 功能,无需复杂成立。
中枢脾性:
轻量:占用资源少,支援Windows、Mac、Linux系统;方便:一键启动、罢手、删除集群,比如minikube start就能启动集群;功能完好:支援K8s的通盘中枢功能,能模拟真正集群的大部分场景。使用场景:生手学习 K8s 宗旨、测试 yaml 成立文献、调试恣意的容器化愚弄。
3. Helm:K8s 包连续器用(简化部署)K8s 中,部署一个愚弄时常需要创建多个资源(Pod、Service、Deployment、ConfigMap 等),每个资源齐需要写 yaml 文献,操作繁琐。Helm 的作用即是「将多个资源打包成一个“包”(Chart)」,一键部署、升级、回滚愚弄,尽头于 K8s 的“yum”或“npm”。
中枢上风:
简化部署:一个Chart包含通盘愚弄所需的资源,一键部署(helm install);版块连续:支援Chart的版块甩手,升级、回滚愚弄只需指定版块;分享复用:社区有无数现成的Chart(比如MySQL、Redis、Nginx),不错成功下载使用,无需我方写yaml。常用呐喊:helm install(部署愚弄)、helm upgrade(升级愚弄)、helm rollback(回滚愚弄)、helm repo add(添加 Chart 仓库)。
4. Dashboard:K8s 可视化连续器用(直不雅)kubectl 呐喊行操作不够直不雅,而 Dashboard 是 K8s 的官方可视化器用,通过 Web 界面不错直不雅地稽查集群资源(Pod、Service、Deployment 等)的情状,还能通过界面创建、删除、剪辑资源,稳健生手快速了解集群情状。
中枢功能:
稽查集群通盘资源的情状(运功绩态、资源占用等);通过界面创建Pod、Service、Deployment等资源;稽查Pod日记、投入容器里面、实施呐喊;连续定名空间、成立、密钥等资源。补充:Dashboard 默许不合外披露,需要通过 kubectl port-forward 呐喊转发端口,智商造访 Web 界面。
5. 其他常用器用(按需选定)kube-ps1:K8s呐喊行教导符器用,能在结尾骄矜现时所在的K8s集群和定名空间,幸免操作错集群;k9s:结尾版的K8s可视化器用,比kubectl更直不雅,操作更方便,稳健习气结尾操作的开荒者;Prometheus + Grafana:K8s监控器用,Prometheus汇集集群和愚弄的监控数据,Grafana可视化监控宗旨(比如CPU、内存占用、Pod运功绩态),分娩环境必备;Kompose:Docker Compose转K8s器用,淌若你习气用Docker Compose部署愚弄,不错通过Kompose将docker-compose.yml文献出动成K8s的yaml文献,快速挪动到K8s集群。三、生手避坑指南(重心提醒)不要污染Pod和容器:Pod是容器的包装器,一个Pod不错有多个容器,容器不成脱离Pod运行;不要成功操作Pod:分娩环境中,不要成功创建、删除Pod,要通过Deployment、StatefulSet等甩手器连续Pod,不然Pod故障后无法自动复原;标签和标签选定器要对应:Service要通过标签选定器匹配Pod,淌若标签不匹配,Service无法造访到Pod;区分无情状和有情状愚弄:无情状愚弄用Deployment,有情状愚弄用StatefulSet,不要用错甩手器;生手先从Minikube开端:不要一启动就搭建多节点集群,先用Minikube练习宗旨和操作,再冉冉过渡到真正集群。四、转头K8s 的中枢宗旨看似紊乱,但唯一收拢“自动化连续容器”这个中枢地点,逐一拆解、结实每个宗旨的作用和互助干系,就能快速成立学问框架——从集群、节点,到 Pod、甩手器、Service,再到标签、存储、成立,每个宗旨齐有其明确的用途,丝丝入扣。
而常用器用则是普及恶果的要津:kubectl 是基础,Minikube 稳健初学,Helm 简化部署,Dashboard 直不雅可视化,按需选定器用,能让你的 K8s 操作更高效。
关于生手而言,提议先通过 Minikube 搭建土产货集群,连续 kubectl 呐喊,亲手操作每个宗旨(比如创建 Pod、部署 Deployment、成立 Service),再尝试用 Helm 部署一个恣意的愚弄,冉冉蓄积实战申饬。
终末尊龙国际官方网站,以为本文对你有匡助的话,接待点赞、储藏、转发,你的支援是我更新的能源!
亚搏体育中国一站式服务官网