--restart-policy参数

带有参数 --restart-policy=Always 的资源将被部署为 Deployment 带有参数 --restart-policy=Never 的资源将被部署为 Pod。 同时 Kubectl 也会检查是否需要触发其他操作,例如:记录命令(用来进行回滚或审计)

API 版本协商与 API 组

为了更容易地消除字段或者重新组织资源结构,Kubernetes 支持多个 API 版本,每个版本都在不同的 API 路径下,例如 /api/v1 或者 /apis/extensions/v1beta1。不同的 API 版本表明不同的稳定性和支持级别,更详细的描述可以参考 Kubernetes API 概述。

API 组主要作用是对类似资源进行分类,以便使得 Kubernetes API 更容易扩展。 API 的组别在 REST 路径或者序列化对象的 apiVersion 字段中指定。 例如:Deployment 的 API 组名是 apps,最新的 API 版本是 v1beta2,这就是为什么要在 Deployment manifests 顶部输入 apiVersion: apps/v1beta2。

为了提高性能,Kubectl 将 OpenAPI 模式缓存到了 ~/.kube/cache 目录。 如果想了解 API 发现的过程,可以尝试删除该目录并在运行 kubectl 命令时将 -v 参数的值设为最大值,然后将会看到所有试图找到这些 API 版本的 HTTP 请求。

kubectl 通过以下顺序来找到 Kubeconfig

  • 如果提供了 --kubeconfig 参数, Kubectl 就使用 --kubeconfig 参数提供的 Kubeconfig 文件。
  • 如果没有提供 --kubeconfig 参数,但设置了环境变量 $KUBECONFIG,则使用该环境变量提供的 Kubeconfig 文件。
  • 如果 --kubeconfig 参数和环境变量 $KUBECONFIG 都没有提供,Kubectl 就使用默认的 Kubeconfig 文件 $HOME/.kube/config。

kubectl发出的HHP请求头中的内容

解析完 Kubeconfig 文件后,Kubectl 会确定当前要使用的上下文、当前指向的群集以及与当前用户关联的任何认证信息。如果用户提供了额外的参数(例如: --username),则优先使用这些参数覆盖 Kubeconfig 中指定的值。一旦拿到这些信息之后, Kubectl 就会把这些信息填充到将要发送的 HTTP 请求头中:

  • x509 证书使用 tls.TLSConfig 发送(包括 CA 证书)
  • bearer tokens 在 HTTP 请求头 Authorization 中发送
  • 用户名和密码通过 HTTP 基本认证发送
  • OpenID 认证过程是由用户事先手动处理的,产生一个像 Bearer Token 一样被发送的 Token

每次收到请求时,Apiserver 都会通过令牌链进行认证,直到某一个认证成功为止:

  • x509 处理程序将验证 HTTP 请求是否是由 CA 根证书签名的 TLS 密钥进行编码的
  • bearer token 处理程序将验证 --token-auth-file 参数提供的 Token 文件是否存在
  • 基本认证处理程序确保 HTTP 请求的基本认证凭证与本地的状态匹配
Copyright © suredandan 2018 all right reserved,powered by GitbookUpdateTime: 2020-04-09 16:42:03

results matching ""

    No results matching ""