欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

k8s常用命令总结

程序员文章站 2022-03-12 12:21:19
...

一、kubectl简介

kubectl 是 Kubernetes 的命令行工具(CLI),是 Kubernetes 用户和管理员必备的管理工具。

kubectl 提供了大量的子命令,方便管理 Kubernetes 集群中的各种功能。以下是查看子命令的帮助命令:

  • kubectl -h:查看子命令列表
  • kubectl options:查看全局选项
  • kubectl --help:查看子命令的帮助
  • kubectl [command] [PARAMS] -o=:设置输出格式(如 json、yaml、jsonpath 等)
  • kubectl explain [RESOURCE]:查看资源的定义

二、命令行自动补全配置

# Ubuntu
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.14.2/bin/linux/amd64/kubectl
chmod +x kubectl 
mv kubectl  /usr/local/bin/
sudo mv kubectl  /usr/local/bin/
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

# Centos
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

三、kubectl常用命令总结

1、kubectl version

输出 client 和 server 的版本信息

[[email protected] ~]# kubectl version 
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.2", GitCommit:"66049e3b21efe110454d67df4fa62b08ea79a19b", GitTreeState:"clean", BuildDate:"2019-05-16T16:23:09Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.2", GitCommit:"66049e3b21efe110454d67df4fa62b08ea79a19b", GitTreeState:"clean", BuildDate:"2019-05-16T16:14:56Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}

2、kubectl run

用法:kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...] [options]

2.1、创建一个镜像为redis、副本为2、暴露端口为6379的redis容器

[[email protected] ~]# kubectl run redis --image=redis --replicas=2 --port=6379
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/redis created

3、kubectl create

用法:kubectl create -f 文档名称 [选项],创建资源

3.1、创建dashboard通过yaml文件

kubectl create -f kubernetes-dashboard.yaml 

3.2、kubectl create namespace:创建namespace

用法:kubectl create namespace NAME [–dry-run] [options]

kubectl create namespace ppp

3.3、kubectl create secret:创建secret

用法:kubectl create secret [flags] [options]

(1).创建一个TLS Secret
kubectl create secret tls tomcat-ingress-sercret --cert=tls.crt --key=tls.key 
kubectl get secrets 
 kubectl describe secrets tomcat-ingress-sercret 
(2)创建一个generic Secret
kubectl create secret generic mysql-root-password [email protected]
kubectl get secrets 

3.4、kubectl create configmap:创建configmap

用法:kubectl create configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run] [options]

kubectl create configmap nginx-config --from-literal=nginx_port=80 --from-literal=server_name=myapp.ydt.com

3.5、kubectl create serviceaccount:创建serviceaccount

kubectl create serviceaccount admin
kubectl create serviceaccount mysa -o yaml --dry-run 

4、kubectl get

用法:kubectl get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [flags] [options]

4.1、kubectl get nodes

(1)、获取节点信息

kubectl get nodes

(2)、获取节点详细信息

kubectl get nodes -o wide

(3)、获取节点标签

kubectl get nodes --show-labels 

(4)、给节点打标签

kubectl label nodes node1 disktype=ssd```

4.2、kubectl get pods

(1)、获取指定namespace的Pod信息(不加-n默认获取default)

    #获取pod节点运行信息
    kubectl get pods -n prod

(2).获取namespace信息

kubectl get namespace

(3).获取所有namespace的Pod信息

kubectl get pods --all-namespaces
 kubectl get pods -A

(4)、获取Pod的详细信息,获取一些更具体的信息,可以通过使用选项“-o”
kubectl get pod < podname > -o yaml 以yawl格式输出pod的详细信息

kubectl get pods -o wide
kubectl get pods -A -o wide
kubectl get pods -n prod 容器名称 -o yaml

(5)、获取Pod的labels

kubectl get pods --show-labels 

(6)、查看所有pod对于指定标签的key是否有value,有则显示,没有则空白

kubectl get pods -L apps,run

(7)、获取含有指定标签key的pod

kubectl get pods -l apps --show-labels 

(8)、获取含有指定标签key=value的pod
等值关系:=和!=

kubectl get pods -l release=stable --show-labels 

(9)、获取podIP
kubectl get pod pod-name -o jsonpath=’{.status.podIP}’

#其中-n pred是指定命名空间pred
kubectl get pods nginx-862964dd6c-c56ar -n pred -o jsonpath='{.status.podIP}'

(10)、导出指定pod的yaml配置

kubectl get pods myapp-deploy-74fb9bdf9b-2rt79 -n pred -o yaml --export

4.3、kubectl get namespaces:获取namespace信息

1、获取指定namespace信息

kubectl get namespaces (命名空间)

2、获取指定namespace的yaml格式和json格式信息

kubectl get namespaces kube-system -o yaml
kubectl get namespaces kube-system -o json

4.4、kubectl get rs:获取ReplicaSet控制器信息

kubectl get rs

4.5、kubectl get deploy && kubectl get deployment

1、获取Deployment控制器信息

kubectl get deploy -n pred
kubectl get deployments -n pred

2、滚动更新
修改后的滚动更新过程

kubectl get pods -w

查看滚动更新后历史版本和现在运行版本

kubectl get rs -o wide

4.6、kubectl get svc:获取service信息

1、获取默认命名空间和指定命名空间的service

kubectl get svc
kubectl get svc -n pred 

2、获取pv信息和pvc信息

kubectl get pv
kubectl get pvc

3、获取configMap信息

kubectl get cm
kubectl get configmap

4、获取statefulSet控制器信息

kubectl get sts

5、获取serviceaccount信息

kubectl get serviceaccounts && kubectl get sa

5、kubectl label

用法:kubectl label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version],资源标签设定

1、给一个pod打一个没有存在的标签key=value

kubectl label pods pod-demo release=canary
kubectl get pods pod-demo --show-labels 

2、给一个pod已经存在的标签重新赋值

 kubectl label pods pod-demo release=stable
 kubectl label pods pod-demo release=stable --overwrite

3、通过key删除标签

kubectl get nodes --show-labels
 kubectl label nodes node1 disktype-

6、kubectl describe

用法:kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME) [options],显示资源的详细描述

1、查看某个pod的详细信息

kubectl describe pods (容器名) -n pred (指定命名空间)

2、查看节点详细信息

kubectl describe nodes

7、kubectl delete

用法:kubectl delete ([-f FILENAME] | [-k DIRECTORY] | TYPE [(NAME | -l label | --all)]) [options],删除资源

1、删除pods资源

kubectl delete pods (容器名) -n pred 

8、kubectl edit

1.edit提供了另一种更新resource源的操作,通过edit能够灵活的在一个common的resource基础上,发展出更过的significant resource。使用edit直接更新前面创建的pod的命令:

用法:kubectl edit (RESOURCE/NAME | -f FILENAME) [options],编辑资源清单

kubectl edit pods -n prod ownership-query-node-6c45577f9b-c69s9 -o yaml

9、kubectl exec

用法:kubectl exec POD [-c CONTAINER] -- COMMAND [args...] [options],类似docker exec,进入容器

kubectl exec -it (容器名)-- /bin/sh -n pred
kubectl exec -it (容器名)sh -n pred

10、kubectl logs

用法:kubectl logs [-f] [-p] (POD | TYPE/NAME) [-c CONTAINER] [options],类似于docker logs,查看容器日志

(5).输入关键字查找项目名称

kubectl get pod -n prod |grep website(关键字)

(6).查看项目详细信息

 kubectl describe pods -n prod (项目名称)

(7).修改容器的副本数

设置容器的副本数为0
kubectl scale deployment -n pred (容器名称) --replicas=0

上一篇: k8s常用命令

下一篇: Docker笔记