Kubectl 命令管理

Kubectl 帮助信息


命令:kubectl --help

常用的命令:

create:创建资源(可以从文件或这标准性输入)
expose:暴露资源。把资源对外提供出去(提供端口)
run :运行指定镜像
set :设置指定的对象(例如版本号)
explain:查询资源文件
get:显示信息
edit:编辑指定资源
delete:删除
更新机制:

rollout:回滚
scale:创建多个副本–副本内容相同(弹性伸缩)
autoscale:自动调整(自动化弹性伸缩)
群集管理命令:

certificate:修改certificate资源(例如审批通过node节点申请加入集群的请求)
cluster-info :显示集群信息
top:显示更详细的原站点信息
cordon:标记node 为unscheduleable(状态)
uncordon:标记node 为scheduleable(状态)
taint:更新一个或多个节点信息
问题和调试命令:

describe:显示一个指定的源或组的源信息
logs:输出容器在Pod中的日志
attach:把指定组件运行在指定容器中
exec:进入一个pod资源
port-forward:转发一个霍多个本地的端口到一个pod中
proxy:运行一个代理到k8s的apiserver
cp:复制
auth:验证

Kubectl 管理项目命令

项目完整的生命周期如下:

创建–》发布–》更新–》回滚–》删除

kubectl run 命令

格式如下:

kubectl run NAME --image=image [–env=“key=value”] [–port=port] [–replicas=replicas] [–dry-run=bool] [–overrides=inline-json] [–command]  [COMMAND] [args…] [options]
参数简介:

NAME:资源名称
–image=image:指定镜像
[–env=“key=value”]:设置Pod中一些参数/变量
[–port=port] :提供的端口
[–replicas=replicas]:副本集的数量
[–dry-run=bool]:试运行的池
[–overrides=inline-json]:是否在线
[–command][COMMAND] [args…] [options]:其他的参数指令
示例:
#创建一个nginx 资源,指定对外提供端口为80,副本集为3
kubectl run nginx-deployment --image=nginx --port=80 --replicas=3

在这里插入图片描述

查看Pods状态

kubectl get pods
#apiserver会自动控制创建Pod(以上已有一个pod为running状态)

在这里插入图片描述

#过一会再次查看
kubectl get pods
#已全部为运行状态

在这里插入图片描述

查看资源创建的位置

kubectl get pods -o wide
#可见,在node1节点创建了2个副本,在node2节点创建了一个副本

在这里插入图片描述

查看所有资源信息

kubectl get all
#以上为刚刚创建的3个副本资源
#以上的service资源信息为之前创建的对外提供服务的资源(10.0.0.1为集群内部的网关)
#以上deployment 为控制器的资源,想要创建pod资源,需要先调用控制器的资源去控制创建Pod资源,所以需要先创建控制器资源
#以上为副本集的资源

小结:Pod资源的创建伴随着控制器资源的创建和副本集资源的创建

在这里插入图片描述

kubect delete 删除命令

删除资源
kubectl delete deploy/nginx

# 再次查看pods状态
 kubectl get pods
#Nginx资源已被删除

在这里插入图片描述
在这里插入图片描述

删除nginx-deployment
kubectl delete deploy/nginx-deployment

#再次查看pod资源
kubectl get pods

在这里插入图片描述
在这里插入图片描述

项目周期流程

项目的生命周期为:创建–》发布–》更新–》回滚–》删除

① 创建nginx
#创建nginx
 kubectl run nginx --image=nginx:latest --port=80 --replicas=3

#查看pods状态(容器创建,一定会伴随deployment和replaces的创建
kubectl get pods,deployment,replicaset

在这里插入图片描述
在这里插入图片描述

② 发布nginx(service提供负载均衡的功能)
kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort

#查看服务信息
 kubectl get svc
#类型为NodePort   IP是群集IP PORT端口 80为内部端口,41558是对外的端口/TCP协议
#外网口只要访问41558端口,就会由kube-proxy负载均衡调用后端Pod资源

查看关联后端的节点
kubectl get endpoints


#查看资源对象简写
 kubectl api-resources


#在node1操作,查验是否开启了负载均衡及对外提供的端口是否为41558

#K8S中kube-proxy支持三种模式,在v1.8之前使用的是iptables及userspace两种模式,在kubernetes1.8之后引入了ipvs模式

--node1--
#安装ipvsadm工具
yum install ipvsadm -y
#ipvsadm lvs内核管理工具

--node1--
ipvsadm -L -n

----master1操作,查看访问日志---------

#https://192.168.78.66:41558
#https://192.168.78.77:41558

--master---
#查看Pod资源信息
 kubectl get pods

#查看日志
kubectl logs nginx-7697996758-89wqz
kubectl logs nginx-7697996758-dtdgm
kubectl logs nginx-7697996758-qwvx6

#可见访问者是doocker0网关
#同时可见proxy提供了负载均衡的功能,会把请求按照轮询的机制分配给后端的节点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
node1
在这里插入图片描述
node2

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

③ 版本更新

在这里插入图片描述
在这里插入图片描述

再次访问网页,查看“更多工具”----》“开发者工具”----》点击Name 中的地址----》查看headers头部信息可查看到版本,如下:

#修改模板、更新
#更新nginx 1.14版本
 kubectl set image deployment/nginx nginx=nginx:1.14

#可查看更新过程
kubectl get pods -w

#稍等一会再次查看pods资源
 kubectl get pods

#可查看到出了三个新的容器
#容器更新过程:创建一个容器,停止并删除第一个待更新的容器,

容器更新过程:先创建一个容器,停止并删除第一个待更新的容器,待第一个新容器运行时,再开始创建第二个容器,同时删除第二个待更新容器。
小结:保持pods池中有三个可运行的容器(固定容器数量是由replicaset进行控制)
再次访问网页验证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

④ 回滚
#假设版本更新之后,业务线发现用户无法访问网页,此时就需要使用到回滚操作

#查看历史版本
kubectl rollout history deployment/nginx

#因为之前更新过,所以有两个版本

#执行回滚、查看回滚状态
#执行回滚
kubectl rollout undo deployment/nginx


#查看回滚状态
kubectl rollout status deployment/nginx

#再次查看状态
kubectl rollout history deployment/nginx

在这里插入图片描述
在这里插入图片描述

⑤ 删除
#需要注意的一点是,在资源创建的时候,会有三个资源产生,即 pods deployment replicaset,但是只要把业务提供给出去,必定创建Service资源。所以在删除时需要一并把service资源删除,避免资源占用

#删除操作

#删除nginx资源deployment是控制器
 kubectl delete deployment/nginx

#查看状态,已被删除
 kubectl get pods


#查看服务nginx-service的服务端口还对外开放着,所以也需要一并删除
 kubectl get svc


#删除nginx-service
 kubectl delete svc/nginx-service


#查看服务状态
 kubectl get svc

#详细信息
如果容器处于卡住的状态,可以使用以下命令查看日志信息(event字段)
kubectl describe pod nginx-6ff7c89c7c-b96v8

在这里插入图片描述

总结:

kbectl管理命令的参数、命令及其中的调度原理是非常重要的

Logo

开源、云原生的融合云平台

更多推荐