前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >干货 | kubectl 常用命令集锦(一)

干货 | kubectl 常用命令集锦(一)

作者头像
create17
发布2022-11-17 09:33:54
1.1K0
发布2022-11-17 09:33:54
举报

每一个成功人士的背后,必定曾经做出过勇敢而又孤独的决定。

放弃不难,但坚持很酷~

版本说明 kubectl:v1.17.6

一、kubectl 常用命令

1、获取命名空间 namespace 列表
代码语言:javascript
复制
kubectl get ns
2、获取服务 service 相关信息

可以通过 --all-namespaces 获取 k8s 集群所有的 serivce 列表:

代码语言:javascript
复制
kubectl get svc --all-namespaces

同样,像获取 deploy、pod、ingress、configmap 等等也都适用 --all-namespaces 。

也可以通过 -n <namespace> 获取指定 namespace 下的 service 列表:

代码语言:javascript
复制
kubectl get svc -n public
3、备份 service 内容
代码语言:javascript
复制
kubectl get svc -n <namespace> <serviceName> -o yaml > xxx.yaml

这个 xxx.yaml 文件就是 service 的内容。如果 service 被删除,可以使用一下命令恢复。

代码语言:javascript
复制
kubectl apply -f xxx.yaml
4、删除 service
代码语言:javascript
复制
kubectl delete svc -n <namespace> <serviceName>
5、查看 deployment 信息
代码语言:javascript
复制
kubectl get deploy -n <namespace>
6、修改 deployment
代码语言:javascript
复制
kubectl edit deploy -n <namespace>

通常都会进入 deploy 里面修改镜像名、副本数、环境变量等等。该命令也可以用来查看 deploy 信息,不保存变动就是了。

7、查看 pod
代码语言:javascript
复制
kubectl get pod -n <namespace>
8、进入 pod shell 操作

交互模式:

代码语言:javascript
复制
kubectl exec -it -n <namespace> <podName> sh
# 退出pod的话,可以输入 exit 或 Ctrl+D

如果只需要查看 pod 里面的某个文件,可以不进入交互模式,将 sh 替换为 -- 执行命令,比如我进入 pod ,查看 pod 的 hosts 文件:

代码语言:javascript
复制
kubectl exec -it -n <namespace> <podName> -- cat /etc/hosts
7、重启 pod

根据 k8s 的机制,如果移除某 pod ,deployment 会再创建一个 pod 启动。所以移除 pod ,就可以实现重启 pod 的目的:

代码语言:javascript
复制
kubectl delete pod <podName> -n <namespace>
8、查看 pod 所在节点
代码语言:javascript
复制
kubectl get pod -owide --all-namespaces
9、查看各pod的内存使用情况
代码语言:javascript
复制
kubectl top pod --all-namespaces
10、查看某pod的相关日志
代码语言:javascript
复制
kubectl logs -f --tail=100 -n <namespace> <podName>

logs -f --tail=100 表示持续查看最新的 100 行日志。

11、查看上一个死掉的容器的日志
代码语言:javascript
复制
kubectl logs -f -p -n <namespace> <podName>
12、查看某pod的相关信息

当日志定位不到错误的时候,可以通过以下命令来查看 pod 容器的运行事件:

代码语言:javascript
复制
kubectl describe pod -n <namespace> <podName>
13、k8s node 标签添加、移除相关操作
代码语言:javascript
复制
# 查看所有k8s机器的标签
kubectl get node --show-labels

# 如果要调度的机器agent-2上没有node标签,那么就执行以下命令:
kubectl label node agent-2 node=public

# 移除agent-2节点上的node标签
kubectl label node agent-2 node-

# 修改一个Label的值,需要加上--overwrite参数:
kubectl label node agent-2 node=public --overwrite
14、k8s 设置节点不可调度
代码语言:javascript
复制
[root@master ~]# kubectl cordon node-1 
node/node-1 cordoned
[root@master ~]# kubectl get nodes
NAME      STATUS                     ROLES     AGE       VERSION
master    Ready                      master    21d       v1.17.6
node-1    Ready,SchedulingDisabled   <none>    12h       v1.17.6
node-2    Ready                      <none>    21d       v1.17.6
15、将要删除的节点(node-1)上的 pod 平滑的转移到其他节点上
代码语言:javascript
复制
[root@master ~]# kubectl drain node-1 --delete-local-data --force --ignore-daemonsets
node/node-1 cordoned
WARNING: Ignoring DaemonSet-managed pods: kube-flannel-ds-amd64-6nt6g, kube-proxy-vtxzz
pod/nginx-64f497f8fd-hpfhf evicted
16、容器里面的文件目录与本地互相复制
代码语言:javascript
复制
# 容器目录/usr/data/hdfs复制到本地
kubectl cp -n <namespace> <podName>:usr/data/hdfs /tmp/hdfs

# 本地文件复制到容器中的/usr/data/hdfs
kubectl cp hdfs-site.xml -n <namespace> <podName>:/usr/data/hdfs
17、创建configmap

取名叫 data-configmap.yaml,内容如下:

代码语言:javascript
复制
kind: ConfigMap
apiVersion: v1
metadata:
  name: data-configmap
  namespace: public
  labels:
    app: data-management
data:
  application-test.yml: |-
    jasypt:
      encryptor:
        password: aG9sbHlzeXM=
        property:
          prefix: test(
          suffix: )

    spring:
      application:
        name: data-management
    ....    

创建 configmap:

代码语言:javascript
复制
kubectl create configmap data-configmap -n public --from-file=data-configmap.yaml

二、小结

本篇文章,主要列举了 kubectl 常用的命令,主要是对 service、deploy、pod 一些常用操作。等明天再继续更新下 helm 相关的操作,这样对使用 k8s 集群更加方便,我们明天继续分享。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据实战演练 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、kubectl 常用命令
    • 1、获取命名空间 namespace 列表
      • 2、获取服务 service 相关信息
        • 3、备份 service 内容
          • 4、删除 service
            • 5、查看 deployment 信息
              • 6、修改 deployment
                • 7、查看 pod
                  • 8、进入 pod shell 操作
                    • 7、重启 pod
                      • 8、查看 pod 所在节点
                        • 9、查看各pod的内存使用情况
                          • 10、查看某pod的相关日志
                            • 11、查看上一个死掉的容器的日志
                              • 12、查看某pod的相关信息
                                • 13、k8s node 标签添加、移除相关操作
                                  • 14、k8s 设置节点不可调度
                                    • 15、将要删除的节点(node-1)上的 pod 平滑的转移到其他节点上
                                      • 16、容器里面的文件目录与本地互相复制
                                        • 17、创建configmap
                                        • 二、小结
                                        相关产品与服务
                                        容器服务
                                        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                        领券
                                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档