kubernetes命令行基本用法

作者:卫珍佑 于 2020年05月20日 发布在分类/ K8S

kubernetes 命令行的基本用法

1 ,创建资源

Kubectl run nginx-dep –image=nginx:1.12 –replicas=2  #运行pod,并设置副本数为2

Kubectl expose  deployment/nginx-dep  --name=nginx-svc –port=80 #创建service资源暴露服务

Kubectl create –f nginx-dep.yaml  -f  nginx-svc #使用yaml文件基于命令式配置创建pod和service

Kubectl apply –f nginx-dep.yaml  -f nginx-svc.yaml  #使用声明式配置创建pod和service

2 ,查看资源

   Kubectl  get  namespaces(简写ns)  #查看所有的namespace资源对象

   Kubectl  get  pods  --all-namespaces  #查看所有的pod资源

   Kubectl  get pods –l k8s-app –n kube-system  #查看kube-system空间内标签为k8s-app的所有pod

   Kubectl  get pods  -o wide    #以长格式输出default空间下的所有pod资源(类似于ls  -L)

   Kubectl  get service(简写svc)  #查看default命名空间的所有service资源

     get资源时可以以yaml格式或者json格式查看,分别使用-o yaml和-o json来指定输出格式

   kubectl  describe  pods  nginx-pod  -n kube-system #查看资源更详细的描述信息

3 ,查看日志

   Kubectl  logs  -f  nginx-pod –n kube-system #查看pod的日志,-f类似于tail –f实时刷新

                                         -c 选项当一个pod内有多个容器时,指定容器

4 ,在容器中执行命令

   Kubectl  exec nginx-pod  -n kube-system  -- ps   #在容器内执行ps命令

   Kubectl  exec  -it  nginx-pod  /bin/bash  -n kube-system  #进入容器内部

5 ,删除资源

   Kubectl   delete  ns/test   #删除命名test空间

   Kubectl   delete  deployment/nginx-dep #删除nginx-dep控制器

   Kubectl   delete  svc/nginx-svc  #删除名为nginx-svc的service资源

   Kubectl   delete  pods  -l app=k8s-app –n kube-system  #删除标签k8s-app的pod资源

   Kubectl   delete  pods  --all  -n kube-system  #删除命名空间下所有的pod资源

6 ,命令式容器编排

  1) 无状态应用的部署和控制通常用deployment控制器,有状态的使用statefulSet控制器

  2) 一般需要为pod创建service来暴露服务,并借助coreDNS来进行服务发现

  3) 随时按需获取各资源对象的简要信息,以了解其运行状态

  4) 如有需要,可以手动对支持扩缩容的Controller组件进行扩容或缩容

  5) 当有新版本的镜像时可以对其进行更新操作,必要时可以进行回滚操作

7 ,部署应用(pod)

  1) 创建deployment控制器,由控制器来管理pod

Kubectl  run  myapp  --image=”…..” --port=80 --replicas=2  (#--dry-run预执行)

Kubectl  run  --help  #显示帮助信息

选项:

      -l,  labels: 为pod对象设定自定义标签

      --save-config :  是否将对当前pod的配置信息保存到Annotation中,其值为true或者false

      --restart=Never 创建不受控制器管理的自主式pod对象

#资源创建完成后一般需要了解当前的运行状态,一般使用kubectl  get 、kubectl describe等命令

8 ,排错常用命令

   Kubectl  describe : #显示资源的详细信息,包括运行状态、事件等信息,不同资源输出内容不同

   Kubectl  logs :  #查看pod对象中容器输出在控制台的日志信息,多个容器时使用-c选项指定容器

   Kubectl  exec   #在pod对象某个容器内运行指定的程序,其功能类似于“docker  exec”

9 ,部署service对象

   一般我们创建好deployment控制器之后,运行的pod并不能直接让集群外部访问到,因此我们需要创建service资源来暴露我们的服务,使集群外部也可以访问到运行的服务。

   Kubectl  expose  deployment/myapp  --type=”NodePort”  --port=80  --name=myapp

   #将myapp控制器创建的pod通过“NodePort“类型的服务暴露到集群外部

   Kubectl  get  svc/myapp             #获取service资源myapp的简要状态信息

   Kubectl  describe  services myapp-svc  #查看service  资源对象详细描述信息

   Kubectl  describe  deployment/myapp-dep  #查看deployment资源对象详细描述信息

10 ,扩容和缩容

   当我们创建好了deployment控制器之后,它会一直保持我们期望的pod个数,如果需要增加pod的数量,我们可以使用kubectl  scale 命令来调整pod副本的数量。

  Kubectl  scale deployment/myapp  --replicas=3  #把myapp控制器控制的pod数量调整为3个

  Kubectl  describe  deployment/myapp   #从输出的信息中可以发现,pod的数量已经调整为了3个

11 ,修改及删除对象

  Kubectl  edit  service  myapp      #修改service资源的相关信息

  Kubectl  edit  deployment  myapp  #修改deployment控制器的相关信息

  Kubectl  get  deployment  myapp  -o  yaml #以yaml格式查看资源信息,可以看到修改的内容

12 deploymentreplicaSetRS)的关系

当创建deployment指定pod副本数为3时,replicaSet会创建好指定数量的pod,并一直保持数量正确,RS的另一个功能是历史版本记录,滚动更新就是使用RS来完成的,先由RS创建新的pod,再逐步关闭旧的pod达到滚动更新的效果。


分享到朋友圈 分享到微信
发表评论
验证码