CKAD备战笔记(1)- 核心概念介绍介绍

本文介绍了CKAD(Certified Kubernetes Application Developer)考试的基本情况,深入讲解了k8s的基本概念,如容器、Pod、节点、Master与Worker Node的区别,以及k8s的六大组件,包括API Server、ETCD Service、Kubelet Service、Container Runtime、Controllers和Scheduler。此外,还探讨了YAML在k8s中的应用、Replication Controller与Deployment的区别和作用,以及Namespace的管理和ResourceQuota的设置。文章最后提供了kubectl命令的实用整理和DNS工作原理的简单说明。
摘要由CSDN通过智能技术生成

1. 考试形式

  • 远程,详细要求可以在官网上找到
  • 考试时可用的资源:k8s官方文档

2. 基本概念

  • 容器(container):包含了App,和运行App所需的所有配置与环境。比起虚拟机(VM)来更高效,更灵活
  • Pod:是k8s中的最小单位,Pod中的内容分享了同样的网络(Network)和存储(Storage)。Pod封装了一个或多个container(如果是多个container,那么大概率这些container包含了不同的App,比如一个前端App,一个数据库App)。
    ⚠️ Pod常被用于扩大应用的规模,假设你的App访问人数在某个节假日激增,那我们就新建一个pod,然后把同样的App部署到新建的pod上;同样的,Pod也可以被用于降低App的规模
  • 节点(node):安装了k8s的机器,Pod就是在node上跑的。(节点出问题被自动关闭的时候,其上面的容器中的App自然也会被关闭,所以一般我们会多节点运行
    • 工作节点(worker node):真正存放容器,干活的节点
    • master节点(master node):监视集群中的worker nodes,并负责对worker nodes上的容器进行实际编排。一个cluster中可以有一个或者多个master nodes
  • 集群(cluster):由一群nodes组成

请添加图片描述

Master node VS Worker node

Master node Worker node
Server kube-apiserver服务 kubelet agent代理 kube-apiserverkubelet agent之间有相互的沟通,比如kubelet提供worker node是否健康的信息,kube-apiserverkubelet发送任务信息等等。所有信息都存储在master node上的etcd数据库中
ETCD
Controller
Scheduler

3. k8s的六大组件

当你安装k8s时,你实际上安装了以下组件:

(1) API Server

相当于k8s的前端,所有的users,devices,CLIs都通过API Server与k8s集群进行沟通。

(2) ETCD Service

一个存储键值对(key-value) 的数据库,用于实现node的锁,以防止冲突的产生。

(3) Kubelet Service

是在cluster中每个node上运行的代理(agent)。负责确保按预期在节点上运行。

(4) Container Runtime

是用于运行容器的底层软件。通常这个软件是 Docker,但也有其他容器技术。

(5) Controllers

控制器(Controllers)负责编排(orchestration)。负责在node、container或endpoint出现故障时进行通知和响应。(比如,在特定情况下,Controller会决定启动新容器)。在k8s中有多个Controllers,每个负责不同的工作。

(6) Scheduler

负责nodes之间的工作分配和调度。如果有新建的container,Scheduler会将container分配给node

4. k8s中的YAML

YAML基本介绍见3分钟看懂YAML。k8s中,我们可以选择用kubectl命令行工具来部署应用,也可以用YAML文件定义”如何部署应用“,然后再一次性将YAML文件执行到k8s集群上。相比kubectl,使用YAML的优点有:

  • Devops as code:可以用git对YAML进行版本控制,像写软件代码一样写devops的部署,且多个程序猿可同时进行协作,不会出现信息不同步的问题
  • Single source of truth:所有和devops相关的信息都可以查看对应的YAML文件
  • 容易debug
  • 容易进行项目重建:假设你要把现有的部署挪到另一个云供应商平台上去,只需要在部署一遍YAML文件即可

在k8s中的YAML文件都默认应该有四个属性

  • apiVersion:版本,可以是v1或者apps/v1
  • kind:资源种类,可以是Pod,Service,ReplicaSet或Deployment等
  • metadata :该资源的元数据,包括name,labels等字典类型数据,不允许其他键的存在
  • spec:配置信息,每个资源应有的spec都不一样

以下是一个Pod的YAML文件的例子:

# pod-definition.yml
apiVersion: v1 	
kind: Pod		
metadata:		
	name: myapp-pod
	labels:		# ‼️在`lables`中,你可以定义任意到键值对,以帮助你之后快速地找到相关资源
		app: myapp 	
		type: frontend
		author: chuuuing
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值