kubeadm 常用命令
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任务
- kubeadm init 启动引导一个 Kubernetes 主节点
- kubeadm join 启动引导一个 Kubernetes 工作节点并且将其加入到集群
- kubeadm upgrade 更新 Kubernetes 集群到新版本
- kubeadm config 如果你使用 kubeadm v1.7.x 或者更低版本,你需要对你的集群做一些配置以便使用 kubeadmupgrade 命令
- kubeadm token 使用 kubeadm join 来管理令牌
- kubeadm reset 还原之前使用 kubeadm init 或者 kubeadm join 对节点所作改变
- kubeadm version 打印出 kubeadm 版本
- 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
描述:
- 在进行更改之前,kubeadm 运行一系列检查以验证系统状态。一些检查只会触发警告,有些检查会被视为错误并会退出kubeadm,直到问题得到解决或用户指定了
--skip-preflight-checks。
- kubeadm 将生成一个 token,以便其它 node 可以用来注册到 master 中。用户也可以选择自己提供一个 token。
- kubeadm 将生成一个自签名 CA 来为每个组件设置身份(包括node)。它也生成客户端证书以便各种组件可以使用。如果用户已经提供了自己的 CA 并将其放入 cert 目(通过–cert-dir 配置,默认路径为
/etc/kubernetes/pki
),则跳过此步骤。 - 输出一个 kubeconfig 文件以便 kubelet 能够使用这个文件来连接到 API server,以及一个额外的kubeconfig 文件以作管理用途。
- kubeadm 将会为 API server、controller manager 和 scheduler 生成 Kubernetes 的静态 Pod manifest 文件,并将这些文件放入
/etc/kubernetes/manifests
中。Kubelet将会监控这个目录,以便在启动时创建 pod。这些都是 Kubernetes 的关键组件,一旦它们启动并正常运行后,kubeadm就能启动和管理其它额外的组件了。 - kubeadm 将会给 master 节点 “taint” 标签,以让控制平面组件只运行在这个节点上。它还建立了 RBAC授权系统,并创建一个特殊的 ConfigMap 用来引导与 kubelet 的互信连接。
- 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 常用命令相关推荐
- 【K8S】Kubernetes常用命令
文章目录 Kubernetes常用命令 资源管理办法 陈述式资源管理方法 查看版本信息 查看资源对象简写 查看集群信息 node节点查看日志 基本信息查看 查看master 节点状态 查看命令空间 查 ...
- Server使用过程中的常用命令记录
记录在使用unix中的常用命令, 以及各个基础组件的常用命令 Please input in head: k8s中nodeport端口范围修改 vim /etc/kubernetes/manifest ...
- Kubectl 常用命令, 开发人员常用k8s命令
Kubectl 常用命令: 什么是常用,我用的,就是常用的
- docker常用命令详解
docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...
- 客快物流大数据项目(十五):DockeFile常用命令
目录 DockeFile常用命令 一.FROM 二.MAINTAINER 三.RUN
- 客快物流大数据项目(九):Docker常用命令
目录 Docker常用命令 一.帮助命令 二.镜像命令 1.搜索镜像
- linux常用命令(转载)
Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错.我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短 ...
- maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令
maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository. ...
- linux kvm虚拟化命令,Linux系统下kvm虚拟化(三)日常管理常用命令和配置说明
根据我们之前创建和一些操作可以知道,KVM虚拟机的管理主要是通过virsh命令对环境下kvm虚拟机进行管理,下边这里整理一些常用的配置说明以及如何进行日常管理维护. 1,查看KVM虚拟机配置文件 KV ...
最新文章
- 电脑任务管理器_安国戴尔电脑显示器维修,服务至上
- 清华大学大数据研究中心给您拜年啦!
- 【JavaNIO的深入研究4】内存映射文件I/O,大文件读写操作,Java nio之MappedByteBuffer,高效文件/内存映射...
- GL_RGBA和GL_RGB的差别
- 搜狐视频怎么设置自动连播
- Redis数据结构——整数集合-intset
- CentOS7 上以 RPM 包方式安装 Oracle 18c 单实例
- [SCOI2016]背单词
- openssl代码领读目录
- linux wifi驱动rtl8188移植
- 作业必备:【操作系统实验报告】实验一:熟悉Ubuntu环境(后续会更新~)
- pbrt1 Introduction
- YetAnotherKeyDisplayer(YAKD屏幕上显示键盘操作)源码下载及编译(Win10,VS2022)
- 如何构建自定义人脸识别数据集?本文介绍了三种训练方法
- Android TextView动态设置字体颜色选择器
- 利用Css3样式属性Cursor来更换自定义个性化鼠标指针(光标)
- HTML+CSS简单的网页制作期末作业 关于我的家乡——四川文化网页介绍 DW大学生网页作业制作设计 Dreamweaver简单网页成品
- jmeter 保存响应到文件
- 猿编程python_猿编程下载-猿编程客户端 v2.12.0.1103 官方版 - 安下载
- at命令不生效 linux_Linux命令之at
热门文章
- Linux下Firefox和chrome浏览器flash插件的安装
- 2023江西财经大学计算机考研信息汇总
- amigo幸运字符什么意思_无线网络ssid是什么意思(全面解析SSID涵义)
- 第七篇 indicators(4)自建指标
- 【论文笔记_自蒸馏_2021】GROUND-TRUTH TARGETS DAMPEN REGULARIZATION IMPOSED BY SELF-DISTILLATION
- Unity 特效:Particle System(粒子系统)
- Ubuntu14.04搭建LXR本地服务器阅读Linux内核代码
- 王学岗移动架构34——IOC注入框架设计
- JAVA数组元素比较
- Android Binder机制(1):Binder架构分析