首页 > 其他分享 >如何快速入门k8s

如何快速入门k8s

时间:2022-11-10 16:02:53浏览次数:61  
标签:Node 容器 入门 Master 集群 Pod k8s 快速 节点

1 什么是k8s

Kubernetes也称为K8S,其中8是代表中间“ubernete”的8个字符,是Google在2014年开源的一个容器编排引擎,用于自动化容器化应用程序的部署、规划、扩展和管理,它将组成应用程序的容器分组为逻辑单元,以便于管理和发现,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并且高效,很多细节都不需要运维人员去进行复杂的手工配置和处理;


2 k8s能做什么

k8s可以更快的更新新版本,打包应用,更新的时候可以做到不用中断服务,服务器故障不用停机,从开发环境到测试环境到生产环境的迁移极其方便,一个配置文件搞定,一次生成image,到处运行。

通过Kubernetes你可以:

  • 快速部署应用
  • 快速扩展应用
  • 无缝对接新的应用功能
  • 节省资源,优化硬件资源的使用

3 学习k8s基础知识

3.1 k8s组成

从系统架构来看,k8s分为2种节点:

  • Master 控制节点,做为指挥官;
  • Node 工作节点,干活的

3.2 架构图

如何快速入门k8s_docker

3.2.1 Master节点

K8S中的Master是集群控制节点,负责整个集群的管理和控制

在Master上运行着以下关键进程:

  • kube-apiserver:提供了HTTP Rest接口的关键服务进程,是K8S里所有资源的增删改查等操作的唯一入口,也是集群控制的入口进程
  • kube-controller-manager:K8S里所有资源对象的自动化控制中心,集群内各种资源Controller的核心管理者,针对每一种资源都有相应的Controller,保证其下管理的每个Controller所对应的资源始终处于期望状态
  • kube-scheduler:负责资源调度(Pod调度)的进程,通过API Server的Watch接口监听新建Pod副本信息,并通过调度算法为该Pod选择一个最合适的Node
  • etcd:K8S里的所有资源对象以及状态的数据都被保存在etcd中
3.2.2 Node节点

Node是K8S集群中的工作负载节点,每个Node都会被Master分配一些工作负载,当某个Node宕机时,其上的工作负载会被Master自动转移到其他节点上

在每个Node上都运行着以下关键进程:

  • kubelet:负责Pod对应的容器的创建、启停等任务,同时与Master密切协作,实现集群管理的基本功能
  • kube-proxy:实现Kubernetes Service的通信与负载均衡机制的重要组件
  • Docker Engine:Docker引擎,负责本机的容器创建和管理工作

在默认情况下Kubelet会向Master注册自己,一旦Node被纳入集群管理范围,kubelet进程就会定时向Master汇报自身的信息(例如机器的CPU和内存情况以及有哪些Pod在运行等),这样Master就可以获知每个Node的资源使用情况,并实现高效均衡的资源调度策略。而某个Node在超过指定时间不上报信息时,会被Master判定为失败,Node的状态被标记为不可用,随后Master会触发工作负载转移的自动流程

3.3 Pod

  • POD是k8s的最小单位
  • POD的IP地址是随机的,删除POD会改变IP
  • POD都有一个根容器
  • 一个POD内可以由一个或多个容器组成
  • 一个POD内的容器共享根容器的网络命名空间
  • 一个POD内的网络地址由根容器提供

3.4 Controller

用来管理POD。控制器的种类有很多:

  • RC Replication Controller:控制POD有多个副本
  • RS ReplicaSet:RC控制的升级版
  • Deployment:推荐使用,功能更强大,包含了RS控制器
  • DaemonSet:保证所有的Node上有且只有一个Pod在运行
  • StatefulSet:有状态的应用,为Pod提供唯一的标识,它可以保证部署和scale的顺序

4.实战

4.1创建pod的过程

如何快速入门k8s_数据_02

  1. 用户提交创建Pod的请求,可以通过​​API​​ Server的REST API,也可用Kubectl命令行工具
  2. API Server处理用户请求,存储Pod数据到etcd
  3. Schedule通过和API Server的watch机制,查看到新的Pod,尝试为Pod绑定Node
  4. 过滤主机:调度器用一组规则过滤掉不符合要求的主机,比如Pod指定了所需要的资源,那么就要过滤掉资源不够的主机
  5. 主机打分:对第一步筛选出的符合要求的主机进行打分,在主机打分阶段,调度器会考虑一些整体优化策略,比如把一个Replication Controller的副本分布到不同的主机上,使用最低负载的主机等
  6. 选择主机:选择打分最高的主机,进行binding操作,结果存储到etcd中
  7. Kubelet根据调度结果执行Pod创建操作: 绑定成功后,会启动container,Scheduler会调用API在数据库etcd中创建一个bound pod对象,描述在一个工作节点上绑定运行的所有Pod信息。运行在每个工作节点上的Kubelet也会定期与etcd同步bound pod信息,一旦发现应该在该工作节点上运行的bound pod对象没有更新,则调用Docker API创建并启动Pod内的容器

在这期间,Control Manager同时会根据K8S的mainfiles文件执行RC Pod的数量来保证指定的Pod副本数。而其他的组件,比如Scheduler负责Pod绑定的调度,从而完成整个Pod的创建

5 kubelet、kubectl、kubeadm区别

5.1.kubelet

代理服务器,master派到node节点代表,管理本机容器

5.2.kubeadm

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。

5.3.kubectl

kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,
并能够在集群上进行容器化应用的安装和部署

6 k8s资源

6.1.名称空间级别(namespace)

工作负载型资源( workload):
Pod、 ReplicaSet、 Deployment、 StatefulSet、
DaemonSet、Job、CronJob( ReplicationController在v1.11版本被废弃)

服务发现及负载均衡型资源( ServiceDiscovery LoadBalance): Service、 Ingress

配置与存储型资源:
Volume(存储卷)、CSI(容器存储接口,可以扩展各种各样的第三方存储卷)
特殊类型的存储卷: ConfigMap(当配置中心来使用的资源类型)、
Secret(保存敏感数据) DownwardAPI(把外部环境中的信息输出给容器)

6.2.集群级资源:

Namespace、node、 Role ClusterRole、 RoleBinding、 ClusterRoleBinding
元数据型资源: HPA、 PodTemplate、 LimitRange


标签:Node,容器,入门,Master,集群,Pod,k8s,快速,节点
From: https://blog.51cto.com/u_12040959/5841808

相关文章

  • Zabbix技术分享——使用docker-compose快速部署zabbix监控系统
    前面文章有提到过使用docker来快速拉起一个zabbix监控系统(详见:如何使用docker快速部署一个zabbix监控系统),但是要一个个执行docker启动命令去将对应的容器启动。如果要配置......
  • k8s iptables 改造ipvs
    1.修改iptables为ipvs模式 ipvs采用的hash表,iptables采用一条条的规则列表。集群数量越多iptables规则就越多,而iptables规则是从上到下匹配,所以效率就越是低下......
  • vue入门知识总结
    1.插值表达式{{}}  2.指令    2.1v-if、v-else、v-show、v-else-if      v-if:在切换过程中条件块内的事件监听器和子组件适当地被销毁和重......
  • 使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(PV&PVC)
    使用Kubeadm部署Kubernetes(K8S)安装--持久化存储(NFS网络存储)NFS存在一个弊端,需要知道NFS服务器的地址,配在yaml中PV:持久化存储,对存储资源进行抽象,对外提供可......
  • 使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(NFS网络存储)
    使用Kubeadm部署Kubernetes(K8S)安装Volume是Pod中能够被多个容器访问的共享目录。Kubernetes的Volume定义在Pod上,它被一个Pod中的多个容器挂载到具体的......
  • 一文带你入门 Java 函数式编程
    Java在最开始是不支持函数式编程的,想来也好理解,因为在Java中类Class才是第一等公民,这就导致在Java中实现编程不是件那么容易的事儿,不过虽然难,但是结果我们也已经知道......
  • K8s系列---【打污点】
    1.污点语法kubectltaintnode[node]key=value[effect][effect]可取值:[NoSchedule|PreferNoSchedule|NoExecute]NoSchedule:一定不能被调度PreferNoSche......
  • k8s实战入门——Service
    Service通过Deployment来创建一组Pod来提供具有高可用性的服务。虽然每个Pod都会分配一个单独的PodIP,然而却存在如下两问题:-PodIP会随着Pod的重建产生变化-PodI......
  • 使用kubekey搭建k8s集群,一键安装!
    前言KubeKey是KubeSphere公司用go语言开发的一款云原生容器工具,使用KubeKe可以轻松、高效、灵活地单独或整体安装Kubernetes。安装准备主机名IP作用master1......
  • Kubernetes(k8s)部署Promehteus监控
    一、概述Prometheus是一个开源监控系统,生态包括了很多组件,它们中的一些是可选的:主服务PrometheusServer负责抓取和存储时间序列数据客户库负责检测应用程序代码支持......