kubeadm工具

kubeadm工具:

官方开发的k8s部署工具,用于测试、开发环境,不建议生产环境,因为所有配置已固定,不好自定义

kubeadm初始化k8s集群流程:

  1. 在进行更改之前,运行一些列检查,验证系统状态,有些检查只会触发警告,有些检查会被视为错误并退出kubeadm,使用--ignore-preflight-errors=错误,来指定跳过
    --ignore-preflight-errors=Swap
  2. 生成子签名的CA(或使用现有的CA)为集群中每个组件设置身份。如果用户通过--cert-dir参数配置的目录中提供了自己的CA证书或密钥,则跳过生成CA。默认目录是:/etc/kubernetes/pki/
    APIServer证书将为任何--apiserver-cert-extra-sans参数值提供附加的SAN条目,必要时将其小写
  3. 在/etc/kubernetes/目录生成kubelet、controller-manager、scheduler的配置文件,让他们能连接到API服务器,它们每一个都有自己的身份标识,同时生成一个名为admin.conf的独立的kubeconfig文件,用于管理操作
  4. 如果kubeadm的--feature-getes-DynamicKubeletConfig参数被启用,它将会把kubelet的初始化配置信息写入到:/var/lib/kubelet/config.yaml中,此参数默认启用
  5. 为API服务器、控制器管理器和调度器生成静态Pod的manifest文件。假使没有提供一个外部的etcd服务的话,也会为etcd生成一份额外的静态Pod清单文件
    静态Pod的清单文件被写入到/etc/kubernetes/manifests目录;kubelet会监视这个目录以便在系统启动的时候创建 Pod
    一旦控制平面的Pod都运行起来,kubeadm init 的工作流程就继续往下执行
  6. 创建一个ConfigMap和一些RBAC规则来完成kubelet的动态配置,这些规则让kubelet能访问配置文件,且更新节点让:Node.spec.configSource指向新创建的ConfigMap
  7. 将taint应用到master节点,这样保证不会有额外的工作负载运行在此节点
  8. 生成令牌,将来其他节点可使用该令牌向控制平面注册自己。 如 kubeadm token文档所述,用户可以选择通过 --token 提供令牌
  9. 创建所有必需的配置,让node能通过bootstrap token和tls bootstrap机制来加入集群
    创建一个ConfigMap提供添加集群节点所需的信息,并为该 ConfigMap 设置相关的 RBAC 访问规则
    允许bootstrap token能访问CSR签名API
    配置自动签发新的 CSR 请求
  10. 通过API服务器安装一个DNS服务器(CoreDNS)和kube-proxy附加组件。在Kubernetes版本1.11和更高版本中,CoreDNS是默认的DNS服务器。请注意,尽管已部署DNS服务器,但直到安装CNI时才调度它

kubeadm命令:

子命令:

help
certs					#集群证书相关,默认创建的集群证书只有1年
completion		#指定shell,自动进行命令补全,要把输出的内容指定到环境变量	
config				#管理kubeadm集群的配置,配置文件保留在集群的configmap中	
init					#启动一个kubernetes主节点
join					#将node节点加入到master节点
kubeconfig		#管理 kubeconfig 文件
reset					#重置,使用init命令中的配置文件
token					#管理token
upgrade				#升级k8s版本
version				#查看版本信息

通用选项:

-h
--add-dir-header 布尔值			#true为在日志头部添加日志目录
--log-file string						#指定日志文件
--log-file-max-size uint		#日志文件最大大小,默认1800M,0为无限制
--one-output
--rootfs string							#宿主机根文件系统的路径
--skip-headers 布尔值				#true为在日志里面不显示标题前缀
--skip-log-headers 布尔值		#true为在日志中不显示标题
-v

kubeadm completion::

生成命令补全的shell脚本

子命令:

bash
zsh
例:
kubeadm completion bash > /etc/profile.d/kubeadm_completion.sh
. /etc/profile.d/kubeadm_completion.sh

kubeadm config:

子命令:

images
migrate
print						#打印配置内容
	init-defaults		#初始化进行的操作	

kubeadm init:

选项:

--apiserver-advertise-address ip			#API服务器所公布的其正在监听的IP地址
--apiserver-bind-port 端口 						#apiserver的端口,默认6443
--control-plane-endpoint ip						#为控制平面指定一个稳定的IP地址或DNS名称。也就是配置一个高可用的vip或域名,在k8s集群中多master时使用
--ignore-preflight-errors							#忽略检查过程中出现的错误信息,如swap,all为忽略所有
--image-repository						 #设置一个镜像仓库,默认:k8s.gcr.io
--kubernetes-version 版本				#安装指定k8s版本,默认为稳定版次新版
--node-name	name 							 #指定节点名称
--pod-network-cidr IP范围				#设置pod的ip范围,此范围要大一点
--service-cidr 网段						  #设置service的网段,此范围没有pod使用大
--service-dns-domain					 #设置k8s内部search域名,默认:cluster.local,内部有相应的dns服务自动解析生成域名记录
--config string								 #kubeadm 配置文件的路径
--dry-run											 #测试运行
--cri-socket 套接字						 #CRI(容器运行时接口)有其他容器时,才需指定套接字
--skip-certificate-key-print		#不打印用于加密的key信息
--skip-phases									 #要跳过哪些阶段
--skip-token-print						 #跳过打印token信息
--token												#指定token
--token-ttl										 #token有效时间,默认24h,0为用不过期
--upload-certs								 #更新证书

kubeadm token:

子命令:

create     			#创建token
delete     			#删除
generate   			#生成并打印,但不在服务器上创建
list					 #列出所有toke
例:
kubeadm token list
kubeadm token create		#创建新token

kubeadm upgrade:

子命令:

apply 版本 			 #升级到指定把版本
node						#升级node节点
plan 						#升级计划查看

kubeadm certs:

对k8s证书的管理

check-expiration			#检查所有证书有效期 

部署集群时的命令:

#master节点初始化集群
kubeadm init \
	--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \
	--control-plane-endpoint=2.2.2.13 \
	--kubernetes-version=v1.20.14 \
	--service-cidr=10.10.0.0/16 \
	--pod-network-cidr=10.244.0.0/16 \
	--ignore-preflight-errors=Swap,numcpu

#master节点加入集群
kubeadm init phase upload-certs --upload-certs
kubeadm join 2.2.2.14:6443 \
	--token ms28m0.r1zj8cqa53jb3xqb \
	--discovery-token-ca-cert-hash sha256:09833a8988504ddb97b749330dbc0548a8e15ae525523f3582d8198c53ec3a4e \
	--control-plane \
	--certificate-key 生成的key

#node节点加入集群
kubeadm join 2.2.2.13:6443 \
	--token q6rewk.emvdm7d5jhv0ow61 \
	--discovery-token-ca-cert-hash sha256:e6d5a4cde936288bc389eb5233bb5600e9eeff6f04271f5f1173fca390670398 \
	--ignore-preflight-errors=Swap

#node用新生成token加入集群
#master生成
TOKEN=`kubeadm token generate`
kubeadm token create $TOKEN
openssl x509 -in /etc/kubernetes/pki/ca.crt -pubkey -noout|openssl pkey -pubin -outform DER|openssl dgst -sha256|awk '{print $2}'
#node加入
kubeadm join 2.2.2.13:6443 --token 生存的token --discovery-token-ca-cert-hash sha256:获取的hash字符
posted @ 2022-09-02 15:05  suyanhj  阅读(243)  评论(0)    收藏  举报