kubernetes进阶(一) kubectl工具使用详解

管理k8s核心资源的三种基本方法:html

1、陈述式-主要依赖命令行工具  --能够知足90%以上的使用场景,可是缺点也很明显:node

  命令冗长,复杂,难以记忆nginx

  特定场景下,没法实现管理需求web

  对资源的增、删、查操做比较容易,改比较麻烦,须要patch来使用json串来更改。算法

  1.1 查看名称空间  查询时,为了不重名,须要指定名称空间。docker

# kubectl get namespace
简写:
# kubectl get ns

 

 

  1.2 查询命名空间中的资源,使用-n 指定命名空间json

# kubectl get all -n default
# kubectl get pods -n default
# kubectl get nodes -n default

 

  1.3 建立命名空间api

# kubectl create ns app

 

 

  1.4 删除命名空间bash

# kubectl delete ns app

 

   1.5 建立一个deployment类型的pod控制器:PS:1.16版本之后,控制器有变化,具体变化参考k8s官网。session

   pod控制器类型参考:http://www.javashuo.com/article/p-nbbrpeel-kx.html

# kubectl create deployment nginx-dp --image=harbor.od.com/public/nginx:v1.7.9 -n kube-public
# kubectl get deploy -n kube-public

 

 

 

  1.6 查看pod控制器或者pod概览信息 : -o wide

# kubectl get deploy -o wide -n kube-public
# kubectl get pod -o wide -n kube-public

 

 

 

  1.7 查看pod控制器、pod、service等资源的详细信息:describe

# kubectl describe deploy nginx-dp -n kube-public
# kubectl describe pod nginx-dp-5dfc689474-4bhfh -n kube-public
# kubectl describe svc nginx-dp -n kube-public 

 详细信息太多,就不截图了。

 

  1.8 进入pod容器,用法和docker exec一致,可是须要使用-n 指定命名空间

# kubectl exec -ti nginx-dp-5dfc689474-4bhfh /bin/bash -n kube-public

 

 

 

  1.9 删除pod容器,此删除,只是删除了pod容器,并无删除pod控制器,因此此操做至关于删除pod后,pod控制器在拉起一个新的pod。

# kubectl delete pods nginx-dp-5dfc689474-4bhfh -n kube-public

 

 

 能够看到咱们删除pod之后,pod控制器又帮咱们重新拉起了一个新的pod,想要彻底删除,须要删除pod控制器。

 

  1.10 删除pod控制器

# kubectl delete deploy nginx-dp -n kube-public

 

能够看到,当咱们删除了pod控制器之后,pod容器也随之被删除了。

 

  1.11 扩容pod  --replicas=数量

# kubectl scale deployment nginx-dp --replicas=2 -n kube-public

 

 

 

 

 

  1.12 管理service资源 service资源:为pod资源提供稳定的接入点

# kubectl create deploy nginx-dp --image=harbor.od.com/public/nginx:v1.7.9
# kubectl expose deploy nginx-dp --port=80 -n kube-public

 

 看到咱们已经建立了一个service资源,能够经过192.168.234.234的80,访问到后面pod,为了解决pod漂移致使IP变化的问题。

可使用ipvsadm -Ln来查看:nq为ipvs调度算法中的一种,其余调度算法请自行查阅。

 

 

咱们经过删除pod的方式,让pod漂移到另外一台node节点,再来查看一下:

 

 能够看到,虽然pod漂移了,可是service资源提供的接入点是不变的,这得益于ipvs的强大。

 

 

 

 

   1.13 查看资源配置清单详细信息:-o yaml

# kubectl get pod nginx-dp-5dfc689474-c5r9r -o yaml -n kube-public
# kubectl get deploy nginx-dp -o yaml -n kube-public
# kubectl get svc -o yaml -n kube-public

 

  1.14 查看属性的定义及用法:例:查看service资源下metadata的定义及用法

# kubectl explain service.metadata

 

二、声明式-依赖统一资源配置清单(manifest) yaml/json

  2.1 建立一个svc资源配置清单

# vi nginx-ds-svc.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-ds
  name: nginx-ds
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx-ds
  sessionAffinity: None
  type: ClusterIP
# kubectl create -f nginx-ds-svc.yaml

 

 

# kubectl get svc nginx-ds -o yaml -n default

 

   2.2 离线修改资源配置清单:

  修改资源配置清单后可使用apply应用。

这里增长一个知识点,就是kube-apiserver这个服务当中,有一个限制端口范围的参数:--service-node-port-range 10-29999,这个参数在使用apply修改资源配置清单的时候,会有做用

若是修改后的资源配置清单中的port不在这个范围,会报错,修改这个之后,重启kube-apiserver便可。

# vi nginx-ds-svc.yaml #将对外暴露的端口改成881
# kubectl apply -f nginx-ds-svc.yaml

能够看到端口从80变成了881

 

 

 修改资源配置清单分为在线修改和离线修改(推荐离线修改):

  2.3 在线修改:我这里使用在线修改,将端口修改成888

# kubectl edit svc nginx-ds -n default

 

   2.4 删除资源:

    2.4.1 陈述式:

# kubectl delete svc nginx-ds -n default

    2.4.2 声明式:

# kubectl delete -f nginx-ds-svc.yaml

 

三、GUI式-主要依赖图形化操做界面(web界面)

相关文章
相关标签/搜索