k8s常用命令

一,kubectl 命令行的语法如下:

 kubectl [command]  [TYPE]  [NAME] [flags]

上面的命令是: kubectl命令行中,指定执行什么操作(command),指定什么类型资源对象(type),指定此类型的资源对象名称(name),指定可选参数(flags),后面的参数就是为了修饰那个唯一的对象
属于典型的英文语法,比如你是老师,你说,小明(kubectl)买(command)方便面(type)老坛酸菜方便面(name)桶装的(flag)。命令的根本原则是准确性,不能有异议!
(1) command: 子命令,用于操作k8s集群资源对象的命令,例如create,delete,describe ,get ,apply 等
(2) TYPE: 资源对象的类型,区分大小写,能以单数形式,复数形式或者简写形式表示。例如以下3种TYPE是等价的。

 kubectl get  pod pod1
 kubectl get pods pod1
 kubectl get po pod1

(3) NAME: 资源对象的名称,区分大小写。如果不指定名称,则系统将返回属于TYPE的全部对象的列表。例如$ kubectl get pods 将返回默认namespaces下所有的pod列表
(4) flags: kubectl 子命令的可选参数,例如使用"-s" 指定apiserver 的URL地址
在一个命令行中也可以同时对多个资源对象进行操作,以多个Type和NAME的组合表示,实例如下:
获取多个pod的信息:

 kubectl get pods pod1 pod2

获取多个对象的信息:

 kubectl get pod/pod1 rc/rc1

同时应用多个yaml文件,以多个-f file参数表示:

 kubectl get pod -f pod1.yaml  -f pod2.yaml
 kubectl create  -f  pod1.yaml  -f rc2.yaml  -f servicel.yaml

二,常用的kubectl命令

kubectl get - 列出可用资源

列出所有的pod : kubectl get pods --all-namespaces
列出所有的job : kubectl get job --all-namespaces
kubectl describe - 显示有关资源的详细信息

kubectl describe pod nvjob-lnrxj -n default

-n default 是指定namespace为default里的pod,是语法中的flag
kubectl logs - 从 Pod 中的容器打印日志

这个特殊一点哦,这个不用指定TYPE,因为kubeclt logs 默认就是pod类型,所以 kubectl logs pod 会报错,“Error from server (NotFound): pods “pod” not found”

kubectl logs calijob  -n calib

kubectl exec - 在 Pod 中的容器执行命令

和log一样,不用指明type,默认是pod : kubectl exec <pod_name> -n date
kubectl delete - 在 Pod 中的容器执行命令

kubectl delete pod cali-2 -n calib

批量删除namespace 是calib中 状态为Error的所有pod:kubectl get pods -n calib | grep Error | awk ‘{print $1}’ | xargs kubectl delete pod -n calib(注意 “Error”,“Completed”状态得首字母都是大写哦)

K8s-yaml的使用及命令

YAML配置文件管理对象
对象管理:
创建deployment资源

kubectl create -f nginx-deployment.yaml

查看deployment

kubectl get deploy

查看ReplicaSet

kubectl get rs

查看pods所有标签

kubectl get pods --show-labels

根据标签查看pods

kubectl get pods -l app=nginx

滚动更新镜像

kubectl set image deployment/nginx-deployment nginx=nginx:1.11

或者

kubectl edit deployment/nginx-deployment

或者

kubectl apply -f nginx-deployment.yaml

实时观察发布状态:

kubectl rollout status deployment/nginx-deployment

查看deployment历史修订版本

kubectl rollout history deployment/nginx-deployment
kubectl rollout history deployment/nginx-deployment --revision=3

回滚到以前版本

kubectl rollout undo deployment/nginx-deployment
kubectl rollout undo deployment/nginx-deployment --to-revision=3

扩容deployment的Pod副本数量

kubectl scale deployment nginx-deployment --replicas=10

设置启动扩容/缩容

kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu-percent=80

对象管理实例:vim nginx.deployment.yaml

View Code

服务发现实例:vim nging.service.yaml

View Code
清理:

kubectl delete -f nginx-deployment.yaml

kubectl delete -f nginx-service.yaml

POD作用:

 Pod状态  创建/查询/更新/删除  重启策略  健康检查  数据持久化和共享  hostPort  问题定位

Pod管理-创建/查询/更新/删除
基本管理:
创建pod资源

kubectl create -f pod.yaml

查看pods

kubectl get pods pod-test

查看pod描述

kubectl describe pod pod-test

替换资源

kubectl replace -f pod.yaml -force

删除资源

kubectl delete pod pod-test

支持三种策略:

Always:当容器终止退出后,总是重启容器,默认策略。

OnFailure:当容器异常退出(退出状态码非0)时,才重启容器。

Never:当容器终止退出,从不重启容器。

Pod实例:vim pod.yaml

View Code

Pod管理-健康检查:

提供Probe机制,有以下两种类型:

livenessProbe

如果检查失败,将杀死容器,然后根据Pod的重启策略来决定是否重启。

readinessProbe

如果检查失败,Kubernetes会把Pod从服务代理的分发后端剔除。
Probe支持以下三种检查方法:

httpGet

发送HTTP请求,返回200-400范围状态码为成功。

exec

执行Shell命令返回状态码是0为成功。

tcpSocket

发起TCP Socket建立成功。

实例:

vim pod2.yaml
 View Code

Pod管理-数据持久化和共享:

vim pod3.yaml
 View Code

Pod端口映射:

vim pod4.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  labels:
    app: nginx
spec:
  containers:
   -name: nginx
    image: nginx:1.10
    ports:
    - name: http
      containerPort: 80
      hostIP: 0.0.0.0
      hostPort: 80
      protocol: TCP
   - name: https
     containerPort: 443
     hostIP: 0.0.0.0
     hostPort: 443
     protocol: TCP
Logo

更多推荐