8、kubectl命令

Kubernetes学习目录

1、语法

1.1、语法解析

命令格式:
 kubectl [command] [TYPE] [NAME] [flags]
参数解析:
   command:操作Kubernetes资源对象的子命令,常见的有create、delete、describe、get等
       create 创建资源对象 describe 查找资源的详细信息
       delete 删除资源对象 get 获取资源基本信息
   TYPE:Kubernetes资源类型,举例:结点的资源类型是nodes,缩写no
   NAME: Kubernetes资源对象的名称,可以省略。
   flags: 可选参数

2、K8S资源缩写名称

2.1、最基础资源对象

全称        缩写
pod/pods    po   
node/nodes  no

2.2、最常见资源对象

资源对象全称                缩写
replication controllers     rc 
horizontal pod autoscalers  hpa
replica sets                rs 
persistent volume           pv
deployment                  deploy 
persistent volume claims    pvc
services                    svc

2.3、其他资源对象

资源对象全称     缩写
namespaces       ns 
storage classes  sc
config maps      cm 
clusters
daemon sets      ds 
stateful sets
endpoints        ep 
secrets
events           ev
jobs
ingresses        ing

2.4、资源查看

注意:
 所有的资源名称都是首字母大写
 更全资源可以通过 kubectl api-resources 命令来查看,默认有 56种资源。
 # kubectl api-resources | grep -v 'NAME' | wc -l

3、简单查询实践

3.1、命令的介绍

3.1.1、查看资源对象

kubectl get node/nodes <-o yaml/json/wide | -w>

 参数解析:
 -w 是实时查看资源的状态。
 -o 是以多种格式查看资源的属性信息
 --raw 从api地址中获取相关资源信息

3.1.2、描述资源对象

kubectl describe node/nodes

 注意:
 这个命令非常重要,一般我们排错时候,就用它。

3.2、查询节点相关的参数

[root@master1 ~]# kubectl get no
NAME      STATUS   ROLES           AGE   VERSION
master1   Ready    control-plane   99m   v1.25.7
node1     Ready    <none>          95m   v1.25.7
node2     Ready    <none>          95m   v1.25.7

[root@master1 ~]# kubectl describe node master1

3.3、获取特定信息

[root@master1 ~]# kubectl -n kube-system get pods etcd-master1 -o go-template={{.status.podIP}}
192.168.10.26

4、应用实践

4.1、布署nginx

4.1.1、创建nginx

kubectl create deployment nginx --image=nginx

4.1.2、开放访问端口

# --port 指的是nginx的端口
kubectl expose deployment nginx --port=80 --type=NodePort

4.1.3、查询svc和pods

[root@master1 ~]# kubectl get svc,pods -o wide
NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE     SELECTOR
service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        117m    <none>
service/nginx        NodePort    10.108.127.167   <none>        80:30662/TCP   2m54s   app=nginx

NAME                        READY   STATUS    RESTARTS   AGE     IP            NODE    NOMINATED NODE   READINESS GATES
pod/nginx-76d6c9b8c-gzzvc   1/1     Running   0          3m50s   10.244.1.17   node1   <none>           <none>

# 注意:这里的 NodePort 代表在所有的节点主机上都开启一个能够被外网访问的端口 30662

4.1.4、测试nginx是否正常访问

[root@master1 ~]# curl 192.168.10.29:30662

4.1.5、查看资源的访问日志

kubectl logs nginx-76d6c9b8c-gzzvc

4.1.6、查看资源的详情信息

kubectl describe pods nginx-76d6c9b8c-gzzvc

4.1.7、进入容器查看信息

kubectl exec -it  nginx-76d6c9b8c-gzzvc -- bash

4.2、pod的扩容缩容

kubectl help scale

4.2.1、扩容

# 1、扩容
[root@master1 ~]# kubectl scale --replicas=3 deployment nginx 

[root@master1 ~]# kubectl get deployments.apps 
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   2/3     3            2           10m

[root@master1 ~]# kubectl get pod -o wide
NAME                    READY   STATUS    RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
nginx-76d6c9b8c-6nxgx   1/1     Running   0          22s   10.244.2.11   node2   <none>           <none>
nginx-76d6c9b8c-gzzvc   1/1     Running   0          11m   10.244.1.17   node1   <none>           <none>
nginx-76d6c9b8c-mg5m5   1/1     Running   0          22s   10.244.2.10   node2   <none>           <none>

4.2.2、缩容

# 2、缩容
[root@master1 ~]# kubectl scale --replicas=1 deployment nginx
deployment.apps/nginx scaled

[root@master1 ~]# kubectl get deployments.apps 
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   1/1     1            1           11m

4.3、pod的版本更新

kubectl help set image 
kubectl set image deployment/nginx nginx='nginx:1.11.0' --record=true
kubectl get deployment
查看版本更新状态和历史 kubectl rollout status deployment nginx kubectl rollout history deployment nginx
撤销更改 kubectl rollout undo deployment nginx kubectl rollout history deployment nginx
回到指定版本 kubectl rollout undo --to-revision=2 deployment nginx kubectl rollout history deployment nginx

4.4、删除资源

4.4.1、删除deployment资源

kubectl delete deployments nginx

4.4.2、删除svc资源

kubectl delete svc nginx

4.4.3、注意

注意:
 删除资源有两种方式

 方法1:
 kubectl delete 资源类型 资源1 资源2 ... 资源n
 因为限制了资源类型,所以这种方法只能删除一种资源

 方法2:
 kubectl delete 资源类型/资源
 因为删除对象的时候,指定了资源类型,所以我们可以通过这种资源类型限制的方式同时删除多种类型资源
posted @ 2023-03-16 11:07  小粉优化大师  阅读(73)  评论(0编辑  收藏  举报