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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 之前我在自己本地的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的资料地址:

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
7月前
|
缓存 JavaScript 前端开发
从零开始的抢购脚本开发-油猴开发教程(多快好省)
从零开始的抢购脚本开发-油猴开发教程(多快好省)
163 0
|
2月前
|
移动开发 网络协议 数据格式
【VOFA+速成】半小时入门VOFA+简明教程之基础认识(一)
【VOFA+速成】半小时入门VOFA+简明教程(一)
289 1
|
5月前
|
人工智能 弹性计算 文字识别
|
6月前
|
小程序 程序员 uml
老铁,请收藏!IT人必备13个在线工具
老铁,请收藏!IT人必备13个在线工具
48 2
|
7月前
|
监控 安全 前端开发
《VitePress 简易速速上手小册》第10章 维护与更新(2024 最新版)
《VitePress 简易速速上手小册》第10章 维护与更新(2024 最新版)
174 2
|
移动开发 NoSQL 前端开发
我用国庆时间写了一套开源商城
我是如何用一周的时间写了一个移动商城的~
80 0
我用国庆时间写了一套开源商城
|
小程序 数据安全/隐私保护
软件丨摸鱼神器
这两天把小程序和个人博客重写了下!
|
搜索推荐
分享5款轻量级的Win10神器,错过你会后悔的
今天我要为大家推荐五款小众而且小体积的WIN10小工具,它们可以让你的电脑使用更加方便和高效,而且不占用太多的空间和资源,非常适合轻量级的办公和娱乐。
178 1
|
前端开发 网络协议 JavaScript
我最近在用的一款神器,功能多到炸
今天就给大家分享我最近开发时在用的一款神器,API管理和自动化测试工具Eolink。想要摸鱼,就要提高效率,想要提高效率,就用这款神器!
219 0
我最近在用的一款神器,功能多到炸

相关实验场景

更多