kubernetes 的入门介绍

云原生OS,分布式操作系统:运行多台主机之上;
Pod:动态性:;编排运行应用的最小逻辑单元;
容器级:一个或多个具有“超亲密”关系的容器的集合;
共享:
名称空间:Network,UTS,IPC;
Volume:;
底层基础设施:Pause容器;

资源池:  
	1 计算资源:CPU,Memory 
	2 存储资源:Volume 
	3 网络资源:
		a.Pod ---->Pod :东西向流量  
		b.集群外的进程(最终用户) --->Pod:南北向流量;
		c.Service: 
			固定入口,
			服务发现:label selector
			负载均衡:ipvs 或iptables
			Service名称:
				svc_name.NAMESPACE.svc.domain.ltd
					A,AAAA:	fqdb ---> ip
					PTR:IP ---> fqdn
					SVC:port
			ClusterDNS:CoreDNS
				为Service自动维护的动态DNS
    
    
  核心工作逻辑:
	声明式API:终态声明,期望状态(Spectification,简称为spec)
	控制器:Controller ,reconcilation loop,谐调循环;
		实际状态:status
			diff:status---> Spec(控制器控制转化)
	
	应用编排控制器:
		无状态应用:Deployment
			PodTemplate:Pod模板
				核心:
					要运行容器的列表;
					便签(label)
			replicas:副本数,实例数
			label selector:标签选择器
			发布:内置的发布策略,pod一个版本到一个版本,以滚动的方式发布,滚动的力度,一个实例,还是多个(只需要拉取的镜像)
			
		系统级应用:DaemonSet
		有状态应用:StatefulSet(有特有的属性,不可以轻易所替代)
		作业:	
			一次性作业:Job
			周期性作业:CronJob
			
	编排运行一个应用的核心过程:
		1、应用编排控制器资源对象
		2、提供固定的访问入口、及负载均衡
		3、提供应用配置
		
		Nginx Service ---> Nginx Pod(Controller) --> Volume (ConfidMap、Secret) ---> PHP-FPM(业务)Pod(Controller)---> Volume(ConfigMap、Secret) ---> MySQL Servcie ---> Mysql Pod (Controller)
                    
             管理应用的逻辑:
		基于资源的API编写资源配置文件,定义该资源类型下的对象
		提交给API Server(下面由k8s操作)
		
	Kubernetes系统组件:
		分布式:运行于多个主机
		多个主机分两类:
			Master:决策和控制中心
				1、kube-apiserver:API 网关,无状态
				2、etcd:状态存储(kv)
				3、kube-controller-manager:控制器管理器
				4、kube-scheduler:调度器,负责调度未完成绑定的Pod
					调度:将Pod与某个Node建立了绑定关系
				
			Worker:执行组件
				1、kubelet:Pod生命周期管理;
					a.CRI:对接外部的容器运行时,(cri-dockerd,docker-ce 、containerd、cri-o)
					b.CNI:对接外部的虚拟(容器)网络;(flannel 、calico、cilium(eBPF))
						① Underlay
						② Overlay
					c.CSI:对接外部的共享存储服务,nfs-csi-driver(NFS)、Ceph...
				2、kube-proxy:Service功能在节点级的落地(实现),具体来说,就是把Service的定义转换为节点上的iptables或ipvs规则

                          Master高可用:
			每个组件独立实现其自向的高可用机制
				1、etcd:分布式高一致性kv存储,raft协议(也有选举)
					奇数各节点:357
				2、apiserver:无状态,2+
					应该为其提供负载均衡
					https协议,而且客户端与apiserver需要之际建立tls会话,LB通常要做tcp级的负负载均衡   四层;
				3、controller-manager:选举出一个primary节点,余下的Secondary;
					leader election(抢占式-独占)
				4、scheduler;选举出一个Primary节点,余下的Secondary
			
			部署方式:
				1、etcd独立部署
					etcd:3节点集群
					master:2+节点集群
				2、etcd与master的各组件部署在一起:堆叠式,3节点
					每个节点都部分etcd,master组件

部署形式

	单Master集群:
		Master:
		Worker:
			CRI:cri-dockerd,docker-ce
			CNI:flannel
		
		#认证凭据
		kubectl: $HOME/.kube/config
		
		
	$集群的三个网络:
		1、节点网络:管理员
			节点来源:
				自主服务器:自管理网络
				IaaS云:托管
		2、Service网络:Kubernetes
			10.96.0.0/12
				可用Service IP:2^20-2
		3、Pod网络:CNi网络插件
			不同的网络插件有不同的默认配置
				Calico:192.168.0.0/16
					再次划分为多子网,每个节点使用一个子网,默认使用26位掩码
						子网数量:2^10
						每个子网内的IP量:2^6-2
				Flannel:10.244.0.0/16
					再次划分多子网,每个节点使用一个子网,默认使用24位掩码
             Bootstrap:发生集群初始化
    	首次认证:Bootstrap token
    	随后认证:都基于由Kubernetes CA签发的证书
    		鉴权:主体,是基于客户端证书的Subject(CN,O,City,Sate,C)
    		
    	kubectl:需要提供认证凭据
    		$HOME/.kube/config			$
    			kubeconfig
   		API Server为kubelet签发的证书的有效期只有一年;
   			注意:在证书到期之前进行续签;
posted @   e-huo  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示