又一款神器:半小时带你轻松上手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相关推荐
- 【测评】用这款神器2小时就撸完了1天工作量的代码!爽
目 录 一 写在前面 二 测评信息 三 测评体验 3.1 安装方便 3.2 始于颜值 3.2.1 简约美观的主题 3.2.2 多变时尚的风格 3.3 忠于强大 3.3.1 快捷的搜索 3.3.2 丰 ...
- python快速编程入门教程-半小时带你快速入门Python编程,Python快速入门教程
1,Introduction to Python (Python入门) 2,Python是什么? Python 官方网站的描述 Python is a programming language tha ...
- (九)python3 只需3小时带你轻松入门——函数自定义
函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 无返回值无参函数自定义 你可以定义一个由自己想要功能的函数: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ( ...
- kafka 可视化工具_两小时带你轻松实战SpringBoot+kafka+ELK分布式日志收集
一.背景 随着业务复杂度的提升以及微服务的兴起,传统单一项目会被按照业务规则进行垂直拆分,另外为了防止单点故障我们也会将重要的服务模块进行集群部署,通过负载均衡进行服务的调用.那么随着节点的增多,各个 ...
- (附)python3 只需3小时带你轻松入门——python常用一般性术语或词语的简单解释
术语 一般解释 dict 字典 一种键值对的关系,一个键代表一个索引,一个键对应一个值 index 索引 在列表.数组.字典或一般容器中表示一个内容值的"地址",通过索引可以获取值 ...
- (十)python3 只需3小时带你轻松入门——模块与包
模块 一般情况下,是一个以.py为后缀的文件.使用import导入.我们创建一个py文件,名为myprint,该py文件作为模块,在里面定义一个函数名为myprint: def myprint():p ...
- (十一)python3 只需3小时带你轻松入门——面向对象
类 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 例如: 人是一种类型,拥有年龄.身高.体重.性别等属性.具体一个人是一个对象,例如小明:小明 ...
- (八)python3 只需3小时带你轻松入门——List 与 dict 的常用操作
List定义 定义:list1 = ['name','python','sun','dog'] list获取:list1[0]->name,list1[3]->sun list修改:lis ...
- (七)python3 只需3小时带你轻松入门——List与dict
List列表 python中最基本的数据结构之一.序列(或者说集合)中的每个元素都分配一个数字用来表示它的位置(索引),第一个索引是0,第二个索引是1,依此类推. 索引 索引最大值不能超过当前对象的最 ...
最新文章
- Linux 服务器上快速配置阿里巴巴 OPSX NTP服务
- 在C#中使用XML指南之读取XML
- python入门指南百度云-Python入门指南
- [Python图像处理] 三十六.OpenCV图像几何变换万字详解(平移缩放旋转、镜像仿射透视)
- 领域驱动设计:浅析 VO、DTO、DO、PO 概念、区别、用处
- 为了建设我们的飞鸽传书2011
- ajax mvc3 razor 分页
- 转载 Div+css浏览器兼容实例分析(一)
- 《Cortex-M0权威指南》之Cortex-M0编程入门
- 重庆自考学历计算机应用基础考试,2017年自考计算机应用基础模拟试题1
- 第一课.axis配置和写法入门
- gulp plugins
- [总结] Min-Max容斥学习笔记
- Configure Log Shipping
- google翻译自动检测语言翻译成中文
- 算法精解 c语言描述 pdf,【2020新书】C语言算法导论,Introducing Algorithms in C,174页pdf...
- Android 平台下的即时通讯
- 浏览器安全检查5秒解决方案
- What is ReactOS
- Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs