一文详解k8s体系架构知识

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.参考资料

相关推荐
代码小学僧几秒前
使用 Cloudflare workers 做一个定时发送消息的飞书机器人
前端·云原生·serverless
niesiyuan0008 分钟前
MAC如何安装多版本jdk(以8,11,17为例)
java
brzhang21 分钟前
代码Review老被怼?这10个编程好习惯,让你写出同事都点赞的好代码!
前端·后端·架构
zcyf080922 分钟前
kafka理论学习汇总
java·分布式·学习·kafka
再拼一次吧39 分钟前
Spring进阶篇
java·后端·spring
brzhang41 分钟前
告别 CURD,走向架构:一份帮你打通任督二脉的知识地图
前端·后端·架构
爱编程的小庄44 分钟前
Maven 4.0.0 模式-pom.xml配置详解
xml·java·maven
黄雪超1 小时前
JVM——引入
java·jvm
wkj0011 小时前
java 和 C#操作数据库对比
java·数据库·c#
brzhang1 小时前
代码越写越乱?掌握这 5 种架构模式,小白也能搭出清晰系统!
前端·后端·架构