Kuboard Spray图形化安装kubernetes集群踩坑记录
2022/1/10 13:03:37
本文主要是介绍Kuboard Spray图形化安装kubernetes集群踩坑记录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
以下记录了安装单节点(单master的集群),示例使用版本为:
- Kuboard Spray版本为v1.0.0-alpha.1,也是截止2022.01.04最新版本。
- 操作系统版本:CentOS Linux release 7.9.2009
- 内核版本:3.10.0-1160.31.1.el7.x86_64
配置
Add Node添加节点:NodeName为master01,NodeRoles为控制平面、etcd节点、工作节点。具体根据自己需求来规划。
Global Config配置:
- SSH部分需要输入用户名和密码;
- ContainerManager部分:有containerd和docker可选择,这里选择docker
Global Config配置,OS Mirror部分,选择预置的操作系统配置源:
Kubernetes配置部分,可以自定义集群泛域名后缀,Event保留时间,是否允许匿名用户访问,kubelet日志级别,网络CIDR,节点上maxPod,网络插件有Flannel和calico可选:
ETCD配置部分,有容器化部署和二进制部署可选:
Addons开启了net_checker和Metrics,作为集群监控组件:
这里重点提一下net_checker:
Kubespray
提供了一种使用 Netchecker
通过集群 IP 自动验证 Pod 到 Pod 的连接性,并检查 DNS 解析是否正常运行。这些检查由agent
定期运行,并涵盖容器网络和主机网络 pod。执行检查的历史信息可以在agent
应用程序日志中找到。并作为集群健康指标,报告到server
,以metrics
接口的方式暴露指标。
可能的报错
Apply之后,执行安装时报错:
TASK [bastion-ssh-config : set bastion host IP and port] *********************** task path: /data/resource/spray-master-8d9ed01_k8s-v1.23.1_v1.0-amd64/content/3rd/kubespray/roles/bastion-ssh-config/tasks/main.yml:2 fatal: [bastion -> localhost]: FAILED! => { "msg": "The task includes an option with an undefined variable. The error was: 'dict object' has no attribute 'bastion'\n\nThe error appears to be in '/data/resource/spray-master-8d9ed01_k8s-v1.23.1_v1.0-amd64/content/3rd/kubespray/roles/bastion-ssh-config/tasks/main.yml': line 2, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n---\n- name: set bastion host IP and port\n ^ here\n" } PLAY RECAP ********************************************************************* bastion : ok=3 changed=0 unreachable=0 failed=1 skipped=22 rescued=0 ignored=0 localhost : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
根据报错信息bastion host IP and port
可以猜到是跳板机host和port导致的,但我并没有enable跳板机选项:
根据报错指向的文件,到kuboard-spray
容器中排查main.yml
,如下:
# docker exec -ti kuboard-spray bash root@41b1a241a852:/kuboard-spray# cat /data/resource/spray-master-8d9ed01_k8s-v1.23.1_v1.0-amd64/content/3rd/kubespray/roles/bastion-ssh-config/tasks/main.yml --- - name: set bastion host IP and port set_fact: bastion_ip: "{{ hostvars[groups['bastion'][0]]['ansible_host'] | d(hostvars[groups['bastion'][0]]['ansible_ssh_host']) }}" bastion_port: "{{ hostvars[groups['bastion'][0]]['ansible_port'] | d(hostvars[groups['bastion'][0]]['ansible_ssh_port']) | d(22) }}" delegate_to: localhost connection: local # 省略
这里能看到需要获取跳板机(bastion)下的host和port,其实根据我们的选项,这个任务都不应该执行。
集群配置清单其实在kuboard-spray
容器中/data/cluster/yourclustername/inventory.yaml
文件中,其中包含了bastion
信息:
root@41b1a241a852:/data/cluster/smallsoup# cat inventory.yaml all: hosts: bastion: ansible_host: "" ansible_user: ""
需要删除hosts.bastion。
sed -i '/bastion:/d' inventory.yaml sed -i '/ansible_host: ""/d' inventory.yaml sed -i '/ansible_user: ""/d' inventory.yaml
这就懵逼了,跳板机host和port怎么会设置为空值呢?
事情经过是这样的:
一开始我手残点了一下enable,想看看有没有需要填写的。因为是测试环境,无需跳板机,所以就disable了。然而,这个版本有bug,disable时没有清理干净inventory.yaml中的配置,这是一个bug,这个bug作者会在后续版本中修复。
这个问题解决后继续安装。
继续安装
后面的安装还算顺利。重新点击Apply即可安装成功:
注意点
如果之前主机上有docker,执行安装时会reload docker,即发生重启,重启之后刷新页面重新点击Apply即可安装成功。
查看集群
# kubectl get node NAME STATUS ROLES AGE VERSION master01 Ready control-plane,master 29m v1.23.1 # systemctl status etcd # kubectl get ippool NAME AGE default-pool 29m # kubectl get pod -A NAMESPACE NAME READY STATUS RESTARTS AGE default netchecker-agent-8fs2m 1/1 Running 0 30m default netchecker-agent-hostnet-vknsm 1/1 Running 0 30m default netchecker-server-59fcd6bf86-5mtkn 2/2 Running 1 (30m ago) 30m kube-system calico-kube-controllers-bd5fc6b6-h6ghc 1/1 Running 0 31m kube-system calico-node-z6kwp 1/1 Running 0 31m kube-system coredns-5c5b9c5cb-lb8wl 1/1 Running 0 30m kube-system dns-autoscaler-7874cf6bcf-jz6qw 1/1 Running 0 30m kube-system kube-apiserver-master01 1/1 Running 0 32m kube-system kube-controller-manager-master01 1/1 Running 1 32m kube-system kube-proxy-9c5tm 1/1 Running 0 31m kube-system kube-scheduler-master01 1/1 Running 1 32m kube-system metrics-server-6b957b8494-kmsbp 1/1 Running 0 30m kube-system nodelocaldns-rq79f 1/1 Running 0 30m
可以看到
- 一个master节点的集群创建成功
- etcd二进制部署
- metrics-server和netchecker正常
- calico使用kubernetes CRD作为datastore
我们可以通过netchecker-server的地址获取指标:
curl http://{主机IP}:31081/metrics
作者简洁
作者:小碗汤,一位热爱、认真写作的小伙,专注于写go语言、docker、kubernetes、java等开发、运维知识等提升硬实力的文章,期待你的关注。转载说明:务必注明来源
这篇关于Kuboard Spray图形化安装kubernetes集群踩坑记录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15在Kubernetes (k8s) 中搭建三台 Nginx 服务器怎么实现?-icode9专业技术文章分享
- 2024-11-05基于Kubernetes的自定义AWS云平台搭建指南
- 2024-11-05基于Kubernetes Gateway API的现代流量管理方案
- 2024-11-05在Kubernetes上部署你的第一个应用:Nginx服务器
- 2024-11-05利用拓扑感知路由控制Kubernetes中的流量
- 2024-11-05Kubernetes中的层次命名空间:更灵活的资源管理方案
- 2024-11-055分钟上手 Kubernetes:精简实用的 Kubectl 命令速查宝典!
- 2024-10-30K8s 容器的定向调度与亲和性
- 2024-10-28云原生周刊:K8s未来三大发展方向 丨2024.10.28
- 2024-10-25亚马逊弹性Kubernetes服务(EKS)实战:轻松搭建Kubernetes平台