Kubernetes介绍

Kubernetes详细教程(一):入门、架构及基本概念-CSDN博客
官方文档
• Kubernetes(简称k8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用。
• 它的核心功能包括自动化容器部署、负载均衡、自我修复、存储编排以及跨集群资源管理。
• 通过Kubernetes,企业能够高效管理大规模的容器化应用,确保应用的高可用性和弹性扩展。

简单来说,Kubernetes 是容器时代的 “操作系统”,让分布式应用的管理变得简单、高效、可靠。

核心功能

自动调度:将容器放到K8S集群的任意节点中,并根据容器需要和节点负载决定目标节点。
自动修复:当健康检查发现节点问题,系统会自动将节点上的资源进行转移,并恢复功能。
自动缩扩容:通过预定义负载指标,根据指标自动触发动态缩扩容行为。

基本架构

Kubernetes架构可简单分为主节点(Master)、从节点(Node)和数据库ETCD。
Master为控制节点,负责整个集群的管理控制
Node的作用是承接工作负载

在官方文档中,又将Kubernetes架构分为两大部分:控制平面(Control Plane)工作节点(Node)

1. 控制平面(管理集群的核心组件)

  • API Server:所有操作的统一入口(如部署应用、查询状态),接收并处理用户 / 组件的请求。
  • ETCD:集群的 “数据库”,存储集群的所有配置数据(如 Pod 定义、服务规则),保证数据一致性。
  • Scheduler:负责容器(Pod)的调度,根据节点资源(CPU、内存)、亲和性规则等选择最优节点运行容器。
  • Controller Manager:运行多种控制器进程(如 Deployment 控制器、Node 控制器),确保集群状态与期望状态一致(如维持 Pod 副本数)。
  • Cloud Controller Manager:对接云服务商 API(如 AWS、GCP),实现与云服务的集成(如负载均衡、存储卷创建)。

2. 节点(运行容器的工作节点)

每个节点是一台物理机或虚拟机,包含以下组件:

  • Kubelet:运行在每个节点上的代理,负责监控容器状态,确保容器按 Pod 定义运行。
  • Kube-proxy:节点网络代理,负责维护节点上的网络规则,实现 Service 的负载均衡和 Pod 间通信。
  • Runtime:负责运行容器的底层引擎(如 Docker、containerd、CRI-O 等,需兼容 CRI 接口)。

核心概念

  1. Pod: Kubernetes 管理的最小可部署单元。一个 Pod 包含一个或多个紧密耦合的容器(共享网络命名空间、存储卷)。通常,一个 Pod 只运行一个主应用容器和可能的辅助容器(如日志收集)。
  2. Deployment: 最常用的控制器对象,用于声明式地管理 Pod 的无状态应用。它负责创建、更新、回滚和确保指定数量的 Pod 副本始终运行。支持滚动更新。
  3. Service: 定义一组 Pod 的逻辑集合和访问它们的策略。为 Pod 提供稳定的网络端点(IP/DNS),实现负载均衡和服务发现。即使 Pod 的 IP 地址变化,Service 的访问点保持不变。
  4. ConfigMap & Secret: 用于将配置数据和敏感信息(分别)与容器镜像解耦,便于配置管理和安全。
  5. Volume: 为 Pod 中的容器提供持久化存储的能力,即使容器重启,数据也能保留。支持多种存储后端。
  6. Namespace: 用于在同一个物理集群中创建多个虚拟集群(逻辑分区),实现资源隔离(如为不同团队、项目或环境划分资源)。
  7. Ingress: 管理外部访问集群内服务的入口(通常是 HTTP/HTTPS),提供负载均衡、SSL 终止和基于名称的虚拟主机等功能。
  8. StatefulSet: 用于管理有状态应用(如数据库)的控制器,为每个 Pod 提供稳定的网络标识符和持久化存储。
  9. DaemonSet: 确保集群中所有(或部分)节点上都运行一个指定 Pod 的副本(常用于日志收集、监控代理等)。
  10. Job / CronJob: 用于运行一次性任务或定时任务。

与 Docker Compose 的对比

  • Docker Compose 适合单机或小规模容器编排(开发 / 测试场景),依赖手动管理。
  • Kubernetes 适合大规模、生产环境的容器集群管理,提供自动化、高可用、弹性伸缩等核心能力。

操作实践

1
2
3
4
5
6
docker image load -i /root/kuboard.tar
docker tag e6e4605073ba swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v4
yum install docker-compose

cd root/k8s/
docker-compose up -d

进入http://192.168.200.120:8018
用户名:admin
密码:Kuboard123

Kubernetes集群-导入集群
在终端执行命令cat /etc/kubernetes/admin.conf
将输出的信息复制到kubeconfig窗口
最后点击导入集群

kubernetes-集群信息查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
kubectl get pods # 查看所有 Pod

kubectl get deployments # 查看所有 Deployment

kubectl get services # 查看所有 Service

kubectl get pvc # 查看所有 PVC

kubectl get nodes # 查看所有 Node

kubectl get namespaces # 查看所有命名空间

kubectl get configmap <name> -o yaml # 查看 ConfigMap 内容

kubectl logs <pod-name>  # 查看 Pod 日志

kubernetes-资源创建命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 创建 Pod
kubectl create deployment my-pod --image=nginx

# 创建 Deployment
kubectl create deployment my-deployment --image=nginx --replicas=3

# 创建 Service
kubectl create service clusterip my-service --tcp=80:8080

# 创建 ConfigMap
kubectl create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2

# 创建 Secret
kubectl create secret generic my-secret --from-literal=username=admin --from-literal=password=secret

# 创建 Namespace
kubectl create namespace my-namespace