Kubernetes笔记(1)Kubernetes入门

Kubernetes入门

  • 一、容器技术
  • 二、Kubernetes介绍
    • [1. Kubernetes核心资源](#1. Kubernetes核心资源)
    • [2. Kubernetes集群架构](#2. Kubernetes集群架构)
      • [2.1 Master](#2.1 Master)
      • [2.2 Node](#2.2 Node)

一、容器技术

随着技术发展,应用程序的部署经历了从物理机到虚拟机,再到容器的转变。

  • 物理机:物理机会运行多个程序,当一个程序占用大量资源时,会影响其他程序的性能和稳定性。
  • 虚拟机:物理机上可运行过个虚拟机,每个虚拟机有独立的操作系统和硬件资源,虚拟机之间完全隔离。不过虚拟机不够轻量级,还是太重了,而且一般镜像文件都很大,迁移不方便。
  • 容器:容器与宿主机共享内核,所以更加轻量级。容器的环境一致性和可移植性也更好些。最常用的容器技术是Docker,学习Kubernetes之前,一定先把常用的Docker命令学习实践下。

二、Kubernetes介绍

Docker非常适合单机管理多个容器,但生产环境中,为了高可用性和高并发,一个程序通常部署多个实例。在这种环境下,用Kubernetes更加合适,它提供了自动上线和回滚、容器自我修复、水平扩展、存储编排和配置管理等功能。

1. Kubernetes核心资源

Kubernetes中的基础概念和术语大多围绕资源来说的,它的资源类型很多,要入门需要先学习常见的资源:

  • Pod(容器组):Kubernetes中最小的部署单元,它可以包含一个或多个容器,它们之间可以共享网络和存储资源。每个节点的Pod数量不要超过110个。
  • Deployment(工作负载-部署):管理无状态应用程序的部署(如前端应用、API服务),Pod名称随机,重启后Pod名称会改变,Pod之间可互换。支持Pod多副本、滚动更新、副本数扩缩和回滚等功能,无顺序要求。
  • StatefulSet(工作负载-有状态集):管理有状态应用程序的部署(如 MySQL、Redis、Kafka),每个Pod有唯一标识(Pod名称有序,重启后Pod名称不变)、稳定的网络标识和独立的存储,并且是按照顺序创建、更新和删除Pod
  • Service(服务):定义一组Pod访问方式、通过负载均衡将请求转发到这些Pod上。
  • Namespace (命名空间):用于将集群资源划分为不同的逻辑组,提供资源隔离和多租户支持。
  • 存储和配置相关:如PersistentVolume PersistentVolumeClaim SecretConfigMap

Kubernetes中资源包括几个公共属性:版本(Version)、类别(Kind)、名称(Name)、标签、注解。

我们可以用YAMLJSON格式声明一个资源对象,每个资源对象都有自己特定的结构定义,比如Pod和Service的YAML文件的格式是不同的。定义好的资源对象会保存在etcd这非关系型数据库中,以便快速读写。

2. Kubernetes集群架构

K8s集群(Cluster)是由MasterNode组成的。

2.1 Master

Master节点负责管理和控制整个集群,相当于集群的大脑,在每个K8s集群中都需要一个或一组Master。在Master上运行一下关键进程:

  • kube-apiserver:提供RESTful API接口,是对资源进行增删改查的唯一入口,也是集群控制的入口
  • kube-controller-manager:所有资源对象的自动化控制中心,相当于"大总管"
  • kube-scheduler:负责资源调度(Pod调度)

2.2 Node

Node是工作节点,是真正干活的打工人。Master会把工作负载分配给Node,当某个Node宕机,其上的工作负载会被Master转移到其他Node上。在每个Node上运行着以下关键进程:

  • kubelet:负责Pod对应容器的创建、启停等任务,听Mater的指挥,实现集群管理的基本功能
  • kube-proxy:实现K8sService通信与负载均衡机制
  • 容器运行时(如Docker、Containerd):负责本机容器的创建和管理

Node可以在运行期间被动态添加到集群中,默认情况下,Nodekubelet会向Master注册自己,并定时向Master汇报自己情况(如CPU、内存使用)。如果超过指定时间不上报,会被Master判断为失联,Node状态标记为NotReady

bash 复制代码
查看集群有多少节点
kubectl get nodes

查看某个Node的信息
kubectl describe node <node_name>
相关推荐
En^_^Joy6 分钟前
Docker入门:快速安装与实战指南
运维·docker·容器
70asunflower8 分钟前
Docker 镜像的完整内容解析
运维·docker·容器
API开发12 分钟前
apiSQL网关 for Docker 离线安装和升级教程
运维·docker·容器·api·api网关·apisql·替代graphql
小钻风336626 分钟前
Docker入门基础知识(一)
运维·docker·容器
70asunflower29 分钟前
Docker Daemon(Docker 守护进程)完全解析
docker·容器·eureka
小钻风336640 分钟前
Docker入门基础知识(二)
运维·docker·容器
nix.gnehc1 小时前
深度解析K8s四大核心接口:CRI、CNI、CSI与OCI的设计精髓与实践逻辑
云原生·容器·kubernetes
回忆是昨天里的海1 小时前
k8s部署的微服务动态扩容
java·运维·kubernetes
victory04311 小时前
docker aertslab/pyscenic:0.12.1 拉取异常解决方案
docker·容器·eureka
没有bug.的程序员2 小时前
Docker 与 K8s 生产级实战:从镜像极致优化到集群自动化部署全流程
spring cloud·docker·kubernetes·自动化·k8s·镜像·集群自动化