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

Posted Java知音_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了又一款神器:半小时带你轻松上手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 内运行。

安装基本步骤记录

Raocher的官网地址:

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

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

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

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

到github上下载安装 Rancher DeskTop软件

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

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

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

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

然后就是安装了。

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

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

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

kubectl cluster-info

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

可能遇到的坑

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

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

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

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

坑点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版本保持一致)

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

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

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

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

然后可以测试一下:

kubectl version --client

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

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

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

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

  • 方案三

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

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

基于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加端口的形式去访问验证:

访问成功。

Raocher提供的Dashboard平台

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

Pod列表

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

整套k8s的使用资源情况

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

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

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

deployment的可视化创建

pod的可视化创建

服务节点的扩容和缩容

使用感觉

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

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

  • https://docs.rancher.cn/docs/rancher2.5/cli/_index

  • https://forums.rancher.cn/

推荐

主流Java进阶技术(学习资料分享)

Java面试题宝典

加入Spring技术开发社区

PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!

以上是关于又一款神器:半小时带你轻松上手k8s的主要内容,如果未能解决你的问题,请参考以下文章

自动化快速上手--Python--元组--每天半小时

又一 VSCode 神器诞生!

又一 OCR 神器面世!网友:这也太猛了...

又一款接​私活神器!Spring Boot + Vue 通用后台管理系统,真香!!

[Overleaf] -带你初识Latex神器.快速上手.更新中...

又一款接​私活神器!Spring Boot + Vue 通用后台管理系统,真香!!