又一款神器:半小时带你轻松上手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的资料地址:

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Kubernetes 负载均衡 网络协议
k8s中部署springboot项目
k8s中部署springboot项目
1241 0
|
异构计算
FPGA - 7系列 FPGA内部结构之SelectIO -01- 简介与DCI技术简介(二)
FPGA - 7系列 FPGA内部结构之SelectIO -01- 简介与DCI技术简介
1516 0
FPGA - 7系列 FPGA内部结构之SelectIO -01- 简介与DCI技术简介(二)
|
运维 Kubernetes 监控
深入了解Rancher Desktop设置
通过深入了解Rancher Desktop的设置,你可以更好地利用它来进行Kubernetes应用程序的开发和测试,提高工作效率和开发体验。
482 1
|
监控 安全 网络安全
使用 Fortinet 安全 SD-WAN 解决方案进行全球跨国公司网络设计的最佳实践
使用 Fortinet 安全 SD-WAN 解决方案进行全球跨国公司网络设计的最佳实践
537 3
|
存储 编解码 安全
阿里云函数计算高效便捷驱动多媒体文件处理
在多媒体文件处理领域,例如对视频或音频进行转码、剪辑、添加水印等操作,通常需要复杂的软硬件环境搭建以及大量的计算资源。使用阿里云函数计算服务可以轻松解决这一难题,我在实践中感受到了其高效、便捷、低成本等诸多优势。
|
并行计算 数据挖掘 数据处理
Pandas性能优化与高级功能:让数据处理更高效
【4月更文挑战第16天】本文探讨了如何优化Pandas的性能和利用其高级功能。关键的性能优化方法包括选择合适的数据类型、避免数据复制、使用向量化操作、优化查询和索引,以及探索并行计算。高级功能涉及分组聚合、窗口函数、数据透视表、缺失值处理和分类数据编码。通过这些技巧,可以更高效地处理大规模数据集。
|
测试技术 Go iOS开发
8千字详解Go1.20稳定版(一)
8千字详解Go1.20稳定版(一)
604 1
|
关系型数据库 数据安全/隐私保护 PostgreSQL
基于Docker快速搭建 PostgreSQL 高可用方案
基于Docker快速搭建 PostgreSQL 高可用方案
|
芯片 流计算 内存技术
【UCIe】初识 UCIe
【UCIe】初识 UCIe
3530 3
【UCIe】初识 UCIe
|
设计模式 JSON 数据可视化
2023最新Python阅读书籍推荐
入门的书很多,但能让新手轻松看懂的就少了,作者写的思路非常清晰,对每一个知识点讲解的很到位,不多不少,对初学者来说,力道刚刚好。这本书是Python入门最好的书。《A byte-of-python》就像一把钥匙一样,开启编程世界的大门。而且篇幅也短,适合零基础小白。
3197 2
2023最新Python阅读书籍推荐
下一篇
oss教程