前言
本文记录Kubernetes管理工具,主要针对集群管理和pod的学习记录
一、集群管理
1、集群管理命令
控制Kubernetes集群的命令行工具 : kubectl
语法格式
kubectl [command] [type] [name] [flags]
command : 子命令,eg:create,delete,get,describe等
type : 资源类型,可以表示为单数,复数或缩写形式
name : 资源的名字,省略默认为显示所有资源
flags : 指定可选标志,或附加的参数
子命令
子命令 | 描述 |
---|---|
help | 帮助信息 |
cluster-info | 显示集群的相关配置 |
version | 查看服务器及客户端的版本信息 |
api-resources | 查看当前服务器上所有的资源对象 |
api-version | 查看当前服务器上所有资源对象的版本 |
config | 管理当前节点上kubeconfig的认证信息 |
get | 列出Kubernetes集群中的资源 |
create | 通过文件名或标准输入创建资源 |
update | 通过文件名或标准输入更新资源 |
delete | 通过文件名、标准输入或资源名删除资源 |
describe | 查看资源的详细描述信息 |
set | 对现有资源进行配置 |
edit | 通过默认编辑器编辑资源 |
label | 更新资源上的标签 |
run | 在集群上运行一个指定的image |
exec | 在容器中执行命令 |
apply | 使用配置文件来更新资源 |
completion | 为kubectl生成自动补全脚本 |
output | 控制输出格式 |
update | 更新kubectl到最新版本 |
资源对象
k8s中把可以创建或配置的应用和服务称为资源对象
eg:Pod、负载均衡、存储、网络服务等
创建资源对象的放式:
简单资源对象可以使用kubectl直接创建
高级资源对象需要资源对象文件创建
eg:使用run创建一个Pod资源对象
语法:
kubectl run Pod名字 [选项/参数] --image=镜像名:标签
二、Pod详解
Pod由一个或多个容器组成,是Kubernetes最小的管理单元,是一个服务的多个进程的聚合单位。
同一个Pod共享网络IP及权限,共享主机名称,共享存储设备。
1、Pod相位状态
Pod的status字段是一个PodStatus的对象,Pod对象应处于以下几个相位之一:
Pending Pod创建过程中但尚未被调度完成
Running Pod中所有容器都已创建成功
Completed Pod所有容器都已成功终止,并不会被重启
Failed Pod所有容器中至少由一个容器退出是非0状态
Unknown 无法正常获取Pod对象状态信息
2、 Pod管理命令
核心管理命令
子命令 | 描述 | 备注 |
---|---|---|
run/create | 创建资源对象 | 可输出资源文件模板 |
get | 查看资源对象状态信息 | 可选参数:-o显示格式 |
describe | 查询资源对象属性信息 | |
logs | 查看容器报错信息 | 可选参数:-c 容器名称 |
kubectl get语法格式
kubectl get 资源类型 [资源名称] [选项/参数]
常用参数:
-o name 只显示名字
-o wide 显示更加详细的信息
-o yaml 以yaml语法格式显示资源对象
-o json 以json语法格式显示资源对象
系统命名空间
-default 默认命名空间,不声明命名空间的Pod都在这里
-kube-node-lease 为高可用提供心跳监视的命名空间
-kube-public 公共数据,所有用户都可以读取它
-kube-system 系统服务对象所使用的命名空间
ps:k8s系统核心服务都运行在kube-system命名空间中
kubectl create 语法格式
kubectl create <资源对象> [选项/参数]
kubectl run 语法格式
kubectl run pod名称 [选项/参数]
kubectl describe语法格式
kubectl describe 资源类型 [资源名称] [选项/参数]
Events下是事务日志,常用排错
kubectl logs 语法格式
kubectl logs Pod名称 [选项/参数]
常用管理命令
子命令 | 描述 | 备注 |
---|---|---|
exec | 在某一个容器内执行特定的命令 | 可选参数:-c 容器名称 |
cp | 在容器和宿主机之间拷贝文件/目录 | 可选参数:-c 容器名称 |
delete | 删除资源对象 | 可选参数:-f 文件名称 |
kubectl exec在容器内执行命令
kubectl exec [选项/参数] Pod名称 – 操作命令
常用 -it 分配交互式终端
kubectl cp拷贝文件/目录
kubectl cp [选项/参数] 源文件 目标文件
路径格式 [Pod名称:绝对路径]
kubectl delete 语法格式
集群中所有资源均可以使用 delete 命令删除
kubectl delete [选项/参数] 资源类型 资源名称
三、资源文件详解
kubernetes对象是“目标性记录”,使用这些对象去表示整个集群的状态
创建Kubernetes对象时,必须提供资源对象的一些基础信息,以及描述该对象的期望状态特征,如果在文件中用yaml语法格式描述上面的信息,这个文件就是资源对象文件。
使用资源对象文件的原因:
命令无法持久化,没有历史记录,不方便重现
服务众多,多个容器之间有关联性,管理不方便
高级复杂的功能靠简单命令无法实现
资源对象文件作用:
可以创建、删除、变更、管理资源对象
最简单的资源对象文件
eg:
--- # yaml文件起始标志
kind: Pod # 当前创建资源的类型
apiVersion: v1.0 # 当前资源的版本
metadata: # 属性信息,元数据
name: mynginx # 属性信息,资源的名称
spec: # 资源的特性描述
containers: # 容器资源特征描述
- name: web_server # 容器名称
image: my_os:nginx # 启动容器时用的镜像
status: {} # 资源状态,运行后自动生成
静态Pod
静态Pod是由kubelet守护进程直接管理的Pod,不需要API服务监管
kubelet监视每个静态Pod,在它崩溃后重新启动
静态Pod永远都会绑定到一个指定节点上的kubelet
静态Pod的spec不能引用其他API对象
静态Pod配置路径:/var/lib/kubelet/config.yaml
staticPodPath:/etc/kubernetes/mainfests
四、管理资源对象
Pod资源对象管理
创建Pod两种方法:
1、使用run子命令创建
2、使用资源文件
子命令 | 说明 | 备注 |
---|---|---|
create | 创建文件中定义的资源 | 指令式对象配置 |
apply | 创建(更新)文件中定义的资源 | 声明式对象配置 |
delete | 删除文件中定义的资源 | 可以基于集合删除 |
语法:
kubectl [create|apply|delete] -f 资源文件名称.yaml