记得之前使用Minikube安装K8S的时候,给分3G内存都嫌小!最近发现一个K8S的经量级实现K3S,最低0.5G内存就能运行起来,安装方便,和K8S用起来区别不大。推荐给大家,希望更多没高端机器的朋友也能够把K8S玩起来!

K3S简介

K3S是一个完全符合Kubernetes的发行版。可以使用单一二进制包安装(不到 100MB),安装简单,内存只有一半,最低0.5G内存就能运行。

为什么叫K3S?开发者希望K3S在内存占用方面只有K8S的一半,Kubernetes是一个10个字母的单词,简写为K8S。那么一半大小就是5个字母的单词,简写为K3S。

安装

使用官方提供的脚本安装十分方便,一个命令即可完成安装!

  • 使用脚本安装K3S,同时会安装其他实用程序,包括kubectlcrictlctrk3s-killall.shk3s-uninstall.sh

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
  • 安装完成后提示如下信息,并且会将K3S注册为Linux中的服务;

Complete!
[INFO]  Creating /usr/local/bin/kubectl symlink to k3s
[INFO]  Creating /usr/local/bin/crictl symlink to k3s
[INFO]  Skipping /usr/local/bin/ctr symlink to k3s, command exists in PATH at /usr/bin/ctr
[INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
[INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO]  env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO]  systemd: Creating service file /etc/systemd/system/k3s.service
[INFO]  systemd: Enabling k3s unit
[INFO]  systemd: Starting k3s
  • 可以查看下服务的运行状态,此时显示状态为active

[root@linux-local k3s]# systemctl status k3s
● k3s.service - Lightweight KubernetesLoaded: loaded (/etc/systemd/system/k3s.service; enabled; vendor preset: disabled)Active: active (running) since Thu 2021-01-28 10:18:39 CST; 2min 0s agoDocs: https://k3s.ioProcess: 14983 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)Process: 14981 ExecStartPre=/sbin/modprobe br_netfilter (code=exited, status=0/SUCCESS)Main PID: 14986 (k3s-server)Tasks: 71Memory: 776.3M

使用

我们使用kubectl命令操作K3S与之前操作Minikube中的K8S并没有什么区别,这次还是创建一个Nginx的Deployment,然后通过创建Service将其暴露到外部访问。

创建集群

  • 由于K3S默认安装了kubectl工具,我们可以直接使用它,比如查看kubectl的版本号;

kubectl version
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.2+k3s1", GitCommit:"1d4adb0301b9a63ceec8cabb11b309e061f43d5f", GitTreeState:"clean", BuildDate:"2021-01-14T23:52:37Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.2+k3s1", GitCommit:"1d4adb0301b9a63ceec8cabb11b309e061f43d5f", GitTreeState:"clean", BuildDate:"2021-01-14T23:52:37Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
  • 还可以查看集群详细信息;

kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:6443
CoreDNS is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
  • 查看集群中的所有Node,可以发现K3S和之前的Minikube一样创建了一个单节点的简单集群。

kubectl get nodes
NAME          STATUS   ROLES                  AGE   VERSION
linux-local   Ready    control-plane,master   11m   v1.20.2+k3s1

部署应用

  • 指定好应用镜像并创建一个Deployment,这里创建一个Nginx应用;

kubectl create deployment nginx-deployment --image=nginx:1.10
  • 查看所有Deployment;

kubectl get deployments
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   1/1     1            1           6s

查看应用

  • 查看Pod的详细状态,包括IP地址、占用端口、使用镜像等信息;

kubectl describe pods
Name:         nginx-deployment-597c48c9dd-j49bc
Namespace:    default
Priority:     0
Node:         linux-local/192.168.5.15
Start Time:   Thu, 28 Jan 2021 10:53:14 +0800
Labels:       app=nginx-deploymentpod-template-hash=597c48c9dd
Annotations:  <none>
Status:       Running
IP:           10.42.0.7
IPs:IP:           10.42.0.7
Controlled By:  ReplicaSet/nginx-deployment-597c48c9dd
Containers:nginx:Container ID:   containerd://560bbeefc9c5714b92ae9d0a1305c2b8746082f4aa11791a2b6e1f4288254ef0Image:          nginx:1.10Image ID:       docker.io/library/nginx@sha256:6202beb06ea61f44179e02ca965e8e13b961d12640101fca213efbfd145d7575Port:           <none>Host Port:      <none>State:          RunningStarted:      Thu, 28 Jan 2021 10:53:16 +0800Ready:          TrueRestart Count:  0Environment:    <none>Mounts:/var/run/secrets/kubernetes.io/serviceaccount from default-token-fnrf7 (ro)
Conditions:Type              StatusInitialized       True Ready             True ContainersReady   True PodScheduled      True
Volumes:default-token-fnrf7:Type:        Secret (a volume populated by a Secret)SecretName:  default-token-fnrf7Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300snode.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:Type    Reason     Age   From               Message----    ------     ----  ----               -------Normal  Scheduled  38s   default-scheduler  Successfully assigned default/nginx-deployment-597c48c9dd-j49bc to linux-localNormal  Pulled     38s   kubelet            Container image "nginx:1.10" already present on machineNormal  Created    38s   kubelet            Created container nginxNormal  Started    37s   kubelet            Started container nginx
  • 进入容器内部并执行bash命令,如果想退出容器可以使用exit命令。

kubectl exec -it nginx-deployment-597c48c9dd-j49bc -- bash

外部访问应用

  • 创建一个Service来暴露nginx-deployment这个Deployment:

kubectl expose deployment/nginx-deployment --name="nginx-service" --type="NodePort" --port=80
  • 查看所有Service的状态;

kubectl get services
NAME            TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.43.0.1     <none>        443/TCP        77m
nginx-service   NodePort    10.43.29.39   <none>        80:31494/TCP   10s
  • 在Linux服务器上通过CURL命令即可访问Nginx服务,此时将打印Nginx主页信息;

curl localhost:31494
  • 相比Minikube在虚拟机中安装容器化应用,K3S直接在本机上安装,直接打开防火墙端口即可在外部访问;

# 开启端口
firewall-cmd --zone=public --add-port=31494/tcp --permanent
# 重启防火墙
firewall-cmd --reload
  • 在外部即可访问Nginx主页,访问地址:http://192.168.5.15:31494

总结

K3S确实是一个很好用的K8S发行版本,不仅安装方便,而且内存占用也降低了。由于直接在本机上安装容器化应用,外部访问也方便了!

都看到这了,确定不来个点赞在看鼓励下么?这将是我创造更多优质文章的最大动力!

推荐阅读

  • 万万没想到,“红孩儿”竟然做了程序员,还是CTO!

  • 特斯拉仅25人花了4个月研发出新ERP,服不服?

  • 再见,仙剑之父!再见,姚壮宪!

  • 程序员1年5年和10年,差了1000倍...

  • 看看人家那开源项目文档写的,那叫一个友好!

  • 再见命令行!K8S傻瓜式安装,图形化管理真香!

  • 40K+Star!Mall电商实战项目开源回忆录!

  • mall-swarm 微服务电商项目发布重大更新,打造Spring Cloud最佳实践!

学习不走弯路,整理了套mall专属学习路线,公众号回复「学习路线」自取。

技术群人数快破万了,公众号回复「加群」和小伙伴们一起交流吧!

据说只有高端机器才配运行K8S,网友:1G内存的渣渣跑起来了!相关推荐

  1. 彩电业入“大周期” 三星等品牌为何力推高端大屏

    彩电业的格局瞬息万变,这一方面是日系电视玩家全线溃败,另一方面是微鲸.乐视等互联网电视品牌快速崛起但仍在继续摸索.而以三星和LG为代表的两股韩系势力则成为这个产业舞台上少有的胜利者,三星稳健.LG激进 ...

  2. 对标苹果,小米的高端不只是学习

    纵观手机市场发展的30多年里,随着产品不断地迭代更新,目前国内逐渐形成稳定的竞争格局.小米作为参与者,在产品上不断发力,于10月推出了新CIVI系列,瞄准女性市场. 近日,小米手机又有新的消息传来.小 ...

  3. 618大促:手机品牌“神仙打架”,高端市场“谁主沉浮”?

    持续近一个月的"618",告一段落. 尽管今年的618没有那么火热,但还是有不少用户会选择在这个时间段来消费一波,其中购买电子产品就能感受到实实在在的优惠.一位从事电商运营的朋友表 ...

  4. 高端物理学名词_什么是物理高端备课?

    邢红军 首都师范大学 物理系 教授 博士 物理教学论博士生导师 各位老师,大家晚上好!首先感谢杨德发老师的盛情邀请,让我有机会与老师们就物理高端备课进行交流,我欣然接受.同时感谢朱行建老师在他的群转播 ...

  5. 联发科彻底慌了,不仅高端市场保不住,中端市场也被高通压制

    高通推出的骁龙7+gen2(简称骁龙7G2)实在太猛,它不仅性能强还兼有功耗低等优点,具备挑战联发科高端芯片的实力,中端芯片更是碾压联发科,台媒称联发科已大举削减原计划推出的芯片款式,不得不推倒重来. ...

  6. 荣耀的高端征途:一场“自我超越”的竞赛

    "我们将重新定义手机". 十五年前,美国旧金山.当乔布斯在Macworld博览会舞台上拿出第一代 iPhone,用单手指演示滑动解锁时,他也滑出了一个新时代,世界为之沸腾. 从无到 ...

  7. 高端NEV社媒阵地蔚来霸榜,理想消费者互动“最高频”

    Social Power 核心解读 本月新车上市热度贡献大 前三位置有变 社媒阵地,越来越成为新车上市的发酵"必杀场". 由数说故事行业首创的SMI社媒心智品牌榜6月汽车高端NEV ...

  8. android刺激战场不卡机型,835不是安卓高端机? 刺激战场: 不是

    <刺激战场>最新优化,为高配机型增加超高.极限帧数选择,还为高端机器增加了抗锯齿功能,很多配置了835的机型玩家立即兴致勃勃的打开游戏,准备体验一把,却发现自己机型并没有增加这些功能.有的 ...

  9. 科技PRO实力测评:高端按摩椅市场综合PK,究竟谁才配得上机皇?

    科技PRO实力测评:高端按摩椅市场综合PK,究竟谁才配得上机皇? [原创]哈咯!大家好!我是你们的科技潮人刘雷.从开场视频中大家也看到了,这期的视频,我们给大家带来的主角正是当下大热的按摩椅产品,但是 ...

最新文章

  1. 干货丨达沃斯群英纵论人工智能,核心观点汇总
  2. CentOS7加入windows 2008 AD域
  3. 获取数组中的最大、最小值
  4. Android5.0水波纹效果ripple实现
  5. Win10配置Tensorflow_Object_Detection_API
  6. atheros 9531 uboot spi flash 32m支持
  7. Java:使用Java调用打印机进行打印(JPG、PDF和Word三种文件格式)实现
  8. 任正非为什么要抛弃华为基本法
  9. 免费使用短信服务接口 ----用Java实现
  10. 2021暑期学习之旅
  11. 联想SR158 安装CentOS7系统
  12. python计算算术平方根sqrt()
  13. linux 目录权限上下文,谢烟客---------Linux之文件安全上下文及特殊权限位
  14. caj格式如何转成pdf格式
  15. sql如何求连续打卡
  16. Uni-App - 接口 - 第三方登录(H5+ APP)(Hcoder 版)
  17. android 加速度模块,Android传感器API之:加速度Accelerometer功能源码
  18. 分布积分详解(lnx积分)
  19. 内网穿透工具--Sunny-Ngrok讲解
  20. 【深入理解计算机系统 01】计算机系统漫游

热门文章

  1. Unity Hair 毛发系统 初体验
  2. css中字体下划线样式,css下划线 浅谈css自定义下划线
  3. 潜渊症设置语言后闪退bug解决
  4. Java Object 类方法解析
  5. MySql错误处理- 错误代码和消息
  6. 派大星python代码_一些简单的python例子
  7. 带宽测试初探(UDP发包方式)
  8. Java版支付宝手机网站支付
  9. android桌面雪花效果代码,Android营造雪花和雨滴浪漫效果
  10. 从滚动条到画布的几个代码文件——Python学习笔记之十七