【K8s笔记】0.11版本
部分K8s笔记
参考链接
笔记1
kubernetes架构及组件详细介绍 - Shirley的文章 - 知乎
https://zhuanlan.zhihu.com/p/669267473
常用网站
https://json2yaml.com/convert-yaml-to-json
https://jimmysong.io/book/kubernetes-handbook/architecture/perspective/
阿里云文档:https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/product-overview/common-scenarios?spm=a2c4g.11186623.0.0.60b74ffdiS3ovz
常用命令
kubectl explain pod
kubectl explain pod.metadata
实验环境搭建
准备软件,如果需要软件包,可以留言,我到时候发给诸位老铁
VMware player、centos8、mobaxterm 多窗口终端
配置
步骤1:打开VMware,导入centos iso镜像。启动一个正常的虚拟机master,然后克隆master出来做2个node节点。
步骤2: 配置静态ip地址
2.1 配置网络情况
查看VMware网关
可以参考下面图式改一下配置,
3、配置终端
同样也是一样的操作,配置一个master,然后duplicate两个副本出来,在修改。
Minkube搭建
minikube 官网:https://minikube.sigs.k8s.io/docs/start/?arch=%2Flinux%2Fx86-64%2Fstable%2Fbinary+download
准备一台物理机:安装 docker
执行命令:
第3章 资源管理
k8s中所有的内容都抽象为资源。用户通过操作资源来管理k8s
pod里面跑容器,容器里面跑程序
yaml 语言
语法规则:大小写敏感、缩进左对齐、#
表示注释
yaml 支持的数据类型
布尔类型:true|True
整型:123
浮点型:3.14
日期类型:yyyy-mm-dd
字符串
对象: 常规形式 和 用大括号包裹
数组: 使用 - 方式
例如
adress:
- a
- b
资源管理方式
1、命令式对象管理
kubectl 是 k8s集群的命令行工具,对集群本身进行管理,并能够在集群上进行容器话应用的安装部署。
kubectl [command] [type] [name] [flag]
kuberctl --help 对资源操作的命令;
2、命令式对象配置,通过命令配置和配置文件去操作kubernets资源
kubectl create、patch -f nginx-pod.yaml
3、声明式对象配置
kubectl apply -f xx.yaml
kubectl apply -f xx.yaml
kubectl 是否可以在node节点使用命令?
kubectl 运行时根据配置文件来的 有个kube文件,如果要在node上使用命令操作k8s,就要复制该文件
第4章 实战入门
基础术语 | 说明 |
---|---|
Namespace | 资源隔离 |
Pod | K8s管理的基础单元 |
Label | 标签选择机制 |
Deployment | 管理Pod |
Service | 通过标签跟选择器 |
4.1 namespace
4.2 pod
4.3 Label
添加选择标识。
标签的特点:
- 以key/value 的形式附加到各种对象上,如 node、pod、service
- 资源对象可以定义任意数量的label,同一个label也可以被添加到任意数量的资源对象上
- label通常在资源对象时确定
标签选择器:
- 基于等式的label select
- 基于集合的label selector
4.4 Deployment
在k8s中,pod是最小的控制单元。一般都是通过Pod控制器来完成的。Pod控制器用于pod的管理,确保pod资源符合预期的状态,当pod的资源出现故障时,会尝试进行重启或重建pod。
k8s中pod的控制的种类有多种形式,其中一种就是deployment
4.5 Service
pod 重新创建,Pod的ip是虚拟的,所以会变化;
Service 可以看作是一组同类 Pod 对外的访问接口,借助service,应用可以方便地实现服务发现和负责均衡
请求先到Servcie,然后转发到后面的pod;
Service的IP永远不会变的
第5章 Pod详解
Pod的结构:包含一个或者多个容器,分为两类
- 用户程序所在的容器,数量可多可少
- Pause容器,每个Pod都会有的一个根容器,它的作用有两个(1)可以以它作为依据,评估整个Pod的健康状态(2)可以在根容器上设置IP。 Pod之间的往来通信是通过虚拟二层网络技术来实现的;
在kubernetes中基本所有资源的一级属性都是一样的,主要包含5部分:
- apiVersion 版本,由kubernetes内部定义,版本号必须可以用kubectl api-versions 查询到
- kind 类型,由kubernetes内部定义,版本号必须可以用 kubectl api-resources 查询到
- metadata 元数据,主要是资源标识和说明,常用的有name、namespace、labels等
- spec 描述,这是配置中最重要的一部分,里面是对各种资源配置的详细描述
- status 状态信息,里面的内容不需要定义,由kubernetes自动生成
Spec常见的属性
pod 的配置
基本配置、镜像拉去、启动命令、环境变量、端口配置、资源配额
kubectl explain pod.spec.containers 属性是pod配置中关键的一项指标
kubectl describe pod [pod名称] -n [namespace名称]
imagePullPolicy 镜像拉取容器
- 容器端口
一个物理机跑多个pod、pod里面有多个容器
访问容器中的容器需要用的podId:容器的端口
vim pod-ports.yaml
kubectl create -f pod-ports.yaml
kubernets 提供了对内存和cpu资源进行配额的机制。这种机制主要通过resources选项实现,有两个字段设置
limits:设置运行时容器的最大占用资源,超过limits时容器被终止,并进行重启;
requests:设置容器最小资源,如果环境资源不够,容器无法启动
pod 生命周期
- pod 创建和终止
- 运行初始化容器(init container)过程。在主容器运行前初始化
- 运行主容器
- 容器启动后钩子,终止前的钩子
- 容器的存活性探测(liveness probe)、就绪性探测(readiness probe)
- pod终止过程
Pod 生命周期出现5种相位 - 挂起(pending):apiserver已经创建pod资源,但它尚未被调度完成或仍然处于下载镜像过程中
- 运行成功:pod已经被调度到某节点,并且所有的容器都已经被kubelet创建完成
- 成功(Succeeded):所有容器都已经成功终止并且不会被重启
- 失败(Failed):所有容器都已经终止,但至少有一个容器终止失败。
- 未知(Unkonwn)
创建pod过程
终止pod过程
初始化容器
初始化容器是在pod的主容器之前要运行的容器,主要做一些主容器的前置工作。
钩子函数
钩子函数能够感知自身生命周期中的事件,并在相应的时刻到来时运行用户指定的程序代码kubernetes在主容器的启动之后和停止之前提供了两个钩子函数:
post start:容器创建之后执行,如果失败了会重启容器
pre stop :容器终止之前执行,执行完成之后容器将成功终止,在其完成之前会阻塞删除容器的操作
钩子函数 Exec命令,在容器内执行一次命令
容器探测:找到出了问题的pod,然后移除
liveness 探针决定是否重启容器,readiness probes决定是否转发流量到容器中
两种探针目前均支持三种探测方式
更多推荐
所有评论(0)