一个公司是否可以做多个网站,国产服务器前三强,WordPress外链方法,wordpress怎么设置小图标一、kebuctl简介:
kubectl 是官方的CLI命令行工具#xff0c;用于与 apiserver 进行通信#xff0c;将用户在命令行输入的命令#xff0c;组织并转化为 apiserver 能识别的信息#xff0c;进而实现管理 k8s 各种资源的一种有效途径。
对资源的增、删、查操作比较方便用于与 apiserver 进行通信将用户在命令行输入的命令组织并转化为 apiserver 能识别的信息进而实现管理 k8s 各种资源的一种有效途径。
对资源的增、删、查操作比较方便但对改的操作就不容易了。 kubectl的命令大全:kubectl --help k8s中文文档: http://docs.kubernetes.org.cn/683.html 二、kebuctl的使用
1.基础用法 //查看版本信息 kubectl version //查看资源对象简写 kubectl api-resources //查看集群信息 kubectl cluster-info //配置kubectl自动补全 source (kubectl completion bash) //node节点查看日志 journalctl -u kubelet -f 2.基本信息查看
kubectl get resource [-o wide|json|yaml] [-n namespace]
获取资源的相关信息-n 指定命令空间-o 指定输出格式
获取pod资源 指定命令空间 指定输出格式 resource可以是具体资源名称如pod nginx-xxx也可以是资源类型如pod或者all(仅展示几种核心资源并不完整)--all-namespaces 或 -A 表示显示所有命令空间
--show-labels 显示所有标签
-l app 仅显示标签为app的资源
-l appnginx 仅显示包含app标签且值为nginx的资源 -w持续跟踪输出 2.1查看master节点状态
//查看 master 节点状态
kubectl get componentstatuses
kubectl get cs 2.2查看命名空间
//查看命令空间
kubectl get namespace
kubectl get ns
//命令空间的作用用于允许不同 命令空间 的 相同类型 的资源 重名的 2.3查看default命名空间的所有资源
//查看default命名空间的所有资源
kubectl get all [-n default] 2.4查看服务(Service)资源的状态
//用于获取服务(Service)资源的状态kubectl get svc
//简写成svc 2.5创建命名空间app
//创建命名空间app
kubectl create ns app
//查看命名空间
kubectl get ns 2.6删除命名空间app
//删除命名空间app
kubectl delete ns app
//查看命名空间
kubectl get ns 3.创建和删除pod
3.1指定pod控制器和容器镜像创建pod
Deployment无状态应用部署Statefulset有状态应用部署Replicaset副本数量控制器Daemonset确保所有节点运行同一类 PodCronjob计划性任务
//在命名空间kube-public 创建副本控制器deployment来启动Podnginx-wl
kubectl create deployment nginx-0l --imagenginx -n kube-public
#创建一个名为nginx-01的deployment(无状态应用部署)
#指定为nginx镜像且指定为kube-public命名空间 #査看kube-pubic命名空间资源#创建成功 //用run直接创建——自主式pod
kubectl run gg --imagenginx -n kube-public
//直接创建删除后不会拉取镜像
//run存储在节点中 3.2描述某个资源的详细信息
kubectl describe 资源类型kubectl describe 资源类型/pod名 3.3查看命名空间kube-public 中的pod 信息
//查看命名空间kube-public 中的pod 信息
kubectl get pods -n kube-public 3.4扩容-缩容:
kubectl scale 资源名 --replicasn #n为数字大于当前副本数则是扩容小于则是缩容 3.5登录容器
kubectl exec -it pod名 -c 容器名 bash/sh
#区别于docker exec只能登入本机的docker#如果pod中只有一个容器则无需-c指定kubectl exec -it pod名 -c 容器名 -- 命令 #可以实现不进入容器执行 -- 后的命令3.6删除pod资源:
由于存在deployment/rc之类的副本控制器删除pod也会重新拉起来,需删除其控制器
kubectl delete pods pod名--force --grace-period0 #添加该选项强制删除(无需等待)
#grace-period表示过渡存活期默认30s在删除pod之前允许POD慢慢终止其上的容器进程从而优雅退出0表示立即终止pod 3.7删除副本控制器:
kubectl delete deployment 资源名 -n kube-public 三、项目的生命周期: 创建 -- 发布 -- 更新 -- 回滚 -- 删除 1.创建 kubectl create:
●创建并运行一个或多个容器镜像。
●创建一个deployment 或job 来管理容器。
//启动 nginx 实例暴露容器端口 80设置副本数 3
kubectl create deployment nginx --imagenginx:1.14 --port80 --replicas3
//为deployment的nginx创建service并通过Service的80端口转发至容器的80端口上,
Service的名称为nginx-service类型为NodePort 2.发布 kubectl expose:
●将资源暴露为新的 Service。
暴露默认的 ClusterIP 类型服务
kubectl expose deployment 控制器名称 --name服务名称 --port服务端口 --target-portpod端口 访问ClusterIP测试是否能负载均衡 访问ClusterIP测试是否能负载均衡 暴露 NodePort 类型服务 kubectl expose deployment 控制器名称 --name服务名称 --port服务端口 --target-portpod端口 --typeNodePort 浏览器访问测试 查看单独容器详细信息 3.更新 kubectl set
●更改现有应用资源一些信息。
查看版本 更改版本 4.回滚 kubectl rollout
回滚操作的使用方式 kubectl rollout history pod控制器 控制器名 #查看该资源的更新历史 5.删除 kubectl delete
删除所有资源代表一个项目的结束
kubectl delete pod控制器 控制器名称 #删除pod控制器kubectl delete 服务 服务名称 #删除服务 四、金丝雀发布
Deployment控制器支持自定义控制更新过程中的滚动节奏如“暂停(pause)”或“继续(resume)”更新操作。比如等待第一批新的Pod资源创建完成后立即暂停更新过程此时仅存在一部分新版本的应用主体部分还是旧的版本。然后再筛选一小部分的用户请求路由到新版本的Pod应用继续观察能否稳定地按期望的方式运行。确定没问题之后再继续完成余下的Pod资源滚动更新否则立即回滚更新操作。这就是所谓的金丝雀发布。 当我们有多个服务需要创建时我们在创建的过程中先创建一部分然后暂停(pause)创建的这一部分作为测试如果测试结果正常我们再继续(resume)创建。 1.创建 2.暴露端口 3.更新并在第一轮完成后暂停
没更新前的版本 更新deployment的版本并配置暂停deployment 查看 4.测试无误后继续更新 等待全部更新 总结
生命周期
创建 》发布》更新 》回滚 》删除
创建 kubectl create 《资源名称》 --image《镜像名称》 --port 端口 --replicas target port
发布
kubectl expose 《资源类型》《资源名称》 --port -targetport typeclusterIP|Nodeport
更新
kubectl set image资源类型资源名称容器名镜像名 标签版本
回滚
kubectl rollout unde资源类型资源名称默认是回滚到上一个版本状态
--to-revision回滚的指定版本
kubectl rollout historylstatus 资源类型资源名称
删除kubectl delete 资源类型资源名称》 蓝绿发布
两套设备 进行新旧版本的切换
好处用户无感知业务稳定
缺点资源消耗2倍 成本特别高
滚动
按照他的比例一部分一部分滚动更新k8s的默认更新机制
无创建一点的比例pod先创建在删除一定的旧的pod
灰度发布金丝雀
先更新一部分pod然后在暂停更新
安排一小部分的用户流量去访问更新pod来进行测试当测试没问题后在扩大比例 直到全部更新完成为止
当yaml配置文件发送改动成功后使用create创建的资源想要更新的时候需要先delete删除原有资源在去通过yaml文件创建资源使用apply创建的资源想要更新可以直接在执行kubectl apply -f 更新