kubectl命令应用

kubectl命令详解:操作Kubernetes资源的实战指南

kubectl命令语法

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

command:子命令,用于操作Kubernetes集群资源对象的命 令,例如create、delete、describe、get、apply等。

TYPE:资源对象的类型,区分大小写,能以单数、复数或者 简写形式表示。例如以下3种TYPE是等价的。

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

NAME:资源对象的名称,区分大小写。如果不指定名称, 系统则将返回属于TYPE的全部对象的列表,例如$ kubectl get pods将返 回所有Pod的列表。

flags:kubectl子命令的可选参数,例如使用“-s”指定API Server的URL地址而不用默认值

资源对象的名称缩写
cluster
componentstatusescs
configmapscm
daemonsetsds
deploymentsdeploy
endpointsep
eventsev
horizontalpodautoscalershpa
ingressesing
Jobs
limitrangeslimits
nodesno
namespacesns
networkpolicies
statefulsets
persistentvolumeclaimspvc
persistentvolumespv
podspo
podsecuritypoliciespsp
podtemplate
replicasetsrs
replicationcontrollersrc
resourcequotasquota
cronjob
secrets
serviceaccounts
servicessvc
storageclassessc
thirdpartyresources

kubectl常用操作

创建资源对象:

创建资源对象 根据YAML配置文件一次性创建Service和RC:
kubectl   create -f  my-service.yaml  -f  my-rc.yaml

根据 yaml 创建资源, apply 可以重复执行,create 不行
kubectl create -f pod.yaml
kubectl apply -f pod.yaml

查看资源对象:

[root@master ~]# kubectl get pods       查看所有 pod 列表
NAME                     READY   STATUS    RESTARTS   AGE
nginx-6799fc88d8-hnjrq   1/1     Running   1          22h


kubectl get pod -n kube    -n 后跟 namespace, 查看指定的命名空间中的pod

#查看Service列表                              svc是service简写,也可以写全拼
[root@master ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        23h
nginx        NodePort    10.111.153.17   <none>        80:31775/TCP   23h

#kubectl get pod,svc -o wide                 -o wide 查看详细信息
[root@master ~]# kubectl get pod,svc -o wide 
NAME                         READY   STATUS    RESTARTS   AGE   IP           NODE    NOMINATED NODE   READINESS GATES
pod/nginx-6799fc88d8-hnjrq   1/1     Running   1          23h   10.244.2.3   node2   <none>           <none>

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE   SELECTOR
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        23h   <none>
service/nginx        NodePort    10.111.153.17   <none>        80:31775/TCP   23h   app=nginx

语法:kubectl get pod <pod-name> -o yaml

显示Pod更多信息

kubectl get pod <pod-name> -o wide ,列如:
[root@master ~]# kubectl get pod,rc -o wide 
NAME                         READY   STATUS    RESTARTS   AGE   IP           NODE    NOMINATED NODE   READINESS GATES
pod/nginx-6799fc88d8-hnjrq   1/1     Running   1          23h   10.244.2.3   node2   <none>           <none>

以yaml格式显示Pod的详细信息

[root@master ~]# kubectl get pod,svc -o yaml
apiVersion: v1
items:
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2021-08-26T05:50:56Z"

以自定义列名显示Pod的信息

[root@master ~]# kubectl get pod,svc -o=custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion
NAME                     RSRC
nginx-6799fc88d8-hnjrq   1926
kubernetes               202
nginx                    1266

基于文件的自定义列名输出

[root@master ~]# kubectl get pods,svc -o=custom-columns-file=template.txt
NAME                     RSRC
nginx-6799fc88d8-hnjrq   1926
kubernetes               202
nginx                    1266

[root@master ~]# kubectl get pods nginx-6799fc88d8-hnjrq  -o=custom-columns-file=template.txt 
NAME                     RSRC
nginx-6799fc88d8-hnjrq   1926

template.txt文件的内容为
NAME                RSRC
metadata.name       metadata.resourceVersion

创建一个deployment类型的容器

[root@master ~]# kubectl create deployment deploy-web --image=xialuo:v0.1 --replicas=3
deployment.apps/deploy-web created

[root@master ~]# kubectl get pods
NAME                         READY   STATUS              RESTARTS   AGE
deploy-web-dbc599567-tpvh4   0/1     ContainerCreating   0          12s
deploy-web-dbc599567-xhp26   0/1     ContainerCreating   0          12s
deploy-web-dbc599567-z4gxf   0/1     ContainerCreating   0          12s
nginx-6799fc88d8-hnjrq       1/1     Running             1          23h

删除
[root@master ~]# kubectl delete deployment deploy-web
deployment.apps "deploy-web" deleted

实时监控拉取镜像的状态

[root@master ~]# kubectl get pods -w
NAME                            READY   STATUS              RESTARTS   AGE
deploy-nginx-6b777fdcd5-8lrd4   0/1     ContainerCreating   0          63s
deploy-nginx-6b777fdcd5-bmk6q   0/1     ContainerCreating   0          63s
deploy-nginx-6b777fdcd5-mmtjk   0/1     ContainerCreating   0          63s
nginx-6799fc88d8-hnjrq          1/1     Running             1          23h
deploy-nginx-6b777fdcd5-bmk6q   0/1     ErrImagePull        0          67

创建service

[root@master ~]# kubectl expose deployment deploy-nginx --port=80 --protocol=TCP
service/deploy-nginx exposed
[root@master ~]# kubectl get svc
NAME           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
deploy-nginx   ClusterIP   10.96.65.25     <none>        80/TCP         14s
kubernetes     ClusterIP   10.96.0.1       <none>        443/TCP        23h
nginx          NodePort    10.111.153.17   <none>        80:31775/TCP   23h
### kubectl 命令使用指南 `kubectl` 是 Kubernetes 的核心命令行工具,用于管理和操作集群中的各种资源。以下是关于 `kubectl` 命令的一些常见用法及其解释。 #### 进入容器的交互式 Shell 通过以下命令可以进入指定 Pod 中某个容器的交互式 Shell: ```bash kubectl exec -it pod_name -c container_name -n namespace -- /bin/sh ``` 此命令允许用户直接访问运行在 Kubernetes 集群上的容器内部环境[^1]。其中 `-it` 参数表示以交互模式启动终端;`pod_name` 表示目标 Pod 名称;`container_name` 表示目标容器名称;`namespace` 则指定了命名空间。 #### 创建资源 创建新资源可以通过 YAML 文件完成,也可以直接通过命令实现。例如,基于配置文件创建 Deployment 可以这样操作: ```bash kubectl create -f deployment.yaml ``` 如果需要动态定义简单的对象,则可以直接传递参数给某些特定类型的资源。比如创建一个名为 my-nginx 的 Nginx 服务实例: ```bash kubectl run my-nginx --image=nginx ``` 上述方法适用于快速测试场景下的简单部署需求[^2]。 #### NFS 相关设置 (扩展阅读) 虽然这不是严格意义上的 `kubectl` 功能范围内的事情,但在实际生产环境中经常需要用到外部存储支持的应用程序数据持久化方案之一就是 Network File System(NFS)[^3]。安装并启用NFS服务器之后还需要调整目录权限以便让客户端能够正常挂载共享卷路径 `/data/volumes/{v1,v2,v3}` 给不同的应用组件使用。 ### 示例代码片段 下面给出一段综合性的脚本样例来展示如何利用这些知识点一起工作: ```bash #!/bin/bash # 安装NFS服务端软件包以及初始化基本结构 yum -y install nfs-utils systemctl start nfs && systemctl enable nfs mkdir -pv /data/volumes/{v1,v2,v3} chown nobody.nobody /data/volumes/{v1,v2,v3} # 应用YAML描述符构建新的微服务单元 kubectl apply -f service-definition.yml # 登录到刚上线的服务节点上验证状态 POD_NAME=$(kubectl get pods | grep 'my-service' | awk '{print $1}') NAMESPACE="default" CONTAINER="main-app" kubectl exec -it ${POD_NAME} -c ${CONTAINER} -n ${NAMESPACE} -- /bin/sh ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值