k8s中的基础概念

k8s可以从硬件和软件两方面来理解:

硬件:

1、节点(Node):类似于手机、平板、电脑

2、集群(Cluster):多个节点组合到一起

3、持久卷(Persistent Volumes):类似于插入到集群中的外部硬盘

软件:

1、容器(Container)

2、Pod:k8s的基本计算单元。Kubernetes不直接运行容器,它将一个或多个容器封装到一个称为Pod的高级结构中。相同Pod中的任何容器都将共享相同的名称空间和本地网络

3、部署(Deployment):管理pod的抽象层。部署的主要目的是声明一个Pod应该同时运行多少个副本。当将部署添加到集群中时,它将自动地旋转加速所需的Pod数量,然后监视它们。如果一个Pod消失,部署将自动重新创建它。

使用部署,你不必手动处理Pod。你只需声明系统的期望状态,它将自动为你管理。

4、网关(Gateway):网关路由,外部由此来访问部署的应用程序

一、k8s的pod

1、获取所有的namespace

bash 复制代码
kubectl get namespaces
kubectl get pods --all-namespaces
kubectl get pods -A

2、部署nginx到项目(demo)中

bash 复制代码
kubectl run nginx --image=nginx --namespace=demo

3、通过label查询pods

官方标签label链接

bash 复制代码
kubectl get pods --namespace=demo -l "app=admin-service"

4、查看pod的日志

bash 复制代码
kubectl logs --namespace=demo -l "app=admin-service"

5、查看pods更多的详细信息

bash 复制代码
kubectl get pods --namespace=demo -l "app=admin-service" -o wide

6、pods相关的命令 官方pod命令链接

二、k8s的控制器

Kubernetes中内建了很多controller(控制器),这些相当于一个状态机,用来控制Pod的具体状态和行为

1、Deployment:适合无状态的服务部署,例如:admin-service

2、StatefullSet:适合有状态的服务部署,例如:MySQL

3、DaemonSet:一次部署,所有的node节点都会部署,例如一些典型的应用场景:

运行集群存储 daemon,例如:在每个Node上运行 glusterd、ceph

在每个Node上运行日志收集daemon,例如:fluentd、logstash

在每个Node上运行监控daemon,例如:"Prometheus Node Exporter

4、Job:一次性的执行任务,例如:数据库初始化

5、Cronjob:周期性的执行任务,例如:定时任务

1、deployment

a、副本 replicas 去设置启动多个少实例

b、spec:设置容器相关的信息:镜像,cpu设置多少,端囗映射、挂载

c、更新策略:

1)、我升级版本了。如果我停掉之前的版本,然后上线新的版本,有一段时间服务不可用

2)、滚动更新就可以不用停止服务

2、如何获取某个pod的deployment

bash 复制代码
kubectl get deployments --namespace=demo -l "app=admin-service" -o yaml > ./admin-service.yaml

3、deployment官方文档

三、k8s的service

service:负责多个 pod之间的负载均衡

1.编辑yaml

kubectl apply 应用yaml配置

2.列出service

bash 复制代码
kubectl get services --namespace=demo -l "app=admin-service-nodeport"

四、k8s的gateway

资源模型

网关 API 有三种稳定的 API:

  • **网关类:**定义一组具有通用配置并由控制器管理的网关 实现类。

  • **网关:**定义流量处理基础架构(例如云负载均衡器)的实例。

  • HTTPRoute: 定义特定于 HTTP 的规则,用于将流量从网关侦听器映射到 后端网络终结点的表示形式。这些节点通常表示为服务.

网关 API 被组织成不同的 API 类型,这些 API 类型具有相互依赖的关系来支持 组织以角色为导向的性质。一个 Gateway 对象只与一个 GatewayClass 相关联;GatewayClass 描述负责管理此类网关的网关控制器。 然后,将一个或多个路由类型(如 HTTPRoute)关联到网关。网关可以过滤可能附加到其监听的路由,从而形成一个带有路由的双向信任模型。

下图说明了三种稳定网关 API 类型的关系:

五、k8s的卷

常用的卷类型:

1、local

2、hostpath

3、cephfs

六、k8s集群架构组件

当你部署完 Kubernetes,便拥有了一个完整的集群。

一组工作机器,称为节点, 会运行容器化应用程序。每个集群至少有一个工作节点。

工作节点会托管 Pod,而 Pod 就是作为应用负载的组件。 控制平面管理集群中的工作节点和 Pod。 在生产环境中,控制平面通常跨多台计算机运行, 一个集群通常运行多个节点,提供容错性和高可用性。

下图是正常运行的 Kubernetes 集群所需的各种组件

相关推荐
我是唐青枫1 小时前
Docker diff 详解:看清容器里到底改了什么
docker·容器
A-刘晨阳2 小时前
K8s集群中的数据库新范式:KES-Operator解锁部署、扩缩容、备份全链路自动化
运维·数据库·云原生·kubernetes·自动化
江畔柳前堤2 小时前
云原生 × AI 全景图谱:从 Kubernetes 到 Agent 基础设施的一次认知跃迁
人工智能·分布式·gpt·云原生·kubernetes·原型模式·agi
天机玄正3 小时前
云运维高阶二:CLI 调用 API (白名单追随)
windows·云原生
jiao糖瓜子4 小时前
Docker 完全指南:从镜像容器到生产部署
docker·容器·eureka·镜像·仓库
Ningcode_cloud4 小时前
Kubernetes 弹性伸缩实验手册:从集群搭建到 HPA / VPA 自动扩缩容
云原生·k8s·prometheus
JavaPub-rodert4 小时前
Docker 容器启动了,不代表服务真的能用:Healthcheck 实战
运维·docker·容器
先吃饱再说5 小时前
别再手动敲三遍 docker run 了:学会使用 Docker Compose 多容器编排
docker·容器
玉&心6 小时前
安装Service Mesh(Istio)在dockers desktop的问题
云原生·istio·service_mesh
AgentMaster7 小时前
数据治理方案对比:开源自建 vs 商业平台 vs 云原生,三条技术路线的取舍与实践
云原生