K8S集群部署失败

  • Choerodon平台版本: v0.24

  • 遇到问题的执行步骤:
    执行 ```
    ansible-playbook -i inventory.ini 90-init-cluster.yml


* 文档地址:

* 环境信息(如:节点信息):
10.16.17.61
10.16.17.62
10.16.17.63
10.16.17.64

* 报错日志:
![图片|690x204](upload://2oyPIjdjIx38hyB7y8xgcmB4MYe.png) 

* 原因分析:
  > 执行ansible脚本部署集群报错,而且脚本在部署 metrics-server的时候,卡住不动了。

* 疑问:
  > 提出您对于遇到和解决该问题时的疑问

图呢?

这算成功了还是失败?

请提供 inventory.ini 文件内容

; 将所有节点的信息在这里填写
; 第一个字段 为节点内网IP,部署完成后为 kubernetes 节点 nodeName
; 第二个字段 ansible_port 为节点 sshd 监听端口
; 第三个字段 ansible_user 为节点远程登录用户名
; 第四个字段 ansible_ssh_pass 为节点远程登录用户密码
[all]
10.16.17.61 ansible_port=22 ansible_user=“vagrant” ansible_ssh_pass=“vagrant”
10.16.17.62 ansible_port=22 ansible_user=“vagrant” ansible_ssh_pass=“vagrant”
10.16.17.63 ansible_port=22 ansible_user=“vagrant” ansible_ssh_pass=“vagrant”
10.16.17.64 ansible_port=22 ansible_user=“vagrant” ansible_ssh_pass=“vagrant”

; 私有云:
; VIP 负载模式:
; 也就是负载均衡器 + keepalived 模式,比如常用的 haproxy + keepalived。
; 本脚本中负载均衡器有 nginx、openresty、haproxy、envoy 可供选择,设置 lb_mode 即可进行任意切换。
; 设置 lb_kube_apiserver_ip 即表示启用 keepalived,请先与服务器提供部门协商保留一个IP作为 lb_kube_apiserver_ip,
; 一般 lb 节点组中有两个节点就够了,lb节点组中第一个节点为 keepalived 的 master 节点,剩下的都为 backed 节点。
;
; 节点本地负载模式:
; 只启动负载均衡器,不启用 keepalived(即不设置 lb_kube_apiserver_ip),
; 此时 kubelet 链接 apiserver 地址为 127.0.0.1:lb_kube_apiserver_port。
; 使用此模式时请将 lb 节点组置空。
;
; 公有云:
; 不推荐使用 slb 模式,建议直接使用节点本地负载模式。
; 若使用 slb 模式,请先使用节点本地负载模式进行部署,
; 部署成功后再切换至 slb 模式:
; 将 lb_mode 修改为 slb,将 lb_kube_apiserver_ip 设置为购买到的 slb 内网ip,
; 修改 lb_kube_apiserver_port 为 slb 监听端口。
; 再次运行初始化集群脚本即可切换至 slb 模式。
[lb]

; 注意etcd集群必须是1,3,5,7…奇数个节点
[etcd]
10.16.17.61
10.16.17.62
10.16.17.63

[kube-master]
10.16.17.61
10.16.17.62
10.16.17.63

[kube-worker]
10.16.17.61
10.16.17.62
10.16.17.63
10.16.17.64

; 预留组,后续添加master节点使用
[new-master]

; 预留组,后续添加worker节点使用
[new-worker]

; 预留组,后续添加etcd节点使用
[new-etcd]

; 预留组,后续删除worker角色使用
[del-worker]

; 预留组,后续删除master角色使用
[del-master]

; 预留组,后续删除etcd角色使用
[del-etcd]

; 预留组,后续删除节点使用
[del-node]

;-------------------------------------- 以下为基础信息配置 ------------------------------------;
[all:vars]
; 是否跳过节点物理资源校验,Master节点要求2c2g以上,Worker节点要求2c4g以上
skip_verify_node=false
; kubernetes版本
kube_version=“1.16.15”

; 容器运行时类型,可选项:containerd,docker;默认 containerd
container_manager=“containerd”

; 负载均衡器
; 有 nginx、openresty、haproxy、envoy 和 slb 可选,默认使用 nginx
lb_mode=“nginx”
; 使用负载均衡后集群 apiserver ip,设置 lb_kube_apiserver_ip 变量,则启用负载均衡器 + keepalived
; lb_kube_apiserver_ip=“192.168.56.15”
; 使用负载均衡后集群 apiserver port
lb_kube_apiserver_port=“8443”

; 网段选择:pod 和 service 的网段不能与服务器网段重叠,
; 若有重叠请配置 kube_pod_subnetkube_service_subnet 变量设置 pod 和 service 的网段,示例参考:
; 如果服务器网段为:10.0.0.1/8
; pod 网段可设置为:192.168.0.0/18
; service 网段可设置为 192.168.64.0/18
; 如果服务器网段为:172.16.0.1/12
; pod 网段可设置为:10.244.0.0/18
; service 网段可设置为 10.244.64.0/18
; 如果服务器网段为:192.168.0.1/16
; pod 网段可设置为:10.244.0.0/18
; service 网段可设置为 10.244.64.0/18
; 集群pod ip段,默认掩码位 18 即 16384 个ip
kube_pod_subnet=“172.21.0.0/18”
; 集群service ip段
kube_service_subnet=“172.21.64.0/18”
; 分配给节点的 pod 子网掩码位,默认为 24 即 256 个ip,故使用这些默认值可以纳管 16384/256=64 个节点。
kube_network_node_prefix=“24”

; node节点最大 pod 数。数量与分配给节点的 pod 子网有关,ip 数应大于 pod 数。
; https://cloud.google.com/kubernetes-engine/docs/how-to/flexible-pod-cidr
kube_max_pods=“110”

; 集群网络插件,目前支持flannel,calico
network_plugin=“flannel”

; 若服务器磁盘分为系统盘与数据盘,请修改以下路径至数据盘自定义的目录。
; Kubelet 根目录
kubelet_root_dir="/opt/lib/kubelet"
; docker容器存储目录
docker_storage_dir="/opt/lib/docker"
; containerd容器存储目录
containerd_storage_dir="/opt/lib/containerd"
; Etcd 数据根目录
etcd_data_dir="/opt/lib/etcd"

看 inventory.ini 文件内容并没有什么问题,再看看这个flannel pod的日志呢

kubectl logs -n kube-system kube-flannel-ds-xxxxx

后面我重新部署了一次,上面是执行 ```
kubectl get po --all-namespaces -w

现在看上去 集群没问题了

遇到NFS问题。
按官方提供的文档创建NFS动态存储卷,但是在客户机上执行 showmount,显示为空。
图片

/etc/exports中的配置内容: