zoukankan      html  css  js  c++  java
  • kubectl的用法

    kubectl get - 显示资源列表

    kubectl get 资源类型
    获取类型为Deployment的资源列表

    [root@k8s-master-1 ~]kubectl get deployments

    获取类型为Pod的资源列表
    [root@k8s-master-1 ~]kubectl get pods

    获取类型为Node的资源列表
    [root@k8s-master-1 ~]kubectl get nodes

    名称空间
    在命令后增加 -A 或 --all-namespaces 可查看所有 名称空间中 的对象,使用参数 -n 可查看指定名称空间的对象,如:
    查看所有名称空间的 Deployment

    [root@k8s-master-1 ~]kubectl get deployments -A
    [root@k8s-master-1 ~]kubectl get deployments --all-namespaces

    查看 kube-system 名称空间的 Deployment

    [root@k8s-master-1 ~]kubectl get deployments -n kube-system

    kubectl describe - 显示有关资源的详细信息
    kubectl describe 资源类型 资源名称
    查看名称为nginx-XXXXXX的Pod的信息

    [root@k8s-master-1 ~]kubectl describe pod nginx-XXXXXX

    查看名称为nginx的Deployment的信息

    [root@k8s-master-1 ~]kubectl describe deployment nginx

    kubectl logs - 查看pod中的容器的打印日志(和命令docker logs 类似)
    kubectl logs Pod名称
    查看名称为nginx-pod的Pod内的容器打印的日志
    本案例中的 nginx-pod 没有输出日志,所以您看到的结果是空的

    [root@k8s-master-1 ~]kubectl logs -f nginx-pod

    kubectl exec - 在pod中的容器环境内执行命令(和命令docker exec 类似)
    kubectl exec Pod名称 操作命令
    在名称为nginx-pod-xxxxxx的Pod中运行bash

    [root@k8s-master-1 ~]kubectl exec -it nginx-pod-xxxxxx /bin/bash

    指令性的命令行=======================
    创建一个 Deployment 对象,以运行一个 nginx 实例:
    [root@k8s-master-1 ~]kubectl run nginx --image nginx
    这样创建的pod可以用如下命令删除:
    [root@k8s-master-1 ~]# kubectl delete pod nginx-1-6664c49886-hgjlt
    用deployment创建的pod:
    [root@k8s-master-1 ~]# kubectl create deployment nginx --image nginx
    通过配置文件创建对象:
    [root@k8s-master-1 ~]# kubectl create -f nginx.yaml
    删除两个配置文件中的对象:
    [root@k8s-master-1 ~]# kubectl delete -f nginx.yaml -f redis.yaml
    直接使用配置文件中的对象定义,替换Kubernetes中对应的对象:
    [root@k8s-master-1 ~]# kubectl replace -f nginx.yaml

    查看哪些 Kubernetes 对象在名称空间里,哪些不在:
    [root@k8s-master-1 ~]# kubectl api-resources --namespaced=true
    [root@k8s-master-1 ~]# kubectl api-resources --namespaced=false

    ========使用名称空间共享集群

    查看集群中的名称空间列表:
    [root@k8s-master-1 ~]# kubectl get namespaces
    输出结果如下所示:
    NAME STATUS AGE
    calico-system Active 42h
    default Active 42h
    demo-test Active 16m
    kube-node-lease Active 42h
    kube-public Active 42h
    kube-system Active 42h
    tigera-operator Active 42h

    Kubernetes 安装成功后,默认有初始化了三个名称空间:
    .default 默认名称空间,如果 Kubernetes 对象中不定义 metadata.namespace 字段,该对象将放在此名称空间下
    .kube-system Kubernetes系统创建的对象放在此名称空间下
    .kube-public 安装集群是自动创建,并且所有用户都是可以读取的(即使是那些未登录的用户)。主要是为集群预留的。
    查看名称空间的概要信息:
    [root@k8s-master-1 ~]# kubectl describe namespaces kube-system
    输出结果如下所示:
    Name: kube-system
    Labels:
    Annotations:
    Status: Active

    No resource quota.
    No LimitRange resource.
    --->Resource quota 汇总了名称空间中使用的资源总量,并指定了集群管理员定义该名称空间最多可以使用的资源量
    --->Limit range 定义了名称空间中某种具体的资源类型的最大、最小值

    创建名称空间

    (1)通过 yaml 文件,创建文件 my-namespace.yaml 内容如下:

    apiVersion: v1
    kind: Namespace
    metadata:
    name: yuanye

    [root@k8s-master-1 y]# kubectl create -f ./name1.yaml
    [root@k8s-master-1 y]# kubectl get namespaces
    NAME STATUS AGE
    calico-system Active 43h
    default Active 43h
    demo-test Active 30m
    kube-node-lease Active 43h
    kube-public Active 43h
    kube-system Active 43h
    tigera-operator Active 43h
    yuanye Active 76s

    (2)直接使用命令创建名称空间:
    [root@k8s-master-1 y]# kubectl create namespace y1
    namespace/y1 created

    删除名称空间

    [root@k8s-master-1 y]# kubectl delete namespaces y1
    namespace "y1" deleted

    理解 default 名称空间

    默认情况下,安装Kubernetes集群时,会初始化一个 default 名称空间,用来将承载那些未指定名称空间的 Pod、Service、Deployment等对象

    创建新的名称空

    [root@k8s-master-1 y]# vim dev.yaml
    apiVersion: v1
    kind: Namespace
    metadata:
    name: development
    labels:
    name: development

    [root@k8s-master-1 y]# vim prod.yaml
    apiVersion: v1
    kind: Namespace
    metadata:
    name: production
    labels:
    name: production
    [root@k8s-master-1 y]# kubectl create -f ./prod.yaml
    [root@k8s-master-1 y]# kubectl get namespaces --show-labels
    NAME STATUS AGE LABELS
    calico-system Active 43h name=calico-system
    default Active 43h
    demo-test Active 48m
    development Active 8m10s name=development
    kube-node-lease Active 43h
    kube-public Active 43h
    kube-system Active 43h
    production Active 7m59s name=production
    tigera-operator Active 43h name=tigera-operator

    kubectl run nginx --image=nginx --namespace=<您的名称空间>

    设置名称空间偏好

    可以通过 set-context 命令改变当前 kubectl 上下文 的名称空间,后续所有命令都默认在此名称空间下执行。

    kubectl config set-context --current --namespace=<您的名称空间>

    验证结果

    **kubectl config view --minify | grep namespace: **

    查看哪些 Kubernetes 对象在名称空间里,哪些不在:

    在名称空间里

    kubectl api-resources --namespaced=true

    不在名称空间里

    **kubectl api-resources --namespaced=false **

    ------------------kubectl命令出现【The connection to the server localhost:8080 was refused - did you specify the right host or port?】的解决方法:--------------

  • 相关阅读:
    C++ 面向对象高级开发 -- static
    C++ 面向对象高级开发 -- complex 类的实现
    单独编译PCL的kdtree模块报错“undefined reference to”
    【C++】预处理指令#define,#ifdef,#ifndef,#endif ...
    点云配准(Registration)算法——以PCL为例
    算法岗求职资料汇总
    C++面向对象高级开发
    opencv的常用头文件
    ubuntu下,VSCode采用cmake编译C++工程
    "error while loading shared libraries: xxx.so.x" 错误的原因和解决办法
  • 原文地址:https://www.cnblogs.com/yyuuee/p/14473352.html
Copyright © 2011-2022 走看看