1.4.4 在 master 节点运行 kubeadm init 初始化命令

在三台 master 中任意一台 master 进行集群初始化 ,而且集群初始化只需要初始化一次。

1.4.4.1 kubeadm 命令使用

[root@k8s-master1 ~]# kubeadm --help
......
Available Commands:
  certs       Commands related to handling kubernetes certificates
  completion  Output shell completion code for the specified shell (bash or zsh)
  config      Manage configuration for a kubeadm cluster persisted in a ConfigMap in the cluster
  help        Help about any command
  init        Run this command in order to set up the Kubernetes control plane
  join        Run this on any machine you wish to join an existing cluster
  kubeconfig  Kubeconfig file utilities
  reset       Performs a best effort revert of changes made to this host by 'kubeadm init' or 'kubeadm join'
  token       Manage bootstrap tokens
  upgrade     Upgrade your cluster smoothly to a newer version with this command
  version     Print the version of kubeadm
......

Available Commands:

  • alpha:kubeadm 处于测试阶段的命令

  • completion:bash 命令补全,需要安装 bash completion

    # kubeadm completion bash > /etc/profile.d/kubeadm_completion.sh
    # . /etc/profile.d/kubeadm_completion.sh
  • config:管理 kubeadm 集群的配置,该配置保留在集群的 ConfigMap 中

    # kubeadm config print init defaults
  • help:Help about any command

  • init:启动一个 Kubernetes 主节点

  • join:将节点加入到已经存在的 k8s master

  • reset:还原使用 kubeadm init 或者 kubeadm join 对系统产生的环境变化

  • token:管理 token

  • upgrade:升级 k8s 版本

  • version:查看版本信息

1.4.4.2 kubeadm init 命令简介

命令使用:

https://kubernetes.io/zh/docs/reference/setup-tools/kubeadm/

集群初始化

https://kubernetes.io/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/

命令帮助,下面注释的表示可以不用指定的

[root@k8s-master1 ~]# kubeadm init --help
......
Flags:
--apiserver-advertise-address string    # K8S API Server 将要监听的监听的本机 IP,默认为网络接口,即为0.0.0.0
--apiserver-bind-port int32 # API Server 绑定的端口,默认为 6443

#--apiserver-cert-extra-sans strings    # 可选的证书额外信息,用于指定 API Server 的服务器证书。可以是 IP 地址也可以是 DNS 名称。
#--cert-dir string  # 证书的存储路径,缺省路径为 /etc/kubernetes/pki
#--certificate-key string   # 定义一个用于加密 kubeadm-certs Secret 中的控制平台证书的密钥
#--config string    # kubeadm 配置文件的路径

--control-plane-endpoint string # 为控制平台指定一个稳定的 IP 地址或 DNS 名称,即配置一个可以长期使用切是高可用的 VIP 或者域名,k8s 多 master 高可用基于此参数实现

#--cri-socket string    # 要连接的 CRI(容器运行时接口,Container Runtime Interface,简称 CRI)套接字的路径,如果为空,则 kubeadm 将尝试自动检测此值,仅当安装了多个 CRI 或具有非标准 CRI 插槽时,才使用此选项
#--dry-run  # 不要应用任何更改, 只是输出将要执行的操作 ,其实就是测试运行。
#--experimental-patches string  # 用于存储 kustomize 为静态 pod 清单所提供的补丁的路径。
#--feature-gates string # 一组用来描述各种功能特性的键值(key=value)对,选项是IPv6DualStack=true|false (BETA - default=true)

--ignore-preflight-errors strings   # 可以忽略检查过程 中出现的错误信息,比如忽略 swap ,如果为 all 就忽略所有
--image-repository string   # 设置一个镜像仓库,默认为 k8s.gcr.io
--kubernetes-version string # 指定安装 k8s 版本,默认为 stable-1

#--node-name string # 指定 node 节点名称

--pod-network-cidr string   # 设置 pod ip 地址范围

#--service-cidr string  # 设置 service 网络地址范围
#--service-dns-domain string # 设置 k8s 内部域名,默认为 cluster.local,会有相应的 DNS 服务(kube-dns/coredns)解析生成的域名记录。
#--skip-certificate-key-print   # 不打印用于加密的 key 信息
#--skip-phases strings  # 要跳过哪些阶段
#--skip-token-print # 跳过打印 token 信息
#--token string # 指定 token
#--token-ttl duration   # 指定 token 过期时间,默认为 24 小时,0 为永不过期
#--upload-certs # 更新证书

Global Flags:
##全局可选项:
--add-dir-header    # 如果为true,在日志头部添加日志目录
--log-file string   # 如果不为空,将使用此日志
--log-file-max-size uint    # 设置日志文件的最大大小,单位为兆,默认为1800兆,0为没有限制
--one-output    # 如果为 true,则仅将日志写入其本机严重性级别(而不是写入每个较低的严重性级别)
--rootfs string # 宿主机的根路径,也就是绝对路径
--skip-headers  #如果为true,在log日志里面不显示标题前缀
--skip-log-headers  #如果为true,在log日志里不显示标题

1.4.4.3 验证当前 kubeadm 版本

# 查看当前 kubeadm版本
[root@k8s-master1 ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.1", GitCommit:"5e58841cce77d4bc13713ad2b91fa0d961e69192", GitTreeState:"clean", BuildDate:"2021-05-12T14:17:27Z", GoVersion:"go1.16.4", Compiler:"gc", Platform:"linux/amd64"}
[root@k8s-master1 ~]# 

# 默认不能命令补全,需要执行下面操作
[root@k8s-master1 ~]# kubeadm completion bash > /etc/profile.d/kubeadm_completion.sh
[root@k8s-master1 ~]# . /etc/profile.d/kubeadm_completion.sh
[root@k8s-master1 ~]#