k8s入门
这也是今天用心写的一篇原创文,带段子的技术文。也许有的读者看不懂,没关系,文中有段子,看段子就好了。学习任何东西都要去在基于『理解』的基础上去学,这样往往会事半功倍。也有人说我有点高调,但见过我的人都应该有所接触,现实中完全不是这样的。别人在给我说观点的时候,更多时候我只是一个倾听者。哪怕听到有一些不太认同的观点,我也基本不会去反驳。
废话有点多,前天我生日,这是我写过最帅的代码!这篇文章赞赏超过 100 多,感谢大家的支持和认可。我继续努力,争取把我所学到的,见到的都后续分享出来,能有帮助就好。我本身就是个念旧的人,身上的钱包从大二开始到现在用了8年左右没换过,媳妇还给我送了一个钱包,大概是希望继续在多多赚钱吧。。
因为最近工作中需要用到k8s,基本白天去公司实操,晚上回来看书。一口气买了两本技术类书籍。今天就把我所学到的分享给大家,对不起,久等了。
记得入职当天,因为我们组就 3 个人。负责公司的 k8s 集群架构。责任比较重大,一旦环境出问题,意味着所有的开发和测试都要歇菜休息,大家想想出问题了,他们肯定不愿意,白天浪费太多的时间意味着他们都要晚上加班。要搁我身上,我也不愿意。
有读者问什么是 k8s? 用来干什么的?这个逼格有那么高吗?
k8s其实是一个编排工具,在容器也就是 docker 的基础之上去管理软件应用生命周期的一个工具,主要运行在 linux 上。说到这里得插入一个有趣得题外话题:公司有一个测试妹子,没用过 linux ,不知道如何去链接 linux ,不知道如何在 linux上去解压安装包。同事抓住了机会又调侃了一把测试妹子,说『跑着去啊,右键解压就可以了』。结果妹子去照做了,每成功。我估计他们接下来有戏了。所以多学习还是有好处的。从创建应用——应用部署——提供服务——扩容缩容——应用迭代等一系列流程全部是由它管理的。不用像传统的行业,在升级或者故障切换时还需要去停业务或者停止数据库,可以做到快速切换升级,不停止用用。
k8s集群
集群,为什么要使用集群? 说白了,三个臭皮匠顶个诸葛亮,众人的力量大呀。一根筷子一下就掰断了,多根筷子使劲也很难把它掰断。这个就是机群的作用,你坏了我上,我坏了你上。理解之后没什么难的。看上去名字很唬人,实际上也就是那么一回事。
k8s概念
这个就跟学习数据库是一样的,首先理解数据库能干什么?由哪些东西组成。比如它是存客户业务数据的,由表、表空间等等一些东西组成。在k8s中有这么一些概念:cluster、Master、Node、Pod、Rc、Service、Namespace以及yaml文件、helm包、kube-proxy等等。本身就是一个分布式高可用的东西。
cluster。它是计算、存储、网络资源的整合。k8s利用这些资源去运行各种基于容器的应用。
Master。集群主节点,这个相当于人的大脑,我们的一切行为都是大脑去调配。它主要负责分配和调度任务。决定将应用放在哪里去执行。Master运行与 linux 上,可以使物理机也可以是虚拟机。为了可以实现高可用,可以部署多个Master节点。
Node。它的职责是听从Master的调配并负责容器 docker 的应用。Node由Master管理,去负责监控并汇报容器的状态,同时根据 Master的要求去管理容器的生命周期。它也是运行在 linux 上,可以是物理机也可以是虚拟机。
Pod。Pod是k8s调度的最小单元。每一个Pod包含一个或多个容器。pod中的容器会作为一个整体被Master调度到一个node上运行。
rc控制文件。主要用来管理配置。
service。顾名思义提供服务的,想要跑起来非得靠它不可。
Namespace。其实就类似于数据库中有多个用户,创建了30个视图,每个视图需要分配给不同的用户,并同时将他们的资源切割开来。便于管理。
helm包。k8s用来打包的工具。其实就类似与debian、乌班图得apt,红帽和centos上的 yum 仓库一样。而helm就是 k8s 上的包管理工具。
kube-proxy。它得作用主要用来做负载均衡功能。什么叫负载均衡?比如这里有 180 斤 土豆,大家平均分配哈,要不然两个人背了 30 斤,你让剩下的那个人情以何堪呀?
k8s常用命令
# 查看集群信息
kubectl cluster-info
# 查看各组件信息
kubectl -s http://localhost:8080 get componentstatuses
# 查看pods所在的运行节点
kubectl get pods -o wide
# 查看pods定义的详细信息
kubectl get pods -o yaml
# 查看rc信息
kubectl get rc
# 查看service的信息
kubectl get svc
# 查看集群节点信息
kubectl get nodes
# 创建
kubectl create -f 文件名
# 重建
kubectl replace -f 文件名 [--force]
# 删除
kubectl delete -f 文件名
kubectl delete pod pod名
kubectl delete rc rc名
kubectl delete service service名
kubectl delete pod --all
docker打镜像:
一般在windows上将压缩包上传到linux上:
docker -i load + 名称用来加载;
docker images 用来列出本机上的镜像;
给镜像打标签:
docker tag+镜像名。
docker push推镜像;
docker pull拉镜像
三天学习的结果,我争取继续努力。平时没什么时间去追剧,周六熬夜看了下『沙海』,有人说这部剧不错,也有人吐槽这部剧结局不太看好。但是给我印象最深刻的是吴三石的那个老师说的那段话「复读三个月考了六百六十六分,人才啊,你就是老师的骄傲啊,看来老师的努力没有白费」。你看说话都说的这么有水平。六百六十六,不就是 666 么?要我看,这个老师绝b人才啊,有木有?
往期文章:
懂业务的技术人!
我继续努力 。