关于本地持久化存储
用户希望 Kubernetes 能够直接使用宿主机上的本地磁盘目录,而不依赖于远程存储服务,来提供“持久化”的容器Volume
。
这样做的好处就是:由于这个Volume
直接使用的是本地磁盘,尤其是SSD
盘,它的读
写性能相比于大多数远程存储来说,要好得多。
API
对象定义:
1 | apiVersion: batch/v1 |
在这个模板中,我们定义了一个Ubuntu
镜像的容器,他运行计算π
的程序,所以,这是一个计算π
的容器。
创建成功后,查看一下这个Job
对象:
//TODO:
可以看到,在这个Job
对象创建后,它的Pod
模板被自动加上了一个controller-uid=<一个随机字符串>
这样的Label
。从而保证了Job
与它所管理的Pod
之间的匹配关系。
本文讲解Kubernetes
中第一个控制器模式的完整实现:Deployment
。它实现了Kubernetes
项目中非常重要的功能:Pod的水平扩展/收缩。
例如,如果你更新了Deployment
的Pod
模板,那么Deployment
就需要遵循一种叫作滚动更新rolling update的方式来升级现有容器。而这个能力的实现依赖Kubernetes
项目中一个非常重要的概念(API对象):ReplicaSet
。
一个ReplicaSet
对象是由副本数目的定义和一个Pod
模板组成的。
1 | apiVersion: v1 |
首先,我们以之前实践过的nginx-deployment.yaml
文件为例:
1 | apiVersion: apps/v1 |
这个Deployment
定义的编排动作是:请确保携带了app:nginx
标签的Pod
的个数永远等于spec.replicas
指定的个数-> 2。
这就意味着,如果在这个集群中,携带app:nginx
标签的Pod
个数大于等于2,就会有旧的Pod
被删除;反之就会有新的Pod
被创建。
那么,究竟是Kubernetes
项目的哪个组件在执行这些操作呢?——kube-controller-manager
组件。
本文将以创建一个nginx
的deployment
为例体验Kubernetes
的基础使用
Kubernetes
跟Docker
等很多项目最大的不同是:它不推荐你使用命令行方式的方式直接运行容器,而是希望你用YAML文件的方式,即把容器的定义、参数、配置都记录在一个YAML文件中,然后用
1 | # kubectl create -f test.yml |
运行起来。
这么做最直接的好处就是,会有一个文件记录下Kubernetes
到底运行了什么。
因为某些原因,需要卸载kubernetes
集群,本文将分享完整卸载kubernetes
的方法。
默认是root
用户操作
1 | # 首先清理运行到k8s群集中的pod |