一文详解k8s体系架构知识

发布于:2025-03-30 ⋅ 阅读:(14) ⋅ 点赞:(0)

0.云原生

在这里插入图片描述

1.k8s概念

在这里插入图片描述
在这里插入图片描述

1. k8s集群的两种管理角色

  1. Master:集群控制节点,负责具体命令的执行过程。master节点通常会占用一股独立的服务器(高可用部署建议用3台服务器),是整个集群的首脑。

    Master节点一组关键进程:kubernetes API Servier(kubeapiserver)
    kubernetes controller Manager(kube-controller-mannager)
    kuberntes Scheduler(kube-scheduler)

  2. Node:是k8s的工作负载节点
    ​ Node节点一组关键进程:kubelet(负责pod对应的容器的创建、启动等任务)
    kube-proxy(负责k8s service的通信与负载均衡机制)
    docker-engine(Docker引擎,负责本机的容器的创建、管理工作)

2.k8s基本概念

在这里插入图片描述
pod:
在这里插入图片描述Replication Controller(RC):就是定义一个期望的场景,即声明一种pod的副本数量在任意时刻都符合一个预期值;
RC的定义包含如下部分:

  • pod期待的副本数(replicas);
  • 用于筛选目标Pod的label Selector;
  • 当pod的副本数量小于预期数量时,用于创建新pod的pod模板(template)

Deployment:解决pod的编排问题
Horizontal Pod autoscaler(HPA):通过追踪分析RC控制的所有目标Pod的负载变化情况,来确定是否需要针对性的调整目标pod的副本数

2.k8s 使用

1.k8s安装

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.k8s命令行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
k8s常用命令:

对象管理

#创建deployment资源
kubectl create -f nginx-deployment.yaml

#查看deployment
kubectl get deploy

#查看ReplicaSet
kubectl get rs

#查看pods所有标签
kubectl get pods --show-labels

#根据标签查看pods
kubectl get pods -l app-nginx

#滚动更新镜像
kubectl set image deployment/nginx-deployment nginx-nginx:1.11
或者
kubectl edit deployment/nginx-deployment
或者
kubectl apply f nginx deployment.yaml

#实时观察发布状态:
kubectl rollout status deployment/nginx-deployment

#查看deploymnet 历史修订版本
kubectl rollout history deployment/nginx-deployment
kubectl rollout history deployment/nginx deploymnet rcvison=3

#滚动到以前版本
kubectl rollout undo deployment/nginx-deployment
kubectl rollout undo deployment/nginx-deployment --to-reverison=3

#扩展deployment的pod副本数量
kubectl scale deployment nginx deployment replicas=10

#设置启动扩展/缩容
kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu-percent=80

#查看日志
kubectl logs -l app=nginx -f

#删除服务
kubectl delete -f nginx-deployment.yaml
kubectl delete -f nginx-service.yaml

#查看service endpoint后面节点
kubectl get ep nginx-service

pod管理,增删该查

#创建pod资源
kubectl create -f pod.yaml

#查看pods
kubectl get pods pod-test

#查看pod描述
kubectl describe pod pod-test

#替换资源
kubectl replace -f pod.yaml -force

#删除资源
kubeclt delete pod pod-test
kubectl get all

#查看启动实时日志
kubecl logs po/pod-test -f

#进入pod中容器
kubeclt exec pod-test -it bash

#查看容器中变量
echo $Test

#退出容器
exit

#查看pod详情
kubeclt describe pod-test
kubectl get pods -o wide

#查看k8s字段描述资源
kubectl explain pods.spec.containers

#访问页面
curl -I 192.164.11:80/index.html

kubectl get pods -n xx命名空间

Kubectl logs -f 服务实例id -n xx命名空

minikube get-k8s-versions: 查看k8s最新版本
minikube dashboard
minikube status

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.k8s网络在这里插入图片描述在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.k8s负载均衡

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.k8s存储

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

持久化存储:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

6.k8s集群安全机制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.heml使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.k8s监控

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.k8s部署java项目

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

10.k8s常见知识点

1.静态pod与普通pod的区别?
静态Pod: 是直接在Kubernetes集群的某个节点上运行,而不是通过Kubernetes的API服务器进行管理的;这些Pod不是由Kubernetes的控制器(如Deployment、StatefulSet等)管理的,而是通过节点上的特定配置文件直接创建的。
动态Pod: 是通过Kubernetes API服务器管理的,它们由控制器(如Deployment、StatefulSet等)动态创建和管理的。这些Pods的生命周期、扩展和故障恢复都是自动管理的;

需要直接与节点交互或在集群初始化阶段快速部署Pods,使用静态Pod可能更合适。
如果需要自动化管理、高可用性和易于扩展的特性,使用动态Pod(通过控制器管理) 更合适。

2.Node与Node,Pod与Node之间的通信?
Node与Node之间通过容器网络插件flannel实现;

Pod与Node之间通信:
同一 Node 上的 Pod:可以直接通过 IP 地址或 DNS 名称进行通信
不同 Node 上的 Pod:通过 Kubernetes service或 Ingress 进行通信

3.pod的创建?

  1. 用户提交Pod定义‌:用户到API Server
  2. 认证与鉴权(Authentication & Authorization)
    当执行kubectl apply -f pod.yaml时,请求首先到达API Server
  3. Kube-Scheduler调用资源,选择适合的节点运行pod
  4. 持久化存储(etcd写入)
    API Server将Pod配置写入etcd集群,此时Pod处于Pending状态

4.docker /containerd /CRI区别?
docker: 是一个完整的容器管理平台,提供镜像构建、容器运行、网络管理、存储卷等全生命周期功能。它包含 Docker CLI(用户交互工具)、Docker Daemon(守护进程)等组件,底层依赖 Containerd 作为运行时
containerd: 是轻量级容器运行时,专注于容器的生命周期管理(创建、启动、监控、销毁)和镜像传输/存储。作为 Docker 的底层组件,Containerd 独立于 Docker,通过 CRI 直接与 Kubernetes 集成,无需额外适配层
CRI: 是 Kubernetes 定义的接口规范​(基于 gRPC),用于标准化容器运行时与 Kubelet 的交互。CRI 不直接管理容器,而是为 Kubernetes 提供统一的容器操作接口,支持多种运行时(如 Containerd、CRI-O)

5.k8s使用的网络是什么?flannel

3. k8s yaml编写工具

  1. https://k8syaml.com/
  2. idea k8s插件,效果如下:
    在这里插入图片描述
  3. k8s提供了在线动态模版,常见的预定义配置模版如下:
    • kcm :ConfigMap

    • kdep:Deployment

    • kpod:Pod

    • kres:Generic resource

  4. idea k8s插件使用参考连接:
    https://juejin.cn/post/7122400716110430245
    https://blog.csdn.net/J080624/article/details/14346370

4.heml包管理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.k8s与rancher架构方案:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6. 生产就绪的检查清单

在这里插入图片描述

7.参考资料

  • https://www.w3cschool.cn/kubernetes/
  • KubeSphere 容器管理平台:https://kubesphere.io/zh/
  • rancher容器管理平台:https://www.rancher.cn/quick-start/
  • portainer :容器管理工具 https://github.com/portainer/portainer
  • MinIO:对象存储库,兼容aws s3云存储服务 https://github.com/minio/minio
  • 日志分析软件splunk:https://www.aizws.net/course/splunk/splunk-index#article_content
  • k8s playground: killercoda.com
  • https://www.yuque.com/leifengyang/oncloud