当前位置: 首页 > article >正文

kubernets基础入门

        首先通过Kubernets架构图来认识Kubernets各个功能组件之间是怎么相互关联配合工作的。

一、Kubernets架构图:

通过上图来介绍集群功能组件通信详细过程:

     kubernetes api server 作为集群的核心,负责集群各功能模块之间的通信。集群内的各个功能模块通过API SERVER 将信息存入到etcd数据库中,同样想要获取和操作这些数据时,也是通过API SERVER的REST接口(GET、LIST、WATCH)来实现,从而实现各模块之间的交互。

  1. kubelet --> api server 如上图每个node节点每隔一个时间周期,就会调用一次API SERVER的REST接口来报告自身的状态,API SERVER 接收到这些信息之后,将节点信息更新到etcd数据库中。并且kubelet 还通过API SERVER 的WATCH接口监听Pod信息,如果监听到新的Pod副本被调用绑定到本节点,则执行pod对应的容器的创建与启动;如果监听到Pod的删除操作,则删除本节点相应的Pod容器;如果检测到修改操作,则kubelet会相应的修改本节点的Pod的容器。

  2. kube controller manager -- > api server 如上图 kube controller manager 中的node controller模块通过API SERVER模块提供的WATCH接口,实时监控node信息,并做相应的处理。

  3. schdeuler --> api server 当scheduler 通过api server 的WATCH接口监听到新建Pod副本的信息后,它会检索所有符合该Pod要求的node列表,开始执行Pod调度逻辑,调度成功后将Pod绑定到目标节点上。

 主节点主要包含以下组件:

        kubectl 是一个客户端的管理工具,直接管理API server,提供一个请求到一个api server,中间有一个auth认证(判断是否有权限访问),api 将信息存储到etcd数据库中,然后scheduler和controller-manager做各自的事情。

  1. API Server(k8s 提供的整个集群统一入口,提供了http RESTFUl api 的方式)
  2. scheduler :做集群节点的调度(调度器,根据调度算法绑定到指定的node上)
  3. contorller-manager: 负责任务(控制器)(另外一种解释:维持副本期望数目)
  4. etcd:键值对数据库,存储k8s集群的所有重要信息(存储的是持久化的数据)

 Node节点包含以下组件:

  1. kubelet:直接跟docker(容器引擎)进行交互实现容器的生命周期管理。
  2. kube-proxy:负责写入规则至iptables,IPVS实现服务映射访问。

 还有其他可添加组件说明:

  1. CoreDNS:可以为集群中的SVC创建一个域名ip的对应关系解析。(实现负载均衡的其中一项功能)
  2. Dashboard:给k8s集群提供一个B/S结构访问体系。
  3. ingress controller:官方只能提供四层代理,ingress提供七层代理。
  4. Federation:可以提供一个跨集群多k8s的统一管理功能。
  5. Prometheus:提供一个k8s集群监控平台。
  6. ELK:提供k8s一个日志分析平台。

 二、资源管理方式

2.1概述

1.命令式对象管理:直接通过命令的方式去操作kuberntes的资源

kubectl run nginx-pod --image=nginx:1.17.1 --port=80

2.命令式对象配置:通过命令配置和配置文件去操作 Kubernetes 的资源。

kubectl create/patch/delete -f nginx-pod.yaml

3.声明式对象配置:通过 apply 命令和配置文件去操作 Kubernetes 的资源。

kubectl apply -f nginx-pod.yaml

2.2命令式对象管理

2.2.1 kubectl 命令

  • kubectl 是 Kubernetes 集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署。
  • kubectl 命令的语法如下: 
kubectl [command] [type] [name] [flags]
参数:
command:指定要对资源执行的操作,如:create、get 、delete 等。
type:指定资源的类型,如:deployment 、pod 、service 等。
name:指定资源的名称,名称大小写敏感。
flags:指定额外的可选参数。

2.2.2 常用命令

1.基本命令

命令翻译命令作用
create创建创建一个资源
edit编译编辑一个资源        
get获取获取一个资源
patch更新更新一个资源
delete删除删除一个资源
explain解释展示资源信息

2.运行与调试

命令翻译命令作用
run运行在集群中运行一个指定镜像
expose暴露暴露资源为Service
describe    描述显示内部资源详细信息
logs日志输入容器在Pod的日志
attach缠绕进入运行中的容器
exec执行执行容器中的一个命令
cp复制在Pod内外复制文件
rollout首次展示管理资源的发布
scale规模扩缩容Pod的数量
autoscale自动调整自动调整Pod的数量

3.高级命令

命令翻译命令作用
apply应用通过对文件对资源进行配置
label标签更新资源上的标签

4.其他命令

命令翻译命令作用
cluster-info        集群信息显示集群信息       
version版本显示当前Client与Server的版本

2.2.3资源类型

  Kubernetes 中所有的内容都抽象为资源,可以通过下面的命令进行查看:

kubectl api-resources

经常使用资源类型:

资源名称缩写资源作用
nodesno集群组成部分
namespacesns隔离Pod
Podspo加载容器
replicationcontrollersrc控制Pod资源控制器
replicasetsrs控制Pod资源控制器
deploymentsdeploy控制Pod资源控制器
daemonsetsds控制Pod资源控制器
jobs控制Pod资源控制器
cronjobscj控制Pod资源控制器
horizontalpodautoscalershpa控制Pod资源控制器
statefulsetssts控制Pod资源控制器
servicessvc统一Pod对外接口
ingressing统一Pod对外接口
persistentvolumeclaimspvc存储
persistentvolumespv存储
volumeattachments 存储
configmapscm配置
secrets配置

2.3 命令式对象配置

命令式对象配置就是通过命令配置和配置文件去操作 Kubernetes 的资源。

命令式对象配置的方式操作资源,可以简单的认为:命令 + yaml 配置文件(里面是命令需要的各种参数)。

比如创建一个nginx-pod.yaml文件,如下:

apiVersion: v1
kind: Namespace
metadata:
  name: dev
---
apiVersion: v1
kind: Pod
metadata:
  name: nginxpod
  namespace: dev
spec:
  containers:
    - name: nginx-containers
      image: nginx:1.17.1
  • 执行 create 命令,创建资源:
kubectl create -f nginxpod.yaml
  • 执行 get 命令,查看资源:
kubectl get -f nginxpod.yaml

  • 执行 delete 命令,删除资源:
kubectl delete -f nginxpod.yaml

2.4 声明式对象配置

声明式对象配置:通过 apply 命令和配置文件去操作 Kubernetes 的资源。

声明式对象配置和命令式对象配置类似,只不过它只有一个 apply 命令。

apply 命令相当于 create 命令和 patch 命令。

比如创建一个nginx-pod.yaml文件,如下:

apiVersion: v1
kind: Namespace
metadata:
  name: dev
---
apiVersion: v1
kind: Pod
metadata:
  name: nginxpod
  namespace: dev
spec:
  containers:
    - name: nginx-containers
      image: nginx:1.17.1
  • 执行 apply 命令:
kubectl apply -f nginxpod.yaml

2.5 总结

创建和更新资源使用声明式对象配置:kubectl apply -f xxx.yaml。

删除资源使用命令式对象配置:kubectl delete -f xxx.yaml。

查询资源使用命令式对象管理:kubectl get(describe) 资源名称。


http://www.kler.cn/a/467131.html

相关文章:

  • CSS 之 position 定位属性详解
  • 2025 年前端新技术如何塑造未来开发生态?
  • 外网访问本地部署的 VMware ESXi 服务
  • Leetcode打卡:设计一个ATM机器
  • spring mvc源码学习笔记之六
  • 在Linux中,如何查看和修改网络接口配置?
  • 基于STM32的热带鱼缸控制系统的设计
  • 大模型数据采集和预处理:把所有数据格式,word、excel、ppt、jpg、pdf、表格等转为数据
  • 高清监控视频的管理与展示:从摄像头到平台的联接过程
  • 呼叫中心中间件实现IVR进入排队,判断排队超时播放提示音
  • Git快速入门(一)·Git软件的安装以及GitHubDesktop客户端的安装
  • 装饰器模式详解
  • clickhouse Cannot execute replicated DDL query, maximum retries exceeded报错解决
  • Android 14.0 系统限制上网系列之iptables用IOemNetd实现app上网黑名单的实现
  • 行为模式4.观察者模式------消息推送
  • LangChain+博查搜索API轻松实现实时信息搜索
  • 【每日学点鸿蒙知识】ASON工具、自定义tabbar、musl、Text异常截断等
  • 【C语言】可移植性陷阱与缺陷(五): 移位运算符
  • 初学stm32 --- 存储器类型
  • 文献阅读 250104-Overconfidence in climate overshoot
  • 文件上传漏洞利用与绕过姿势总结
  • 【大模型】ChatGPT 数据分析与处理使用详解
  • SQL 基础教程 - SQL SELECT 语句
  • 部署项目添加工程名的步骤
  • 哈希算法详解及案例应用
  • Jurgen提出的Highway Networks:LSTM时间维方法应用到深度维