文章目录
- 前言
- 一、k8s基本命令
-
- [1.1 查看命令](#1.1 查看命令)
- [1.2 创建命令](#1.2 创建命令)
- [1.3 删除命令](#1.3 删除命令)
- [1.4 发布命令](#1.4 发布命令)
- [1.5 更新命令](#1.5 更新命令)
- [1.6 回滚命令](#1.6 回滚命令)
- 二、发布策略
-
- [2.1 重建发布](#2.1 重建发布)
- [2.2 滚动更新](#2.2 滚动更新)
- [2.3 蓝绿发布](#2.3 蓝绿发布)
- [2.4 金丝雀发布](#2.4 金丝雀发布)
- [2.5 灰度发布](#2.5 灰度发布)
- 三、资源配置清单
-
- [3.1 查看资源配置清单](#3.1 查看资源配置清单)
- [3.2 编写资源配置清单](#3.2 编写资源配置清单)
- 总结
前言
一、k8s基本命令
1.1 查看命令
kubectl基本命令工具
kubectl get node ------------------------------获取集群信息

kubectl get pod ------------------------------获取默认命名空间中所有pod信息

kubeclt get cs ---------------------------------------获取k8s集群组件信息

kubectl get svc(service) ------------------------------获取默认命名空间service资源

kubectl get pod -o wide ------------------------------获取更加详细的pod容器信息

kubectl version ------------------------------------------------查看版本信息
kubectl api-resources ------------------------------------------------查看资源对象简写
kubectl cluster-info ------------------------------------------------查看集群信息
1.2 创建命令
kubectl create ns 命名空间名字 ------------------------------------创建命名空间

kubectl create deployment pod名字 --image=nginx(标签)-n 命名空间 ------------------------------创建pod容器存放在命名空间中

kubectl -n 命名空间名字------------------------------指定命名空间
kubectl --replicas=n ------------------------------穿建pod节点时穿建n个副本
大致意思为:假设n=3,那么在创建容器时会创建出3个一模一样的容器进行负载均衡,访问路径一样。
1.3 删除命令
kubectl delete ns 命名空间名字 ------------------------------------删除命名空间

kubectl delete delopyment pod名字 -n 命名空间名字 ------------------------------删除命名空间内的pod容器

这里要注意,在创建pod时,会创建一个副本,它具有健康恢复的功能,当pod容器死亡,它会新建一个pod,并沿用死亡pod容器的数据,因此在删除时,要连同pod容器一起删了。
1.4 发布命令

谈到发布方面就不得不提及k8s的四种端口,和两种访问方式
四种端口:NodePort、Port、targetPort、containerPort
Nodeport:k8s集群对外访问的端口,访问方式为NodeIP:NodePort
Port:k8s集群对内访问的端口,指service端口
targetPort:k8s集群中,pod中的容器映射到pod的pod端口
containerPort:容器本身的端口
两种访问方式:
1、对外访问
客户端通过NodePort访问k8s集群 ------------------》Nodeport映射到pod的targetPort ---------------------》targetPort映射到容器本身的containerPort端口,最终实现访问。
2、对内访问
内网客户端通过Port访问k8s集群 ------------------》Port映射到pod的targetPort ---------------------》targetPort映射到容器本身的containerPort端口,最终实现访问。
(这里我们做对内访问)
第一步创建容器
kubectl create deployment nginx --image=nginx:1.14 --port=80 --replicas=3 -n xjy
--port:这里指容器本身端口
--replicas:这里指三个副本,三个副本进行负载均衡
--image=nginx:1.14:这里指标签,指拉取1.14版本的nginx
-n :指定命名空间

第二步 设置并暴露端口
kubectl expose deployment nginx -n xjy --port=80 --target-port=80 --name=nginx-service --type=NodePort
--port:这里指service端口,也就是对内访问端口
--targetPort:这里指pod中的容器映射到pod的pod端口
--name:service的名字
--type:将k8s端口暴露,使外界可以访问

第三步 尝试访问宿主机ip:port(此port是service port映射到宿主机的端口,service port之前定义了为80)

1.5 更新命令
更新大家应该都不陌生,这里指版本更新
kubectl set image deployment/nginx nginx=nginx:1.9.1 ------------------------将已有的nginx容器版本更新为1.9.1
curl -I 宿主机ip:port ------------------------------查询版本信息

kubectl set image deployment nginx-server nginx=nginx:1.15 -n yjs ------------------------将yjs命名空间中的nginx-server更新为1.15版本

1.6 回滚命令
回滚主要用于版本回滚
kubectl rollout history deployment/nginx ------------------查看默认命名空间中nginx容器的历史版本点

kubectl rollout undo deployment nginx -n yjs ------------------------将yjs命名空间中的nginx回滚到上一个版本
kubectl rollout undo deployment/nginx --to-revision=1 ------------------------回滚到自定义版本点

kubectl rollout status deployment/nginx ------------------------检查回滚状态

二、发布策略
发布策略分为五种:蓝绿发布、灰度发布、金丝雀发布、滚动更新(k8s默认方式)、重建发布
2.1 重建发布
原理:停止k8s集群,将所有pod容器全部删除,等待更新后的pod容器建好后再开启
特点:这种方式对用户的体验感差,但是配置简单,而且不会有版本共存问题。
2.2 滚动更新
滚动更新是k8s的默认发布方式

原理:就拿上图举例,滚动更新是一个比较快速的过程,它会每次创建一台更新后的pod加入k8s集群,并且删掉一台pod,持续这样的操作,直到所有pod都是更新后的,这样的更新可以保证集群的持续运行,不用担心停机,
用户在使用时,更新了的用户可以访问更新的容器,没更新的用户访问没更新的容器。
特点:
1、不停机更新
2、更新速度快
3、有不同版本共存的情况(时间短)
4、无额外资源消耗
2.3 蓝绿发布

原理:在更新前准备两套k8s集群环境,一套用于生产,也就是用于实际的提供用户访问(蓝),另一套用于测试和版本更新(绿),不需要运行,等到绿环境的集群实现了版本更新并通过测试后,修改路由规则,使server port转发访问到绿环境的集群,从而实现无缝切换的更新。
特点:
1、更新与回滚速度快,只需要改变访问路径(路由规则)
2、更新不需要停机(几乎是瞬间完成)
3、成本高,资源利用率为50%
4、流程简单
2.4 金丝雀发布

原理:基本原理为根据更新百分比来进行流量转移,比如更新百分比为10%,那么它会先让百分之十的并发量去访问新版本集群,并且在用户使用过程中,会实时监控新版本的使用情况,如果没有发现问题就会将更新百分比持续增加,10%、20%、30%直到100%流量,最后完成更新,如果中间使用发现问题就会立马停止发布,并全部回滚到旧版本。
特点:
1、这种发布方式保证了使用正常
2、风险可控,因为是小流量慢慢更新
3、更新时间较慢
2.5 灰度发布
与金丝雀发布几乎一样,只不过测试阶段不会将新版本对外访问,而是通过内部人员进行测试,发布方式总的来说一样,只是用于测试的用户不一样,金丝雀是外部访问用户,灰度发布是内部人员,因此原理这里就不在说明了。
三、资源配置清单
3.1 查看资源配置清单
kubectl get deployment nginx -o yaml ------------------------查看资源配置清单

3.2 编写资源配置清单
资源配置清单类似于容器中的compose,我们可以用资源配置清单创建pod中的容器。
Kubernetes 支持 YAML 和 JSON 格式管理资源对象
JSON 格式:主要用于 api 接口之间消息的传递
YAML 格式:用于配置和管理,YAML 是一种简洁的非标记性语言,内容格式人性化,较易读
YAML 语法格式:
1、大小写敏感
2、使用缩进表示层级关系(缩进两格)
3、不支持Tab键制表符缩进,只使用空格缩进
4、缩进的空格数目不重要,只要相同层级的元素左侧对齐即可,通常开头缩进两个空格
5、符号字符后缩进一个空格,如冒号,逗号,短横杆(-)等
6、"---"表示YAML格式,一个文件的开始,用于分隔文件间
7、"#"表示注释
kubectl api-versions ------------------------查看api 资源版本标签

总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。