kubeadm 命令

文章目录

  • kubeadm 命令
    • 1. kubeadm 概述
    • 2. 安装kubeadm
    • 3. kubeadm任务
    • 4. kubeadm init 流程
    • 5. kubeadm init 初始化参数
      • 5.1 kubeadm init phase分段执行
      • 5.2 Kubeadm自定义组件配置参数
        • 5.2.1 APIServer配置
        • 5.2.2 ControllerManager配置
        • 5.2.3 Scheduler配置
      • 5.3 kubeadm自定义镜像
      • 5.4 kubeadm将证书上载到集群
    • 6. kubeadmin join
      • 6.1 流程详解
      • 6.2 参数
    • 7. kubeadm config
    • 8. kubeadm token

1. kubeadm 概述

Kubeadm 是一个工具,它提供了 kubeadm init 以及 kubeadm join 这两个命令作为快速创建 kubernetes 集群的最佳实践。

2. 安装kubeadm

官方参考:
kubeadm安装

3. kubeadm任务

  1. kubeadm init 启动引导一个 Kubernetes 主节点
  2. kubeadm join 启动引导一个 Kubernetes 工作节点并且将其加入到集群
  3. kubeadm upgrade 更新 Kubernetes 集群到新版本
  4. kubeadm config 如果你使用 kubeadm v1.7.x 或者更低版本,你需要对你的集群做一些配置以便使用 kubeadmupgrade 命令
  5. kubeadm token 使用 kubeadm join 来管理令牌
  6. kubeadm reset 还原之前使用 kubeadm init 或者 kubeadm join 对节点所作改变
  7. kubeadm version 打印出 kubeadm 版本
  8. kubeadm alpha 预览一组可用的新功能以便从社区搜集反馈

4. kubeadm init 流程

“init” 命令执行以下阶段:

preflight                    Run pre-flight checks
kubelet-start                Write kubelet settings and (re)start the kubelet
certs                        Certificate generation/ca                          Generate the self-signed Kubernetes CA to provision identities for other Kubernetes components/apiserver                   Generate the certificate for serving the Kubernetes API/apiserver-kubelet-client    Generate the certificate for the API server to connect to kubelet/front-proxy-ca              Generate the self-signed CA to provision identities for front proxy/front-proxy-client          Generate the certificate for the front proxy client/etcd-ca                     Generate the self-signed CA to provision identities for etcd/etcd-server                 Generate the certificate for serving etcd/etcd-peer                   Generate the certificate for etcd nodes to communicate with each other/etcd-healthcheck-client     Generate the certificate for liveness probes to healthcheck etcd/apiserver-etcd-client       Generate the certificate the apiserver uses to access etcd/sa                          Generate a private key for signing service account tokens along with its public key
kubeconfig                   Generate all kubeconfig files necessary to establish the control plane and the admin kubeconfig file/admin                       Generate a kubeconfig file for the admin to use and for kubeadm itself/kubelet                     Generate a kubeconfig file for the kubelet to use *only* for cluster bootstrapping purposes/controller-manager          Generate a kubeconfig file for the controller manager to use/scheduler                   Generate a kubeconfig file for the scheduler to use
control-plane                Generate all static Pod manifest files necessary to establish the control plane/apiserver                   Generates the kube-apiserver static Pod manifest/controller-manager          Generates the kube-controller-manager static Pod manifest/scheduler                   Generates the kube-scheduler static Pod manifest
etcd                         Generate static Pod manifest file for local etcd/local                       Generate the static Pod manifest file for a local, single-node local etcd instance
upload-config                Upload the kubeadm and kubelet configuration to a ConfigMap/kubeadm                     Upload the kubeadm ClusterConfiguration to a ConfigMap/kubelet                     Upload the kubelet component config to a ConfigMap
upload-certs                 Upload certificates to kubeadm-certs
mark-control-plane           Mark a node as a control-plane
bootstrap-token              Generates bootstrap tokens used to join a node to a cluster
kubelet-finalize             Updates settings relevant to the kubelet after TLS bootstrap/experimental-cert-rotation  Enable kubelet client certificate rotation
addon                        Install required addons for passing Conformance tests/coredns                     Install the CoreDNS addon to a Kubernetes cluster/kube-proxy                  Install the kube-proxy addon to a Kubernetes cluster

描述:

  1. 在进行更改之前,kubeadm 运行一系列检查以验证系统状态。一些检查只会触发警告,有些检查会被视为错误并会退出kubeadm,直到问题得到解决或用户指定了 --skip-preflight-checks。
  2. kubeadm 将生成一个 token,以便其它 node 可以用来注册到 master 中。用户也可以选择自己提供一个 token。
  3. kubeadm 将生成一个自签名 CA 来为每个组件设置身份(包括node)。它也生成客户端证书以便各种组件可以使用。如果用户已经提供了自己的 CA 并将其放入 cert 目(通过–cert-dir 配置,默认路径为 /etc/kubernetes/pki),则跳过此步骤。
  4. 输出一个 kubeconfig 文件以便 kubelet 能够使用这个文件来连接到 API server,以及一个额外的kubeconfig 文件以作管理用途。
  5. kubeadm 将会为 API server、controller manager 和 scheduler 生成 Kubernetes 的静态 Pod manifest 文件,并将这些文件放入 /etc/kubernetes/manifests 中。Kubelet将会监控这个目录,以便在启动时创建 pod。这些都是 Kubernetes 的关键组件,一旦它们启动并正常运行后,kubeadm就能启动和管理其它额外的组件了。
  6. kubeadm 将会给 master 节点 “taint” 标签,以让控制平面组件只运行在这个节点上。它还建立了 RBAC授权系统,并创建一个特殊的 ConfigMap 用来引导与 kubelet 的互信连接。
  7. kubeadm 通过 API server 安装插件组件。目前这些组件有内部的 DNS server 和 kube-proxy DaemonSet。

5. kubeadm init 初始化参数

kubeadm init [flags]

参数说明:

--apiserver-advertise-address string
API Server将要广播的监听地址。如指定为 `0.0.0.0` 将使用缺省的网卡地址。--apiserver-bind-port int32     缺省值: 6443
API Server绑定的端口--apiserver-cert-extra-sans stringSlice
可选的额外提供的证书主题别名(SANs)用于指定API Server的服务器证书。可以是IP地址也可以是DNS名称。--cert-dir string     缺省值: "/etc/kubernetes/pki"
证书的存储路径。--config string
kubeadm配置文件的路径。警告:配置文件的功能是实验性的。--cri-socket string     缺省值: "/var/run/dockershim.sock"
指明要连接的CRI socket文件--dry-run
不会应用任何改变;只会输出将要执行的操作。--feature-gates string
键值对的集合,用来控制各种功能的开关。可选项有:
Auditing=true|false (当前为ALPHA状态 - 缺省值=false)
CoreDNS=true|false (缺省值=true)
DynamicKubeletConfig=true|false (当前为BETA状态 - 缺省值=false)-h, --help
获取init命令的帮助信息--ignore-preflight-errors stringSlice
忽视检查项错误列表,列表中的每一个检查项如发生错误将被展示输出为警告,而非错误。 例如: 'IsPrivilegedUser,Swap'. 如填写为 'all' 则将忽视所有的检查项错误。--kubernetes-version string     缺省值: "stable-1"
为control plane选择一个特定的Kubernetes版本。--node-name string
指定节点的名称。--pod-network-cidr string
指明pod网络可以使用的IP地址段。 如果设置了这个参数,control plane将会为每一个节点自动分配CIDRs。--service-cidr string     缺省值: "10.96.0.0/12"
为service的虚拟IP地址另外指定IP地址段--service-dns-domain string     缺省值: "cluster.local"
为services另外指定域名, 例如: "myorg.internal".--skip-token-print
不打印出由 `kubeadm init` 命令生成的默认令牌。--token string
这个令牌用于建立主从节点间的双向受信链接。格式为 [a-z0-9]{6}\.[a-z0-9]{16} - 示例: abcdef.0123456789abcdef--token-ttl duration     缺省值: 24h0m0s
令牌被自动删除前的可用时长 (示例: 1s, 2m, 3h). 如果设置为 '0', 令牌将永不过期。

5.1 kubeadm init phase分段执行

–skip-phases 可用于跳过某些阶段

sudo kubeadm init phase control-plane all --config=configfile.yaml
sudo kubeadm init phase etcd local --config=configfile.yaml
sudo kubeadm init --skip-phases=control-plane,etcd --config=configfile.yaml

5.2 Kubeadm自定义组件配置参数

kubeadm ClusterConfiguration对象公开了extraArgs可以覆盖传递给控制平面组件(如APIServer,ControllerManager和Scheduler)的默认标志的字段。使用以下字段定义组件:

  • apiServer
  • controllerManager
  • scheduler

该extraArgs字段由key: value对组成。覆盖控制平面组件的标志:

5.2.1 APIServer配置

apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.16.0
apiServer:extraArgs:advertise-address: 192.168.0.103anonymous-auth: "false"enable-admission-plugins: AlwaysPullImages,DefaultStorageClassaudit-log-path: /home/johndoe/audit.log

5.2.2 ControllerManager配置

apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.16.0
controllerManager:extraArgs:cluster-signing-key-file: /home/johndoe/keys/ca.keybind-address: 0.0.0.0deployment-controller-sync-period: "50"

5.2.3 Scheduler配置

apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.16.0
scheduler:extraArgs:address: 0.0.0.0config: /home/johndoe/schedconfig.yamlkubeconfig: /home/johndoe/kubeconfig.yaml

覆盖默认配置

kubeadm init --config=component.yaml

5.3 kubeadm自定义镜像

默认情况下,kubeadm从中提取图像k8s.gcr.io。如果请求的Kubernetes版本是CI标签(例如ci/latest) gcr.io/kubernetes-ci-images

允许的自定义为:

  • 提供替代imageRepository的方法 k8s.gcr.io。
  • 设置useHyperKubeImage为true使用HyperKube图像。
  • 为了提供一个具体的imageRepository和imageTag为ETCD或DNS插件。

请注意,配置字段kubernetesVersion或命令行标志 --kubernetes-version会影响图像的版本

5.4 kubeadm将证书上载到集群

此机密将在2小时后自动过期。证书使用32字节密钥加密,可以使用进行指定–certificate-key。相同的密钥可以被用来下载时附加的控制平面节点通过使接合,证书 --control-plane和--certificate-key通过kubeadm join上传。
在到期后重新上传证书:

kubeadm init phase upload-certs --upload-certs --certificate-key=SOME_VALUE --config=SOME_YAML_FILE

如果该标志–certificate-key未传递到kubeadm init, kubeadm init phase upload-certs则会自动生成一个新密钥。

以下命令可用于按需生成新密钥:

kubeadm alpha certs certificate-key

6. kubeadmin join

6.1 流程详解

请参考

6.2 参数

--apiserver-advertise-address string    #如果该节点应托管一个新的控制平面实例,则API Server的IP地址将通告其正在侦听的地址。如果未设置,将使用默认网络接口。
--apiserver-bind-port int32     Default: 6443  #如果该节点应承载一个新的控制平面实例,则该API服务器要绑定到的端口。
--certificate-key string ##使用此密钥可以解密由init上传的证书secret
--config string   #kubeadm配置文件的路径。
--control-plane  #在此节点上创建一个新的控制平面实例
--cri-socket string   #要连接的CRI套接字的路径。如果为空,则kubeadm将尝试自动检测此值;仅当您安装了多个CRI或具有非标准CRI插槽时,才使用此选项。
--discovery-file string  #从中加载集群信息的文件或URL
--discovery-token string  #发现token,从中加载集群信息的文件或URL
--discovery-token-ca-cert-hash stringSlice #对于基于令牌的发现,请验证根CA公共密钥是否与此哈希匹配(格式:“ <类型>:<值>”)。
--discovery-token-unsafe-skip-ca-verification  #对于基于令牌的发现,允许加入时不使用--discovery-token-ca-cert-hash固定
-k, --experimental-kustomize string  #kustomize静态pod清单的补丁的存储路径。
--ignore-preflight-errors stringSlice  #检查清单,其错误将显示为警告。例如:“ IsPrivilegedUser,Swap”。值“ all”忽略所有检查的错误。
--node-name string  #指定节点名称。
--skip-phases stringSlice  #要跳过的阶段列表
--tls-bootstrap-token string  #指定用于在加入节点时临时通过Kubernetes控制平面进行身份验证的令牌。
--token string  #如果未提供这些值,则将它们用于发现令牌和tls-bootstrap令牌。
$ kubeadm join --skip-phases=preflight --config=config.yaml
$ kubeadm join 192.168.211.40:6443 --token 5zw7z4.qjzipdh89aguvzn5     --discovery-token-ca-cert-hash sha256:167d0176ccd1c90b7373917940620fb7a48b245913eb25a05726345902f6213c

7. kubeadm config

$ kubeadm config upload from-file
$ kubeadm config view  #查看集群中 kubeadm 配置所在的 ConfigMap
$ kubeadm config print init-defaults #打印初始化配置
$ kubeadm config print join-defaults #打印join配置$ kubeadm config images pull #根据配置文件拉取镜像$ kubeadm config images list #显示需要拉取的镜像
k8s.gcr.io/kube-apiserver:v1.20.9
k8s.gcr.io/kube-controller-manager:v1.20.9k8s.gcr.io/kube-scheduler:v1.20.9
k8s.gcr.io/kube-proxy:v1.20.9
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.13-0
k8s.gcr.io/coredns:1.7.0$ kubeadm config print init-defaults > kubeadm.conf

8. kubeadm token

kubeadm init或输出的命令中返回的kubeadm join…

kubeadm token create --print-join-command

参考:

  • github kubeadm
  • 云原生圣经

kubeadm 常用命令相关推荐

  1. 【K8S】Kubernetes常用命令

    文章目录 Kubernetes常用命令 资源管理办法 陈述式资源管理方法 查看版本信息 查看资源对象简写 查看集群信息 node节点查看日志 基本信息查看 查看master 节点状态 查看命令空间 查 ...

  2. Server使用过程中的常用命令记录

    记录在使用unix中的常用命令, 以及各个基础组件的常用命令 Please input in head: k8s中nodeport端口范围修改 vim /etc/kubernetes/manifest ...

  3. Kubectl 常用命令, 开发人员常用k8s命令

    Kubectl 常用命令: 什么是常用,我用的,就是常用的

  4. docker常用命令详解

    docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...

  5. 客快物流大数据项目(十五):DockeFile常用命令

    目录 DockeFile常用命令 一.FROM 二.​​​​​​​MAINTAINER 三.​​​​​​​RUN

  6. 客快物流大数据项目(九):Docker常用命令

    目录 Docker常用命令 一.帮助命令 二.镜像命令 1.搜索镜像

  7. linux常用命令(转载)

    Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短 ...

  8. maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

    maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository. ...

  9. linux kvm虚拟化命令,Linux系统下kvm虚拟化(三)日常管理常用命令和配置说明

    根据我们之前创建和一些操作可以知道,KVM虚拟机的管理主要是通过virsh命令对环境下kvm虚拟机进行管理,下边这里整理一些常用的配置说明以及如何进行日常管理维护. 1,查看KVM虚拟机配置文件 KV ...

最新文章

  1. 电脑任务管理器_安国戴尔电脑显示器维修,服务至上
  2. 清华大学大数据研究中心给您拜年啦!
  3. 【JavaNIO的深入研究4】内存映射文件I/O,大文件读写操作,Java nio之MappedByteBuffer,高效文件/内存映射...
  4. GL_RGBA和GL_RGB的差别
  5. 搜狐视频怎么设置自动连播
  6. Redis数据结构——整数集合-intset
  7. CentOS7 上以 RPM 包方式安装 Oracle 18c 单实例
  8. [SCOI2016]背单词
  9. openssl代码领读目录
  10. linux wifi驱动rtl8188移植
  11. 作业必备:【操作系统实验报告】实验一:熟悉Ubuntu环境(后续会更新~)
  12. pbrt1 Introduction
  13. YetAnotherKeyDisplayer(YAKD屏幕上显示键盘操作)源码下载及编译(Win10,VS2022)
  14. 如何构建自定义人脸识别数据集?本文介绍了三种训练方法
  15. Android TextView动态设置字体颜色选择器
  16. 利用Css3样式属性Cursor来更换自定义个性化鼠标指针(光标)
  17. HTML+CSS简单的网页制作期末作业 关于我的家乡——四川文化网页介绍 DW大学生网页作业制作设计 Dreamweaver简单网页成品
  18. jmeter 保存响应到文件
  19. 猿编程python_猿编程下载-猿编程客户端 v2.12.0.1103 官方版 - 安下载
  20. at命令不生效 linux_Linux命令之at

热门文章

  1. Linux下Firefox和chrome浏览器flash插件的安装
  2. 2023江西财经大学计算机考研信息汇总
  3. amigo幸运字符什么意思_无线网络ssid是什么意思(全面解析SSID涵义)
  4. 第七篇 indicators(4)自建指标
  5. 【论文笔记_自蒸馏_2021】GROUND-TRUTH TARGETS DAMPEN REGULARIZATION IMPOSED BY SELF-DISTILLATION
  6. Unity 特效:Particle System(粒子系统)
  7. Ubuntu14.04搭建LXR本地服务器阅读Linux内核代码
  8. 王学岗移动架构34——IOC注入框架设计
  9. JAVA数组元素比较
  10. Android Binder机制(1):Binder架构分析