关于本地持久化存储
用户希望 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 |