第三章 kubectl管理命令概要

  一. kubectl管理命令概要

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

  二. kubectl工具管理资源生命周期

  k8s创建资源会自动调用后端node,部署是使用镜像进行部署

  1,创建

#指定名称为nginx 副本数为3 使用镜像为nginx:1.14 端口是80
kubectl run nginx --replicas=3 --image=nginx:1.14 --port=80

   查看创建的pod,正在创建3个副本容器

# kubectl get pod
NAME                     READY   STATUS              RESTARTS   AGE
nginx-7bc87ddb4d-47lrr   0/1     ContainerCreating   0          55s
nginx-7bc87ddb4d-4q9nr   0/1     ContainerCreating   0          55s
nginx-7bc87ddb4d-sz8hl   0/1     ContainerCreating   0          55s

   创建成功后状态为running

# kubectl get pod
NAME                     READY   STATUS    RESTARTS   AGE
nginx-7bc87ddb4d-47lrr   1/1     Running   0          6m
nginx-7bc87ddb4d-4q9nr   1/1     Running   0          6m
nginx-7bc87ddb4d-sz8hl   1/1     Running   0          6m

   实际创建了一个包含三个副本的deployment

# kubectl get deploy
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   3/3     3            3           6m49s

   2,发布

  创建好的应用需要创建service暴露应用

#创建一个service
#deployment nginx 该service对应的deployment名称是nginx
#--port=80 k8s中服务之间访问的端口
#--type=NodePort发布类型是NodePort即外部可以访问的端口,会随机生成一个3000以上的端口
#--target-port容器的端口(最根本的端口人口),与制作容器时暴露的端口一致,例如docker.io官方的nginx暴露是80端口
#--name指定service的的名称
kubectl expose deployment nginx --port=80 --type=NodePort --target-port=80 --name=nginx-service

   查看,对外暴露了端口为30232

# kubectl get service
NAME            TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.10.10.1    <none>        443/TCP        3d4h
nginx-service   NodePort    10.10.10.48   <none>        80:30232/TCP   9m8s

   访问 任意node的ip加对应的端口

   查看nginx日志

kubectl logs nginx-7bc87ddb4d-sz8hl

   如果查看日志出现错误提示

Error from server (Forbidden): Forbidden (user=system:anonymous, verb=get, resource=nodes, subresource=proxy) ( pods/log nginx-7bc87ddb4d-sz8hl)

   解决办法

  绑定一个cluster-admin的权限

kubectl create clusterrolebinding system:anonymous   --clusterrole=cluster-admin   --user=system:anonymous

   3,更新项目

  项目已经部署需要更新

kubectl set image deployment/nginx nginx=nginx:1.15

   会下载镜像滚动更新

  更新完毕查看nginx版本变成1.15了

kubectl describe pod nginx-6f7d58d4cc-9bj74

 

   4,回滚

  查看发布过的版本

# kubectl rollout history deployment/nginx
deployment.extensions/nginx 
REVISION  CHANGE-CAUSE
1         <none>
2         <none>

   回滚到上一个版本

 kubectl rollout undo deployment/nginx

   指定版本回滚

   5,删除

  项目下线删除

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

   

  三. kubectl工具远程连接集群

猜你喜欢

转载自www.cnblogs.com/minseo/p/12397159.html