手把手一起 图形化安装 k8s 集群
作者 | 小碗汤
来源 | 我的小碗汤
今天接着上一节,使用 KuboardSpray 图形化安装kubernetes集群[1],记录了安装时可能遇到的问题。对此项目感兴趣的同学,不妨亲手实践一下~
以下记录了安装单节点(单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 portset_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: localhostconnection: 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[2],这个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
参考资料
[1]
使用 KuboardSpray 图形化安装kubernetes集群: https://liabio.blog.csdn.net/article/details/122292548
[2]
这是一个bug: https://github.com/eip-work/kuboard-spray/issues/3
往期推荐
为什么还有这么多的网络故障?
k8s集群居然可以图形化安装了?
用了HTTPS,没想到还是被监控了
快速搭建实验环境:使用 Terraform 部署 Proxmox 虚拟机
点分享
点收藏
点点赞
点在看
手把手一起 图形化安装 k8s 集群相关推荐
- 使用sealos安装K8S集群时,需确保节点的swap是关闭的
使用sealos安装K8S集群时,需确保节点的swap是关闭的,否则会安装失败
- 使用KubeKey安装K8S集群
KubeKey [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9a5Ji2nE-1625797190511)(https://github.com/kubesphere ...
- yum安装k8s集群(单master两个node、阿里云镜像源)
yum安装k8s集群(单master节点方式) 一.环境准备 1.系统要求 按量付费阿里云主机三台 要求:centos7.6~7.8:以下为 https://kuboard.cn/install/in ...
- [提示]普通用户使用sealos安装k8s集群的话,默认还是会装到root用户的home目录/root
如果使用普通用户,使用sealos安装k8s集群的话,默认还是会装到root用户的home目录/root kubeadm init --config=/root/kubeadm-config.yaml ...
- Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务
前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行.当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for desktop中启用 ...
- k8s 安装_二进制安装k8s集群总结
在之前文章里我们以学习为目的介绍了k8s集群的手动二进制安装,包括: ssl证书制作. docker的安装. 网络通讯组件flannel的安装. K8s基础组件的安装(etcd,master组件api ...
- 使用kubeadm安装k8s集群故障处理三则
最近在作安装k8s集群,测试了几种方法,最终觉得用kubeadm应该最规范. 限于公司特别的网络情况,其安装比网上不能访问google的情况还要艰难. 慢慢积累经验吧. 今天遇到的三则故障记下来作参考 ...
- (亲测无坑)Centos7.x使用kubeadm安装K8s集群1.15.0版本
基础环境配置 三台Centos7.x的服务器,主节点 cpu >=2,node节点>=1 注:(上述cpu为最低配置,否则集群安装部署会报错,无法启动,对其他硬件无硬性要求) 以下操作若无 ...
- 从零开始离线安装k8s集群
本文主要用于在内网(离线)环境安装k8s集群:linux环境 centos7.6 主要步骤有: 安装docker 创建dokcer 私有镜像库 registry 安装kubernetes 安装flan ...
最新文章
- 某网友认为程序员来钱太快!动不动就百万年薪!国内多数人工作一辈子也拿不到百万年薪!程序员:别总盯着行业头部少数人!...
- 原来你是这样的http2......
- JavaBean网页电子时钟
- 机器视觉:工业线阵相机与面阵相机特点分析
- 幸运的背后,总是靠自身的努力在支撑
- 算法问题---两艘船是否有最大承载量
- php pjax数据返回,如何将Pjax整合进网站,实现全站无刷新加载?
- 程序员如何 10 分钟用 Python 画出蒙娜丽莎?
- 网络爬虫中URLConnection的使用[以科学网为例]
- 线程数究竟设多少合理
- GoPro 8及旗下首款360全景运动摄像机HERO Max将发售
- 【VS开发】VS2010 MFC中控件、对话框等背景颜色动态修改的方法
- C#入门学习——超市收银系统
- 【数据结构】哈夫曼树、哈夫曼编码
- [Unity] UGUI学习笔记
- 判断手机是否有虚拟键盘
- S7-1200PLC—实验五 引风机和送风机的顺序控制
- 电子绘画画笔笔刷模式的学习笔记
- 加州大学欧文分校计算机排名,2017年加州大学欧文分校在美国的排名是多少?...
- 文儿结婚生子再被提起!利、文两家互喷,老利回怼:豆豆妈好!文儿暴怒:阴损至极!小洲专场欠礼之人!利、曼等人名利其中!
热门文章
- java ajax无权限跳转_如何在ajax权限判断后跳转?
- 取证 c语言实现日志导出_日志与日志不一样:五种不能忽略的日志源
- 改变定时器获取传感器频度_称重传感器在高速定量分装系统的应用
- oracle加大内存对大表,在ORACLE里如果遇到特别大的表,可以使用分区的表来改变其应用程序的性能...
- 那个 14 岁上大学、17 岁读博、24 岁当教授的天才神童,如今怎么样了?
- 这张父子照曾火遍全国,如今他们的故事比照片更动人
- 数学系和物理系学生有什么差别?
- contiki cooja仿真
- 共享内存:mmap函数实现
- 【转载保存】hadoop三个配置文件的参数含义说明core-site.xml、hdfs-site.xml、...