kubernetes学习--入门

学习目标:

了解K8S的概念

学习内容:

  1. 查看K8S版本
    备注:输出的信息会显示client和server的版本信息,client代表kubectl版本信息,server代表的是master节点的k8s版本信息
[root@paas-core01 paas]# kubectl version
Client Version: version.Info{Major:"1", Minor:"19+", GitVersion:"v1.19.4-GDEKernel23.1.RC1B030", GitCommit:"4ff0491de737c7992ec6988057c0c6f267d15448", GitTreeState:"clean", BuildDate:"2022-07-27T02:36:20Z", GoVersion:"go1.17.8", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"19+", GitVersion:"v1.19.4-GDEKernel23.1.RC1B030", GitCommit:"4ff0491de737c7992ec6988057c0c6f267d15448", GitTreeState:"clean", BuildDate:"2022-07-27T02:36:20Z", GoVersion:"go1.17.8", Compiler:"gc", Platform:"linux/amd64"}
  1. K8S架构
    在这里插入图片描述

  2. 基础概念
    APISERVER:所有服务访问的统一入口
    CrontrollerManager:维持副本期望的数目
    Scheduler:负责介绍任务,选择合适的节点进行分配任务
    ETCD:将它定位为一个可信赖的分布式键值存储服务,它能够成为整个分布式集群存储一些关键数据,协助分布式集群的正常运转,存储K8S集群的所有重要信息(持久化)
    Kubelet:直接跟容器引擎交互实现容器的生命周期管理
    Kube proxy:负责写入规则至iptables、ipvs实现服务映射访问的
    Coredns:可以为集群中的SVC创建一个域名IP的对应关系解析
    Dashboard:给K8S集群提供一个B/S结构的访问体系
    Ingress controller:官方只能实现四层代理,ingress可以实现七层代理
    Fededation:提供一个可以跨集群中心多K8S统一管理功能
    PROMETHUS:提供一个K8S集群的监控能力
    ELK:提供k8s集群日志统一分析接入平台

  3. RC/RS/Deployment
    RC:用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的Pod来代替;而如果异常多出来的容器也会自动回收。
    备注:在新版本的kubernetes中建议使用RS来取代RC

RS:RS跟RC没有本质上的不同,只是名字不一样,并且RS支持集合式的selector

虽然RS可以独立使用,但一般还是建议使用Deployment来自动管理RS,这样就无需担心跟其他机制的不兼容问题(比如RS不支持rolling-update,但Deployment支持)如图:
在这里插入图片描述

  1. HPA(Horizontal Pod Autoscaling)水平Pod弹性伸缩
    HPA仅适用于Deployment和RS,在V1版本中仅支持根据pod的CPU利用率进行扩容,在v1alpha版本中,支持根据内存和用户自定义的metric扩容

  2. StatefulSet 有状态应用
    是为了解决有状态服务的问题(对应Deployment和RS是为无状态服务而设计),其应用场景包括:

  3. 稳定的持久化存储,即Pod重新调度后还是能访问到相同的持久化数据,即PVC实现

  4. 稳定的网络标志,即Pod重新调度后其Podname和Hostname不变,基于Headless Service(即没有Cluster IP的service)来实现

  5. 有序部署,有序扩展,即Pod是有顺序的,在部署或者扩展的时候要依据定义的顺序依次进行(即从0到N-1,在下一个Pod运行之前所有之前的Pod必须都是running和ready状态),基于init container来实现

  6. 有序收缩,有序删除(即从N-1到0)

5 -Daemonset

确保全部(或者一些)node上运行一个pod的副本,当有node加入集群时,也会为他们新增一个pod,当有node从集群中移除时,这些pod也会被回收,删除daemonset将会删除它创建的所有pod

使用Daemonset的一些典型用例:

  1. 运行集群存储daemon,例如在每个node上运行ceph,glusterd
  2. 在每个node上运行日志收集daemon
  3. 在每个node上运行监控daemon,例如prometheus

6、job
负责批处理任务,即仅执行一次的任务,他保证批处理任务的一个或多个pod成功结束
cron job 管理基于时间的job,即:

  • 在给定的时间内只运行一次
  • 周期性的在给定时间内执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值