Kubernetes基本概念和术语 • 节点

本文介绍了Kubernetes集群中的Master节点和Node节点的角色与关键进程。Master节点负责集群管理和控制,包括API Server、Controller Manager和Scheduler。Node节点作为工作负载节点,由kubelet和kube-proxy管理容器和网络。当Node失联时,Master会自动调度工作负载。使用kubectl命令可以查看节点状态和资源详情。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Master

集群控制节点,负责整个集群的管理和控制;
通常占据一个独立服务器

关键进程有:

  • Kubernates API Server(kube-apiserver)

Kubernates 提供其所有资源增删改查等操作的唯一入口

  • Kubernates Controller Manager(kube-controller-manager)

Kubernates 里所有资源对象的自动化控制中心(大总管)

  • Kubernates Sheduler(kube-scheduler)

负责资源调度(Pod调度)的进程

Master节点上通常还需要部署 etcd 服务,因为Kubernates里的所有资源对象的数据都被保存在 etcd 中。

Node

作为Kubernate集群中的工作负载节点,每个Node都会被Master分配一些工作负载(Docker容器),当某个Node宕机时,其上的工作负载会被Master自动转移到其他节点上。

关键进程有:

  • kubelet: 负责Pod对应容器的创建、启停等任务,同时与Master密切协作,实现集群管理的基本功能。

  • kube-proxy: 实现Kubernates Service 的通信与负载均衡机制的重要组件。

  • Docker Engine(docker): Docker引擎,负责本机容器的创建和管理工作

在默认情况先,kubelet会向Master注册自己,这也是Kubernates推荐的Node管理方式。
一旦Node被纳入集群管理范围,kubelet进程就会定时向Master汇报自身情况,例如操作系统、Docker版本、机器的CPU和内存情况,以及当前有哪些Pod在运行等,这样Master就可以获得么个Node的资源使用情况,并实现高效均衡的资源调度策略
而某个Node在指定时间不上报信息时,会被Master判定为“失联”,Node的状态会被标记为不可用(Not Ready),随后Master会触发“工作负载大转移”的自动流程。

常用命令
  • kubectl get nodes 查看集群中有多少节点
[root@localhost ~]# kubectl get nodes
NAME        STATUS    AGE
127.0.0.1   Ready     179d
  • kubectl describe 查看某个资源的详细信息
[root@localhost ~]# kubectl describe node '127.0.0.1'
Name:			127.0.0.1
Role:			
Labels:			beta.kubernetes.io/arch=amd64
			beta.kubernetes.io/os=linux
			kubernetes.io/hostname=127.0.0.1
Taints:			<none>
CreationTimestamp:	Fri, 24 Jul 2020 16:37:17 +0800
Phase:			
Conditions:
  Type			Status	LastHeartbeatTime			LastTransitionTime	   Reason				Message
  ----			------	-----------------			------------------	   ------				-------
  OutOfDisk 		False 	Wed, 20 Jan 2021 22:06:12 +0800 	Tue, 22 Dec 2020 02:01:37 +0800 	KubeletHasSufficientDisk 	kubelet has sufficient disk space available
  MemoryPressure 	False 	Wed, 20 Jan 2021 22:06:12 +0800 	Fri, 24 Jul 2020 16:37:17 +0800 	KubeletHasSufficientMemory 	kubelet has sufficient memory available
  DiskPressure 		False 	Wed, 20 Jan 2021 22:06:12 +0800 	Fri, 24 Jul 2020 16:37:17 +0800 	KubeletHasNoDiskPressure 	kubelet has no disk pressure
  Ready 		True 	Wed, 20 Jan 2021 22:06:12 +0800 	Tue, 22 Dec 2020 02:01:37 +0800 	KubeletReady 			kubelet is posting ready status
Addresses:		127.0.0.1,127.0.0.1,127.0.0.1
Capacity:
 alpha.kubernetes.io/nvidia-gpu:	0
 cpu:					1
 memory:				1883496Ki
 pods:					110
Allocatable:
 alpha.kubernetes.io/nvidia-gpu:	0
 cpu:					1
 memory:				1883496Ki
 pods:					110
System Info:
 Machine ID:			f0f31005fb5a436d88e3c6cbf54e25aa
 System UUID:			90037F93-9513-42CA-BD56-CCDD743D4955
 Boot ID:			8e41ded5-6826-411e-ac68-4683e693148d
 Kernel Version:		3.10.0-693.2.2.el7.x86_64
 OS Image:			CentOS Linux 7 (Core)
 Operating System:		linux
 Architecture:			amd64
 Container Runtime Version:	docker://1.13.1
 Kubelet Version:		v1.5.2
 Kube-Proxy Version:		v1.5.2
ExternalID:			127.0.0.1
Non-terminated Pods:		(6 in total)
  Namespace			Name			CPU Requests	CPU Limits	Memory Requests	Memory Limits
  ---------			----			------------	----------	---------------	-------------
  default			mysql-k3kb8		0 (0%)		0 (0%)		0 (0%)	   0 (0%)
  default			myweb-76cct		0 (0%)		0 (0%)		0 (0%)	   0 (0%)
  default			myweb-7kt5x		0 (0%)		0 (0%)		0 (0%)	   0 (0%)
  default			myweb-fgvvw		0 (0%)		0 (0%)		0 (0%)	   0 (0%)
  default			myweb-mw9h4		0 (0%)		0 (0%)		0 (0%)	   0 (0%)
  default			myweb-qcq7v		0 (0%)		0 (0%)		0 (0%)	   0 (0%)
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.
  CPU Requests	CPU Limits	Memory Requests	Memory Limits
  ------------	----------	---------------	-------------
  0 (0%)	0 (0%)		0 (0%)		0 (0%)
No events.

<think>嗯,用户之前让我介绍Docker的所有知识点相关技术栈,现在又接着问Kubernetes的技术栈概念。看来用户是在系统地学习容器化技术,先了解Docker,再深入Kubernetes。用户可能已经有一定的Docker基础,现在想进一步掌握容器编排管理,特别是生产环境中的应用。 首先,我需要明确Kubernetes的核心概念技术栈。用户可能希望得到一个结构化的回答,像之前的Docker介绍一样,分点分步骤讲解。要注意用户之前提到的格式要求,比如行内数学表达式用$...$,独立公式用$$...$$,并且使用中文回答。 接下来,得考虑用户的需求层次。用户可能不仅仅是想要概念列表,而是理解Kubernetes的架构、组件、关键概念以及相关的工具生态。同时,用户可能对Kubernetes与Docker的关系,以及如何在实际中使用感兴趣。需要覆盖基础概念、核心组件、工作负载管理、网络存储、配置、安全、生态系统最佳实践等方面。 还要注意用户可能存在的潜在问题。例如,Kubernetes的复杂性可能让初学者感到困惑,所以需要用简洁明了的语言解释每个部分。另外,用户可能关心如何将现有的Docker容器迁移到Kubernetes,或者如何在开发生产环境中有效利用Kubernetes。因此,在回答中可以提到一些实际应用场景,比如CI/CD、微服务、多云部署等,帮助用户理解其实际价值。 在结构方面,应该按照从基础到高级的顺序,先介绍核心概念,再展开技术栈生态系统。同时,结合用户之前Docker的回答格式,使用类似的标题子标题,保持一致性,方便用户对比联系。例如,可以分成核心概念、架构组件、关键对象、网络与存储、配置管理、安全、生态系统、最佳实践等部分。 需要注意技术细节的准确性,比如Kubernetes的组件如API Server、etcd、Controller Manager等的功能,以及Pod、Deployment、Service等关键对象的作用。此外,网络模型中的CNI、Ingress,存储中的PVPVC,配置管理的ConfigMapSecret,都是需要详细解释的部分。 还要提到相关的工具生态系统,比如Helm用于包管理,PrometheusGrafana用于监控,Istio用于服务网格,以及CI/CD集成等。这些内容能够帮助用户了解整个Kubernetes生态的全貌,以及如何扩展增强集群功能。 最后,总结部分需要强调Kubernetes在容器编排中的核心地位,以及学习路径最佳实践的重要性。提醒用户注重实际操作,结合具体场景进行学习应用,比如通过Minikube或Kind进行实验,参与社区资源等。 需要检查是否符合之前的格式要求,确保所有行内代码术语使用正确的标记,比如使用$...$包裹行内术语,独立公式用$$...$$,虽然Kubernetes的介绍中可能数学公式较少,但技术术语代码块需要正确呈现。同时,保持语言口语化,避免生硬的技术术语堆砌,用自然的中文解释概念。 现在,整理以上思路,组织成一个结构清晰、分步骤的解答,涵盖用户需要的所有关键点,同时保持与之前Docker介绍一致的风格,帮助用户形成连贯的知识体系。</think>以下是Kubernetes(K8s)核心技术栈核心概念的体系化整理: --- ### 一、Kubernetes 核心架构 #### 1. **集群组成** - **控制平面(Control Plane)**: - **API Server**:集群操作的唯一入口,提供REST API(如`kubectl`交互)。 - **etcd**:分布式键值存储,保存集群状态(唯一有状态组件)。 - **Controller Manager**:执行控制器逻辑(如节点监控、副本数维护)。 - **Scheduler**:将Pod绑定到适合的节点(基于资源需求、亲性等)。 - **工作节点(Worker Node)**: - **kubelet**:节点代理,管理Pod生命周期。 - **kube-proxy**:实现Service网络通信(IPVS或iptables)。 - **容器运行时**:Docker、containerd等。 $$ \text{K8s集群} = \text{Control Plane} + \sum_{i=1}^{n} \text{Worker Node}_i $$ --- ### 二、核心概念与对象 #### 1. **Pod** - 最小调度单元:1个或多个容器共享网络/存储命名空间(通过`pause`容器实现)。 - 声明式配置:通过YAML文件定义(示例): ```yaml apiVersion: v1 kind: Pod metadata: name: nginx-pod spec: containers: - name: nginx image: nginx:1.21 ports: - containerPort: 80 ``` #### 2. **工作负载控制器** - **Deployment**:管理无状态应用(滚动更新、回滚)。 - **StatefulSet**:管理有状态应用(持久存储、有序部署)。 - **DaemonSet**:每个节点运行一个Pod(如日志收集Agent)。 - **Job/CronJob**:运行一次性任务或定时任务。 #### 3. **服务发现与网络** - **Service**:为一组Pod提供稳定访问端点(ClusterIP、NodePort、LoadBalancer)。 $$ \text{Service IP} \rightarrow \text{Endpoints(Pod IP列表)} $$ - **Ingress**:HTTP层路由(如Nginx Ingress Controller)。 - **DNS**:通过CoreDNS解析服务名称(如`my-svc.my-namespace.svc.cluster.local`)。 #### 4. **存储管理** - **PersistentVolume(PV)**:集群级存储资源(如NFS、云磁盘)。 - **PersistentVolumeClaim(PVC)**:用户对存储的请求(绑定PV)。 - **StorageClass**:动态按需创建PV(如AWS EBS)。 --- ### 三、核心技术栈 #### 1. **声明式API** - 通过YAML/JSON描述目标状态,K8s自动收敛到期望状态。 - 示例(Deployment): ```yaml apiVersion: apps/v1 kind: Deployment spec: replicas: 3 template: spec: containers: - name: web image: nginx:1.21 ``` #### 2. **调度机制** - **节点选择**:`nodeSelector`、`nodeAffinity`。 - **Pod亲性**:`podAffinity`/`podAntiAffinity`(同节点或分散部署)。 - **资源限制**:`requests``limits`定义CPU/内存配额。 #### 3. **自动扩缩容** - **HPA(Horizontal Pod Autoscaler)**:基于CPU/内存或自定义指标扩缩Pod数量。 $$ \text{目标副本数} = \left\lceil \frac{\text{当前指标值}}{\text{目标指标值}} \times \text{当前副本数} \right\rceil $$ - **VPA(Vertical Pod Autoscaler)**:调整Pod资源限制。 --- ### 四、生态系统与扩展 #### 1. **CNI(容器网络接口)** - 插件:Calico(网络策略)、Flannel(简单Overlay)、Cilium(eBPF高性能)。 #### 2. **监控与日志** - **Prometheus**:指标收集与告警。 - **Grafana**:可视化仪表盘。 - **EFK Stack**:Elasticsearch + Fluentd + Kibana(日志管理)。 #### 3. **服务网格** - **Istio**:流量管理、熔断、观测(基于Envoy代理)。 - **Linkerd**:轻量级Service Mesh。 #### 4. **包管理** - **Helm**:K8s应用包管理工具(通过`Chart`定义模板)。 ```bash $ helm install my-app ./my-chart ``` --- ### 五、安全机制 1. **RBAC(基于角色的访问控制)** - 定义`Role``RoleBinding`限制用户/服务账号权限。 2. **Secrets管理** - 加密存储敏感信息(如密码、令牌),通过卷挂载到Pod。 3. **Pod安全策略(PSP)** - 限制Pod权限(如禁止特权容器、限制文件系统挂载)。 --- ### 六、典型应用场景 1. **微服务架构** - 每个服务独立部署为Deployment,通过Service通信。 2. **CI/CD流水线** - Jenkins/GitLab Runner在K8s中动态创建构建Pod。 3. **多云与混合云** - 通过Kubernetes Federation管理跨云集群。 --- ### 七、学习与实践工具 1. **本地开发环境** - Minikube、Kind(Kubernetes in Docker)、Docker Desktop集成K8s。 2. **生产级工具** - kubeadm(集群部署)、kubespray(Ansible自动化部署)。 3. **调试命令** ```bash $ kubectl get pods -n my-namespace # 查看Pod状态 $ kubectl describe pod my-pod # 诊断Pod异常 $ kubectl logs -f my-pod # 实时查看日志 ``` --- ### 总结 Kubernetes是容器编排的事实标准,其技术栈涵盖**集群管理**、**声明式API**、**网络/存储抽象**、**自动化运维****丰富生态**。核心学习路径: 1. 掌握Pod/Deployment/Service等基础对象 2. 理解控制器模式与调度机制 3. 熟悉Helm、Ingress、PV/PVC等扩展组件 4. 结合监控、安全策略构建生产级集群
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值