请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册
搜索

kubeadm 专题 一 init 究竟干了些什么

[复制链接]
460 abc 发表于 2020-11-19 21:53:08
  1. init 工作流
  2. kubeadm init通过执行以下步骤来引导Kubernetes控制平面节点:

  3. 在进行更改之前运行一系列飞行前检查以验证系统状态。某些检查仅触发警告,其他检查被视为错误,并将退出kubeadm,直到问题得到纠正或用户指定--ignore-preflight-errors = <list-of-errors>。 来忽略错误。

  4. 生成自签名 CA(或使用现有CA),以便为群集中的每个组件设置标识。如果用户通过将其放在通过--cert-dir配置的cert目录(默认情况下为/etc/kubernetes/pki)中提供了自己的CA证书和/或密钥,则会跳过此步骤,如使用自定义证书文档中所述。 APIServer证书将--apiserver-cert-extra-sans参数提供的额外SAN条目添加到证书信息中,如果需要,可以小写。

  5. 在/etc/kubernetes/中为 kubelet, controller-manager和scheduler 写入kubeconfig文件,用于连接到API服务器,每个都有自己的标识,以及另一个名为admin.conf的管理员kubeconfig文件。

  6. 生成启动 kubelet 服务所需的配置文件和环境变量,并启动kubelet (systemd 方式)生成文件如下

  7. /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf 环境变量
  8. /etc/kubernetes/bootstrap-kubelet.conf/
  9. /etc/kubernetes/kubelet.conf
  10. /var/lib/kubelet/config.yaml
  11. /var/lib/kubelet/kubeadm-flags.env 环境变量
  12. kubelet 使用4个文件的方式如下

  13. [root@rancher ~]# systemctl status kubelet
  14. ● kubelet.service - kubelet: The Kubernetes Node Agent
  15.    Loaded: loaded (/usr/lib/systemd/system/kubelet.service; disabled; vendor preset: disabled)
  16.   Drop-In: /usr/lib/systemd/system/kubelet.service.d
  17.            └─10-kubeadm.conf
  18.    Active: active (running) since Sun 2019-08-18 14:16:37 CST; 13min ago
  19.      Docs: https://kubernetes.io/docs/
  20. Main PID: 14980 (kubelet)
  21.    CGroup: /system.slice/kubelet.service
  22.            └─14980 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml
  23. 为apiserver,control-manager 和scheduler 生成静态Pod清单。
  24. 如果未提供外部etcd,则会为etcd生成其他静态Pod清单。 Static Pod清单写入/etc/kubernetes/manifests; kubelet监视此目录以便Pods在启动时创建。

  25. control plane 的pod 启动后,init 开始继续执行后面的流程。

  26. 将标签和污点应用于控制平面节点,以便不会在那里运行其他工作负载。

  27. 生成其他节点将来可用于向控件平面注册自己的令牌。或者,用户可以通过--token 参数来指定一个令牌。,具体在 kubeadm token 文档中.

  28. 进行所有必要的配置,以允许其他节点通过引导令牌 bootstrap token 和 TLS boostrap 机制进行加入

  29. 写入加入集群的所需的信息到configmap, 设置相关的RBAC 规则。

  30. 让bootstrap token 访问 CSR(证书签名请求) 签名 API

  31. Configure auto-approval for new CSR requests. 对CSR 请求(证书签名请求)配置自动同意。

  32. 通过 API server 安装 DNS 服务器 (CoreDNS) 和 kube-proxy 组件。在 Kubernetes 版本 1.11 和更高版本中,CoreDNS 是默认 DNS 服务器。要安装 kube-dns 而不是 CoreDNS,必须在 kubeadm 配置文件的ClusterConfiguration 字段中配置 DNS 附加组件(通过 kubeadm config 文件)。请注意,虽然已部署 DNS 服务器,但安装 CNI 前该POD 不会被调度到节点(可以理解为不回被实际部署,或不会生效)。

  33. kubeadm init phase 的用法
  34. 查看 kubeadm init phase 列表
  35. [root@rancher ~]# kubeadm init phase
  36. Use this command to invoke single phase of the init workflow

  37. Usage:
  38.   kubeadm init phase [command]

  39. Available Commands:
  40.   addon              Install required addons for passing Conformance tests
  41.   bootstrap-token    Generates bootstrap tokens used to join a node to a cluster
  42.   certs              Certificate generation
  43.   control-plane      Generate all static Pod manifest files necessary to establish the control plane
  44.   etcd               Generate static Pod manifest file for local etcd
  45.   kubeconfig         Generate all kubeconfig files necessary to establish the control plane and the admin kubeconfig file
  46.   kubelet-start      Write kubelet settings and (re)start the kubelet
  47.   mark-control-plane Mark a node as a control-plane
  48.   preflight          Run pre-flight checks
  49.   upload-certs       Upload certificates to kubeadm-certs
  50.   upload-config      Upload the kubeadm and kubelet configuration to a ConfigMap
  51. 可以查看某个具体的phase下的子phase 列表
  52. [root@rancher ~]# kubeadm init phase control-plane --help
  53. This command is not meant to be run on its own. See list of available subcommands.

  54. Usage:
  55.   kubeadm init phase control-plane [flags]
  56.   kubeadm init phase control-plane [command]

  57. Available Commands: #下面的就是子phase
  58.   all                Generate all static Pod manifest files
  59.   apiserver          Generates the kube-apiserver static Pod manifest
  60.   controller-manager Generates the kube-controller-manager static Pod manifest
  61.   scheduler          Generates the kube-scheduler static Pod manifest
  62. 查看 control-plane phase 下 controller-manager 子 phase 的用法详情
  63. [root@rancher ~]# kubeadm init phase control-plane controller-manager --help
  64. Generates the kube-controller-manager static Pod manifest

  65. Usage:
  66.   kubeadm init phase control-plane controller-manager [flags]

  67. Flags:
  68.       --cert-dir string                                 The path where to save and store the certificates. (default "/etc/kubernetes/pki")
  69.       --config string                                   Path to a kubeadm configuration file.
  70.       --controller-manager-extra-args mapStringString   A set of extra flags to pass to the Controller Manager or override default ones in form of <flagname>=<value>
  71.   -h, --help                                            help for controller-manager
  72.       --image-repository string                         Choose a container registry to pull control plane images from (default "k8s.gcr.io")
  73.       --kubernetes-version string                       Choose a specific Kubernetes version for the control plane. (default "stable-1")
  74.       --pod-network-cidr string                         Specify range of IP addresses for the pod network. If set, the control plane will automatically allocate CIDRs for every node.
  75. 执行某个 phase 或者跳过某个 phase

  76. 作者:陈Sir的知识库
  77. 链接:https://www.jianshu.com/p/1e65610dd223
  78. 来源:简书
  79. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表