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

浙公网安备 33010602011771号