又一款神器:半小时带你轻松上手k8s

简介: 之前我在自己本地的mac部署k8s的时候都是基于minikube去运行的,今天决定尝试学习一种新的方式去玩k8s,这次选择使用的是Rancher Desktop工具。下边是我入坑的一些记录,希望给有需要的读者能够提供一些帮助。

什么是 Rancher Desktop


Rancher Desktop 是一款在桌面上提供容器和 Kubernetes 管理的应用。它适用于 Mac(包括 Intel 和 Apple 芯片)、Windows 和 Linux,允许在工作站本地运行 Kubernetes 和容器管理。

它提供了许多很棒的功能,例如允许你选择在本地运行的 Kubernetes 版本,使用 containerd 或 Moby(即 dockerd)构建、推送和运行容器镜像。而且,你不需先将镜像推送到镜像仓库就可以构建和运行这些镜像。


Rancher Desktop 架构


Rancher Desktop 基于 Electron 实现跨平台用户界面,封装了 nerdctl、kubectl、Helm、Docker CLI 等工具。在 MacOS 和 Linux 上,Rancher Desktop 利用虚拟机运行 containerd 或 dockerd 和 Kubernetes。在 Windows 中使用的是 Windows Subsystem for Linux 2 (WSL2)。

Rancher Desktop 使用专门的 Rancher K3s 发行版。K3s 是一个 CNCF 沙盒项目,它提供了一个轻量级的 Kubernetes 发行版,主要适用于边缘计算、物联网等场景。K3s 安装简单且非常轻量。不仅适用于生产环境,而且还可以作为本地开发平台在 Rancher Desktop 内运行。


6.png


安装基本步骤记录


Raocher的官网地址:

https://www.rancher.cn/quick-start/

如果你想通过Rancher入K8s的坑,那么就需要先了解下硬件配置是否支持,具体可以在这个页面查看:


https://docs.rancher.cn/docs/rancherdesktop/installation/_index

7.png


由于我是用mac笔记本测试的,所以更多只是关注了mac环境下的一些配置。在阅读过后,确认当前自己的笔记本可以安装对应软件后,便开始着手下载Rancher DeskTop。

到github上下载安装 Rancher DeskTop软件

https://github.com/rancher-sandbox/rancher-desktop/releases

找到适合自己的软件安装包,然后点击下载:


8.png


将软件安装到自己本地的mac笔记本中


9.png


安装好了之后,在对应的界面中选择合适的kubernetes version,同时选择port为8080(注意这里选择了port为8080的原因我在下文中会提到)


10.png


然后就是安装了。

在安装的过程中,你可以看到软件界面的左下角部分有一个进度条,该地方显示了已经下载的安装包进度,


11.png


如果在进度条部分卡住了,并且弹出一个错误提示窗口,那么此时你可以尝试切换到不同的kubernetes version。(我自己就是这样解决的)

当完全安装好了之后,可以通过在命令窗口中输入以下关键字去验证:


kubectl cluster-info

image.gif

如果能够返回上图中所显示的信息就算安装成功了。


可能遇到的坑


好了,看到这里你可能会觉得,这款软件似乎安装非常简单,但是实际上可能会遇到以下几个坑:

坑点1 -- 安装异常,不知道该从哪入手进行分析


12.png


在Rancher Desktop软件的Troubleshooting界面上有一个show logs按钮,可以通过点击该按钮查看具体的日志信息。日志种类比较多,比较核心的日志在k3s.log文件中

13.png


k3s.log日志中记录了非常多详细的内容,可以通过阅读日志慢慢推敲,然后结合搜索引擎去解决问题。

14.png


坑点2 提示kubectl访问被拒绝

输入kubectl get nodes指令的时候居然抛出以下异常:


[root@k8snode1 kubernetes]# kubectl get pod
The connection to the server localhost:8080 was refused - did you specify the right host or port?

这里似乎在告诉我们链接不到8080端口,于是我通过google搜索了大量的资料文档,搜到的结果大概有以下几种:

  • 方案一

kubectl命令需要使用kubernetes-admin来运行,解决方法如下,将主节点中的 /etc/kubernetes/admin.conf 文件拷贝到从节点相同目录下,然后配置环境变量:


echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile

刷新后立即生效


source ~/.bash_profile


接着再运行kubectl命令就OK了

但是这套方案在我这似乎运行不同,因为我只是用单机部署,而且也找不到对应的admin.conf配置文件,所以只好继续搜索。

  • 方案二

访问https://mirror.rancher.cn/地址,下载对应版本的配置包(要和自己安装的kubenetes版本保持一致)


15.png


下载后修改名字,并且加执行权限

mv darwin-amd64-v1.22.6-kubectl kubectl
chmod +x ./kubectl

接着将这份脚本移动至/usr/local/bin/下

mv ./kubectl /usr/local/bin/kubectl

然后可以测试一下:

kubectl version --client

如果正常,会返回截图中的内容:

image.gif

但是此时输入kubect get node 依然是连接失败的异常。

按照网友的介绍,需要将这份配置脚本拷贝到 ~/.kube目录下,并且命名为config.

但是自己按照这套方式来,发现还是不行(会返回一个yaml的编码格式异常问题),怀疑有可能是我个人环境的问题导致,各位读者朋友们如果有兴趣可以自行去尝试,或许你的会成功。

  • 方案三

修改端口,然后重置Kubernetes,也就是调整下边的这个位置的端口,然后点击Reset Kubernetes按钮即可。


image.gif16.png


最后我选择使用了修改端口的方案,并且发现这个方案成功了,简单又快捷。


基于Raocher部署Nginx节点进行测试

创建pod指令:

【 idea @ Mac】 >>>>>>kubectl create deployment nginx --image=nginx                             
deployment.apps/nginx created

启动后可以通过kubectl指令去查看对应的pod和deployment信息。

【 idea @ Mac】 >>>>>>kubectl get deployment                                                    
NAME    READY   UP-TO-DATE   AVAILABLE   AGE                                                    
nginx   1/1     1            1           7m23s                                                   
【 idea @ Mac】 >>>>>>kubectl get pod -o wide                                                      
NAME                     READY   STATUS    RESTARTS   AGE     IP           NODE                   NOMINATED NODE   READINESS GATES                                                                 
nginx-6799fc88d8-xqvcr   1/1     Running   0          7m45s   10.42.0.22   lima-rancher-desktop

将该deployment通过service对外暴露

【 idea @ Mac】 >>>>>>kubectl create service nodeport nginx --tcp 80:80                         
service/nginx created                                                                         
【 idea @ Mac】 >>>>>>kubectl get svc                                                           
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE                     
kubernetes   ClusterIP   10.43.0.1               443/TCP        5h42m                         
nginx        NodePort    10.43.181.103           80:32404/TCP   7s

最后我们可以通过ip加端口的形式去访问验证:



17.png


访问成功。


Raocher提供的Dashboard平台

Raocher Desktop提供了一套Dashboard界面供我们对k8s进行监控查看。

Pod列表

可以观测已经部署在k8s集群中的各个pod节点信息。


18.png


整套k8s的使用资源情况

通过监控信息可以大概看出cpu以及内存的占比量。


19.png


同时使用Raocher DeskTop提供可视化界面支持对应用信息的各种编辑,回滚,重新部署,修改yaml等功能。


20.png

 dashboard内部还有提供非常多丰富的功能,我在这里暂时以截图的方式展示给大家,具体使用大家可以实际安装体验下效果。

deployment的可视化创建

21.png



pod的可视化创建

22.png

服务节点的扩容和缩容

23.png


使用感觉

基于Raocher DeskTop 部署k8s的步骤感觉比Minkube要简单一些,但是关于它的一些技术文档在网上会比较少,所以如果遇到了某些特别的问题都需要到官方论坛去阅读英文文档查看,目前来看比较适合开发人员用于本地部署跑一些demo,但是实际落地到生产环境还需要谨慎考虑。

下边附上更多关于Raocher DeskTop的资料地址:

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2天前
十分钟上手把玩树莓派——系统创建指南
十分钟上手把玩树莓派——系统创建指南
|
6月前
|
小程序 数据安全/隐私保护
软件丨摸鱼神器
这两天把小程序和个人博客重写了下!
|
7月前
|
存储 数据库
ivx简单实战,多图新手小白速成(1:签到系统)
ivx简单实战,多图新手小白速成(1:签到系统)
97 0
|
8月前
|
监控 数据安全/隐私保护 Windows
推荐5款能帮你解决各种问题的神器
今天我要向大家推荐5款超级好用的效率软件,无论是在学习还是办公中都能够极大地提高效率。这些软件可以帮助你解决许多问题,而且每个都是真正的神器。
124 0
|
9月前
|
Web App开发 前端开发 程序员
电脑上终极的摸鱼神器,非它莫属。
电脑上终极的摸鱼神器,非它莫属。
|
10月前
|
人工智能
小白也可以做智慧大屏?我来帮你踩踩坑!
小白也可以做智慧大屏?我来帮你踩踩坑!
104 0
小白也可以做智慧大屏?我来帮你踩踩坑!
|
11月前
|
搜索推荐
分享5款轻量级的Win10神器,错过你会后悔的
今天我要为大家推荐五款小众而且小体积的WIN10小工具,它们可以让你的电脑使用更加方便和高效,而且不占用太多的空间和资源,非常适合轻量级的办公和娱乐。
133 1
|
Web App开发 缓存 监控
测开必备,推荐几款前端性能测试工具、神器
今天,就给大家介绍几款前端性能测试分析工具,结合性能测试工具,实现通过量化的方式测试网站中诸如首字节加载时间(time to first byte)或者渲染时间等表现。其中有些工具还会检查资源是否被缓存,多个 CSS 或 JS 文件是否值得合并,最后自动给出前端性能优化改进建议报告。
1346 0
测开必备,推荐几款前端性能测试工具、神器