前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >k8s 架构、基本概念及命令

k8s 架构、基本概念及命令

作者头像
小手冰凉
发布2020-08-20 16:40:57
7400
发布2020-08-20 16:40:57
举报
文章被收录于专栏:小手冰凉小手冰凉
k8s 架构、基本概念及命令
k8s 架构、基本概念及命令

上图各组件功能如下 kubectl: k8s是命令行端,用来发送客户的操作指令。

API server: 是k8s 集群的前端接口,各种客户端工具以及k8s的其他组件 可以通过它管理k8s集群的各种资源。它提供了HTTP/HTTPS RESTful API, 即K8S API.

Scheduler: 负责决定将Pod放在哪个Node上运行。在调度时,会充分考 虑集群的拓扑结构,当前各个节点的负载情况,以及应对高可用、性能、 数据亲和性和需求。

Controller Manager : 负责管理集群的各种资源,保证资源处于预期的 状态。它由多种Controller 组成,包括 Replication Controller、 Endpoints Controller、Namespace Controller、Serviceaccounts Controller等等。

Etcd: 负责保存k8s集群的配置信息和各种资源的状态信息。当数据发生变 化时,etcd会快速的通知k8s相关组件。第三方组件,它有可替换方案。 Consul、zookeeper

Pod:k8s集群的小组成单位。一个Pod内,可以运行一个或多个容器。 大多数情况下,一个Pod内只有一个Container容器。 Flannel: 是k8s集群网路方案,可以保证Pod的跨主机通信。第三方解决 方案,也有替换方案。 Kubelet: 它是Node的agent(代理),当Scheduler确定某个Node上运行 Pod之后,会将Pod的具体配置信息发送给该节点的kubelet,kubelet会根 据这些信息创建和运行容器,并向Master报告运行状态。 kube-proxy: 负责将访问service的TCP/UDP数据流转发到后端的容器。 如果有多个副本,kube-proxy会实现负载均衡。

举个栗子:

代码语言:javascript
复制
//创建一个deployment资源对象。Pod控制器。
 [root@master ~]# kubectl run test-web --image=httpd --replicas=2

分析各个组件的作用以及架构工作流程:

  1. kubectl发送部署请求到API server
  2. APIserver通知Controller Manager 创建一个Deployment资源。
  3. Scheduler执行调度任务,将两个副本Pod分发到node01和node02 上。
  4. node01和node02上的kubelet在各自节点上创建并运行Pod。 补充: 1.应用的配置和当前的状态信息保存在etcd中,执行kubectl get pod 时 API server 会从etcd中读取这些数据。 2.flannel会为每个Pod分配一个IP。但此时没有创建Service资源,目前 kube-proxy还没有参与进来。

K8s命令汇总

代码语言:javascript
复制
#查询相关命令
[root@master ~]# kubectl get nodes          #查看各节点的状态
[root@master ~]# kubectl api-versions      #查看API的所有版本
[root@master ~]# kubectl explain deployment.metadata    #查看Deployment资源对象对应的API版本
KIND:     Deployment
VERSION:  extensions/v1beta1
[root@master ~]# kubectl explain pod        #查看pod资源对象对应的api版本
KIND:     Pod
VERSION:  v1
[root@master ~]# kubectl get pod    #查询pod的简略信息
[root@master ~]# kubectl get pod -o wide    #查询pod的详细信息
[root@master ~]# kubectl explain service       #查看service资源对象对应的api版本
KIND:     Service
VERSION:  v1
[root@master ~]# kubectl get pod -n kube-system   #查询kube-system名称空间中的pod资源对象

#配置群集
[root@master ~]# kubectl  taint node master node-role.kubernetes.io/master-    
#设置master参加工作
[root@master ~]# kubectl taint node master node-role.kubernetes.io/master="":NoSchedule    #设置master不参加工作
[root@master ~]# kubectl label nodes node01 disktype=ssd  
#给节点node01打标签“disktype=ssd”(自定义的标签)
[root@master ~]# kubectl get nodes --show-labels     #查看nodes的标签
[root@master ~]# kubectl label nodes node01 disktype-   #删除ndoe01节点的“disktype”标签
[root@master ~]# kubectl apply -f nginx.yaml    #根据yaml文件运行资源
[root@master ~]# kubectl delete deployment test   #删除控制器test
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档