kubectl命令行管理工具管理k8s的生命周期

330 阅读4分钟

这是我参与8月更文挑战的第4天,活动详情查看:8月更文挑战

kubectl命令行管理工具

kubectl --help 查看帮助信息

kubectl create --help 查看create命令帮助信息

命令描述
create通过文件名或标准输入创建资源
expose将一个资源公开为一个新的Service
run在集群中运行一个特定的镜像
set在对象上设置特定的功能
get显示一个或多个资源
explain文档参考资料
edit使用默认的编辑器编辑一个资源。
delete通过文件名、标准输入、资源名称或标签选择器来删除资源。
rollout管理资源的发布
rolling-update对给定的复制控制器滚动更新
scale扩容或缩容Pod数量,Deployment、ReplicaSet、RC或Job
autoscale创建一个自动选择扩容或缩容并设置Pod数量
certificate修改证书资源
cluster-info显示集群信息
top显示资源(CPU/Memory/Storage)使用。需要Heapster运行
cordon标记节点不可调度
uncordon标记节点可调度
drain驱逐节点上的应用,准备下线维护
taint修改节点taint标记
describe显示特定资源或资源组的详细信息
logs在一个Pod中打印一个容器日志。如果Pod只有一个容器,容器名称是可选的
attach附加到一个运行的容器
exec执行命令到容器
port-forward转发一个或多个本地端口到一个pod
proxy运行一个proxy到Kubernetes API server
cp拷贝文件或目录到容器中
auth检查授权
apply通过文件名或标准输入对资源应用配置
patch使用补丁修改、更新资源的字段
replace通过文件名或标准输入替换一个资源
convert不同的API版本之间转换配置文件
label更新资源上的标签
annotate更新资源上的注释
completion用于实现kubectl工具自动补全
api-versions打印受支持的API版本
config修改kubeconfig文件(用于访问API,比如配置认证信息)
help所有命令帮助
plugin运行一个命令行插件
version打印客户端和服务版本信息

使用kubectl管理应用生命周期

1、创建
kubectl create deployment web --image=lizhenliang/java-demo 
kubectl get deploy,pods

2、发布
kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web
kubectl get service

3、升级
kubectl set image deployment/web nginx=nginx:1.15
kubectl rollout status deployment/nginx-deployment  # 查看升级状态

4、回滚
kubectl rollout history deployment/web  # 查看发布记录
kubectl rollout undo deployment/web   # 回滚最新版本
kubectl rollout undo deployment/web --revision=2  # 回滚指定版本

5、删除
kubectl delete deploy/web
kubectl delete svc/web
  1. 如何在k8s当中创建一个资源

kubectl create deployment web --image=镜像文件

**kubectl create deployment  jacquesh-nginx --image=nginx    # 此处为构建应用资源  命名为→jacquesh-nginx**

##### deployment.apps/jacquesh-nginx created	 # 提示如左边信息类似 则创建成功

**kubectl  get deploy,pods          #查看是否创建资源存在**

NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/jacquesh-tomcat   0/1     1            0           42s

NAME                                   READY   STATUS              RESTARTS   AGE
pod/jacquesh-tomcat-757dc84474-jpw46   0/1     ContainerCreating   0          42s

**几分钟后~**

NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/jacquesh-tomcat   1/1     1            1           2m

NAME                                   READY   STATUS    RESTARTS   AGE
pod/jacquesh-tomcat-757dc84474-jpw46   1/1     Running   0          2m

**可以看出tomcat 的状态改变为READY 就可以知道资源文件的服务已经在运行了 但是外部还访问不了**
  1. 如何对资源文件进行暴露端口服务

kubectl expose deployment 资源名 --port=端口 --type=NodePort --target-port=端口 --name=命名

**kubectl expose  deployment  jacquesh-tomcat --port=8080 --type=NodePort --target-port=8080 --name=tomcat** 

**设置tomcat对外暴露的端口 极其将资源文件expose为Service服务**

**kubectl get  service**  

NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP          15d
tomcat       NodePort    10.96.188.144   <none>        8080:32444/TCP   34s

可以看出现在已经对外暴露了 端口 port 32444

#访问   ip:端口

curl 192.168.88.130:32444

→返回页面信息 成功
  1. 如何对k8s中运行的服务进行升级/回滚
**kubectl rollout history deployment/jacquesh-tomcat #查看服务的迭代记录

deployment.apps/jacquesh-nginx 
REVISION  CHANGE-CAUSE
1         <none>

kubectl rollout history deployment/jacquesh-tomcat #查看服务的迭代记录

kubectl set image deployment/jacquesh-tomcat  tomcat=tomcat:8.0   #对tomcat版本进行变更

kubectl rollout history deployment/jacquesh-tomcat   #查看服务的迭代记录

deployment.apps/jacquesh-tomcat 
REVISION  CHANGE-CAUSE
1         <none>
2         <none>

↑ 可以看出迭代信息多了一个版本
浏览器访问192.168.88.130:端口号(**32444**)**