一、kubectl简介
kubectl是官方的CLI命令行工具,用于与apiserver进行通信,将用户在命令行输入的命令,组织并转化为apiserver能识别的信息,进而实现管理k8s各种资源的一种有效途径。
对资源的增、删、查操作比较方便,但对改的操作就不容易了。
二、kubectl的使用
2.1 基础用法
2.1.1 配置kubectl自动补全
2.1.2 查看版本信息
2.1.3 查看资源对象信息
2.1.4 查看集群信息
2.1.5 查看日志
2.2 基本信息查看
选项 | 功能 |
---|---|
--all-namespaces或 -A | 表示显示所有命令空间 |
--show-labels | 显示所有标签 |
-l app | 仅显示标签为app的资源 |
-l app=nginx | 仅显示包含app标签,且值为nginx的资源 |
-w | 持续跟踪输出 |
2.2.1 基本信息查看
2.2.1 查看master节点状态
2.2.2 查看命名空间
命令空间的作用:用于允许不同命令空间相同类型的资源重名
2.2.3 查看default命名空间的所有资源
2.2.4 创建命名空间
2.2.5 删除命名空间
2.3 创建和删除pod
2.3.1 指定pod控制器和容器镜像创建pod
选项 | 含义 |
---|---|
Deployment | 无状态应用部署 |
Statefulset | 有状态应用部署 |
Replicaset | 副本数量控制器 |
Daemonset | 确保所有节点运行同一类 Pod |
Cronjob | 计划性任务 |
2.3.1.1 run直接创建
2.3.2 删除pod
存在deployment/rc之类的副本控制器期望副本数量,删除pod也会重新拉起来。真正需要删除,需要删除其控制器。
kubectl delete pods testadpp2-xxxxx-xxxxx -n kube-public
2.4 查看资源详细信息
2.5 登入容器
2.6 扩缩容
三、项目生命周期
3.1 创建
3.2 发布
3.2.1 将资源暴露为新的service
3.2.2 暴露默认的ClusterIP类型服务
3.2.2.1 编写内容,方便查看是否能够负载均衡
3.2.2.2 访问ClusterIP测试是否能负载均衡
3.2.3 暴露NodePort类型服务
3.2.4 浏览器测试
3.2.5 查看单独容器详细信息
3.3 更新
可以对以下资源进行更新
3.3.1 对指定pod控制器的镜像版本镜像更新
3.3.2 查看更新结果
3.4 回滚
回滚操作的使用方式
3.5 删除
删除所有资源代表一个项目的结束
四、金丝雀发布
Deployment控制器支持自定义控制更新过程中的滚动节奏,如“暂停(pause)”或“继续(resume)”更新操作。比如等待第一批新的Pod资源创建完成后立即暂停更新过程,此时,仅存在一部分新版本的应用,主体部分还是旧的版本。然后,再筛选一小部分的用户请求路由到新版本的Pod应用,继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新,否则立即回滚更新操作。
4.1 创建deployment
4.2 发布服务(暴露服务)
4.3 更新并在第一轮完成后暂停
4.4 测试无误后继续更新 
4.5 总结
金丝雀发布:当我们有多个服务需要创建时;我们在创建的过程中,先创建一部分然后暂停(pause);创建的这一部分作为测试;如果测试结果正常,我们再继续(resume)创建