Kubernetes是个啥?

640?wx_fmt=jpeg

文/高哥

有读者和球友一直让说一下k8s也就是kubernetes。讲真、以前我也确实没咋么接触过。到目前为止学了有几个月了。我一直喜欢将复杂的事情简单了说、那就索性说说。其实,当初来现在的公司就是看中了docker和kubernetes技术。并没有在意工资。在来这家公司的时候同时还有一家的offer是给陕西移动运维数据库、工资比这里高。但是我选择来了现在的公司。前天晚上我说过、先抉而后战就是这个理。一般不做选择、做出的选择不后悔。做事情需要看重长远。


废话不多说、直接进入主题。今天用我的方式给说说k8s。kubernetes这个单词起源于古希腊。是舵手的意思。它的logo既像一个罗盘又像一张渔网。docker的logo是托着集装箱在海里畅游的鲸鱼。那么究竟kubernetes是个啥?


它实际上是一个基于全新容器技术的分布式架构的领先方案。是谷歌的一套开源架构。用来主要编排容器也就是docker。可以来很轻松自动的管理软件的生命周期。简单来说就是从部署、上线、维护、升级、收尾等阶段。不同于传统行业中的软件升级。传统行业的软件升级一般涉及到数据库的备份、应用的更新、并且这个过程当中是需要停业务的。当中包含时间成本。对于客户来说有一定的损失。而k8s升级只需要将开发写好的镜像新版本升级即可。同时可以支持用scale动态收缩升级。可升级、可降级。中间无需停应用。相对来说、很便捷。大大减少了运维、开发的成本。


同时、使用了kubernetes、那么传统架构中的那些业务 没有多大关系的底层代码模块,都可以立即从我们视线中消失。不必再费心去部署负载均衡的选型和部署实施的问题。因为在k8s集群中,会自动去调度微服务pod运行在具体的node上的。我之前说过、比如 150 斤土豆、不可能一个人背 10 斤,另外一个人背140斤。当然在同等年龄同等性别的前提下。否则还不把背的多的那个人给赠死。这个就是负载均衡机制。另外、使用kubernetes方案、不仅减少了开发成本、同时可以将更多的精力集中于业务本身、并且后期系统上线后维护的成本和难度也大大降低。


kubernetes是基于yaml、json格式的数据来运行的。支持yaml、yml格式的资源对象创建。而在yaml中需要关注两个东西,一个是list、另外一个是maps。list可以当做是一组数组。而maps比如yaml中所定义的metadata和labels为同一组maps并且缩进量一致。同时yaml书写具有一定的规则:


1、对大小写敏感。

2、使用缩进表示层级关系。

3、缩进时不允许使用tab键,但是可以使用空格。

4、缩进的空格数目不重要、只要相同层级的元素左对齐即可。

5、#号表示注释。代表从行的开始至结尾的内容是无效的。


我举个简单的yaml例子,如下图:

 
 

nginx-test.yaml
apiVersion: extensions/v1beta1   #当前格式的版本
kind: Deployment                 #当前创建资源的类型, 当前类型是Deployment
metadata:                        #当前资源的元数据
 name: nginx-test               #当前资源的名字 是元数据必须的项
spec:                            #是当前Deployment的规格说明
 replicas:                      #指当前创建的副本数量 默认不填 默认值就为‘1’
 template:                      #定义pod的模板
   metadata:                    #当前pod的元数据
     labels:                    #至少顶一个labels标签,可任意创建一个 key:value
       app: web_server
   spec:                        #当前pod的规格说明
     containers:                #容器
     - name: nginx              #是容器的名字容器名字是必须填写的
       image: nginx:latest      #镜像 镜像的名字和版本


如果需要部署的话则用kubectl create -f nginx-test.yaml就可以了。但是需要在yaml中有几个重要的关注点:


1、镜像拉取策略。一般分为Always、Never、IfNotPresent

2、pod重启策略。Always、Never、OnFailure

3、pv挂载

4、pvc挂载

5、cpu的上限和下限

6、内存memory的上限和下限。


同时它可以支持自动scale收缩副本。

kubectl scale replicas =2 -f nginx-test.yaml

也可以自动滚动升级、降级镜像版本。

kubectl  rolling-update redis-server --image=redis-server:3.0


我特地总结了一点kubernetes命令,感兴趣的同学请查收。


 
 

1、kubectl get po --查看微服务

2、kubectl get ns --查看命名空间

3、kubectl get cm--查看配置文件

4、kubectl get po -n ns名称--查看某一命名空间下的微服务

5、kubectl get pv --查看持久卷

6、kubectl get pvc --查看持久卷申请

7、kubectl logs -f 微服--查看微服日志

8、kubectl get cs--检查k8s集群是否健康

9、kubectl cluster -info --查看集群信息

10、kubectl get po -o wide--查看微服具体运行在哪个从节点node上。

11、kubectk get po -o yaml --查看pod的详细信息

12、kubectl get po -o json --以json的格式输出pod 信息

13、kubectl exec -it pod名 -n /bin/bash --进入pod

14、kubectl create 文件名.yaml --重建资源

15、kubectl apply -f 文件名.yaml --是配置文件资源重新生效


16、kubectl delete po -n --删除pod,让集群自动分配重启


17、删除各种资源

kubectl delete -f 文件名

kubectl delete pod pod名

kubectl delete rc rc名

kubectl delete service service名

kubectl delete pod --all

18、部署pod在ns上

kubectl -n ns run gaogetest --images=镜像名称 --replicas=1

19、查看pod的环境变量

kubectl exec pod名称 env -n ns名称

20、查看集群调度模式

kubectl get daemonset --all-namespaces

21、查看node内存

kubectl top node

22、查看pod内存

kubectl top pod名称


总之,一旦用上它,会很方便的。再也不用担心升级麻烦了。再也不用等到二半夜备库了。


说到这里,有读者问我什么叫脑裂。也罢,那就简单说一下。搞过数据库或者集群的应该都知道、脑裂是在高可用 HA 中的一个概念。在双机热备中或者HA中,当联机的“心跳线”断开以后,本来为一个完整的高可用系统,两台机子独立开来。成了独立的两台机子。就是你走你的阳关道、我走我的独木桥。有点进水不犯河水的意思。互相失联了。都以为对方出了故障。从而进行抢占资源。这个时候就会出现抢占资源、就是所称的脑裂现象。


还有读者让说一下 vim 的一些小技巧。其实也算不上小技巧、只是掌握了这些门道,使用起来更方便一点。


1、vim全局替换。当进行vim 文件名之后,比如需要将文本中的go全局替换为my,则采用:%s/go/my/g 再输入wq保存即可。有点跟三剑客中sed用法类似。

2、只替换本行,将go替换为my。则输入:s/go/my/g。

3、快速跳转到文本开头用gg。

4、快速跳转到文本末尾用G。

5、跳转到行首用数字0,跳转到行尾用end键。


今天就是最后一天上班了。马上要过年了。我祝大家新年快乐。


你们说我是该放假呢还是不该放假呢?


我说:高哥织梦圈目前第一期已经开始打卡linux、二期计划打卡数据库、三期计划打卡docker和kubernetes。(以上都会适合0基础读者)并且例行周五我都会输出一篇长文。2019,我们一起流弊。如果感兴趣想让自己精进,欢迎扫码。目前是 119 永久、无需续费。越早加入、越能受益。技术是得学、但是其他的我们也不能拉下,是不是。

640?wx_fmt=png

延伸阅读

今天,水太深了!

我的技术笔记,请收下。

今晚我们换个方式聊!

懂业务的技术人!

我的世界不只有coding。

640?wx_fmt=jpeg

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值