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 集群所需的各种组件

相关推荐
B1nna2 小时前
Docker学习
学习·docker·容器
缘友一世2 小时前
网安系列【15】之Docker未授权访问漏洞
docker·容器
armcsdn13 小时前
基于Docker Compose部署Traccar容器与主机MySQL的完整指南
mysql·docker·容器
铅笔侠_小龙虾15 小时前
Docker 实战 -- Mysql
mysql·docker·容器
阿里云云原生16 小时前
Higress MCP 服务管理,助力构建私有 MCP 市场
云原生
IvanCodes16 小时前
三、Docker常用命令
docker·容器
zzywxc78717 小时前
云原生 Serverless 架构下的智能弹性伸缩与成本优化实践
云原生·架构·serverless
海星船长丶18 小时前
基于docker进行渗透测试环境的快速搭建(在ubantu中docker设置代理)
运维·docker·容器