3. Kubernetes 核心概念

80 阅读3分钟

1 命令行工具 kubectl

kubectl 是 Kubernetes 集群的命令行工具,通过 kubectl 能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署。

kubectl [command] [type] [name] [flags]
  • command:指定要对资源执行的操作,例如 create、get、describe、delete
  • type:指定资源类型,资源类型是大小写敏感的,开发者能够以单数 、复数 和 缩略的形式
  • name:指定资源的名称,名称也是大小写敏感的,如果省略名称,则会显示所有的资源
  • flags:指定可选的参数,例如,可用 -s 或者 -server 参数指定 Kubernetes API server 的地址和端口
# 获取 kubectl 的命令
kubectl --help

# 获取某个命令的介绍和使用
kubectl get --help
kubectl create --help

基础命令

命令介绍
create通过文件名或标准输入创建资源
expose将一个资源公开为一个新的 Service
run在集群中运行一个特定的镜像
set在对象上设置特定的功能
get显示一个或多个资源
explain文档参考资料
edit使用默认的编辑器编辑一个资源
delete通过文件名,标准输入,资源名称或标签来删除资源

部署命令

命令介绍
rollout管理资源的发布
rolling-update对给定的复制控制器滚动更新
scale扩容或缩容 Pod 数量,Deployment、ReplicaSet、RC 或 Job
autoscale创建一个自动选择扩容或缩容并设置 Pod 数量

故障调试命令

命令介绍
describe显示特定资源或资源组的详细信息
logs在一个 Pod 中打印一个容器日志,如果 Pod 只有一个容器,容器名称是可选的
attach附加到一个运行的容器
exec执行命令到容器
port-forward转发一个或多个
proxy运行一个 proxy 到 Kubernetes API Server
cp拷贝文件或目录到容器中
auth检查授权

其他命令

命令介绍
apply通过文件名或标准输入对资源应用配置
patch使用补丁修改、更新资源的字段
replace通过文件名或标准输入替换一个资源
convert不同的 API 版本之间转换配置文件
label更新资源上的标签
annotate更新资源上的注释
completion用于实现 kubectl 工具自动补全
api-versions打印受支持的 API 版本
config修改 kubeconfig 文件(用于访问 API,比如配置认证信息)
help所有命令帮助
plugin运行一个命令行插件
version打印客户端和服务版本信息

2 YAML文件详解

  • YAML 文件 : 就是资源清单文件,用于资源编排。
  • YAML : 仍是一种标记语言。为了强调这种语言以数据做为中心,而不是以标记语言为重点。
  • YAML : 是一个可读性高,用来表达数据序列的格式。

主要分为了两部分,一个是控制器的定义 和 被控制的对象。

在一个 YAML 文件的控制器定义中,有很多属性名称

属性名称介绍
apiVersionAPI 版本
kind资源类型
metadata资源元数据
spec资源规格
replicas副本数量
selector标签选择器
templatePod 模板
metadataPod 元数据
specPod 规格
containers容器配置

一般来说,我们很少自己手写 YAML 文件,因为这里面涉及到了很多内容,我们一般都会借助工具来创建

1、使用 kubectl create 命令

这种方式一般用于资源没有部署的时候,我们可以直接创建一个 YAML 配置文件

# 尝试运行,并不会真正的创建镜像
kubectl create deployment web --image=nginx -o yaml --dry-run

或者我们可以输出到一个文件中

kubectl create deployment web --image=nginx -o yaml --dry-run > hello.yaml

然后我们就在文件中直接修改即可

2、使用 kubectl get 命令导出 yaml 文件

可以首先查看一个目前已经部署的镜像

kubectl get deploy

然后我们导出 nginx 的配置

kubectl get deploy nginx -o=yaml --export > nginx.yaml

然后会生成一个 nginx.yaml 的配置文件

3 Pod