k8s安装metric server和了解namespace【命名空间】,含k8s pod状态为ImagePullBackOff处理方法

news/2024/11/24 4:10:10/

文章目录

  • 说明
  • metrics server
    • 镜像和包下载并上传到服务器
    • 镜像解压【每一个节点】
    • 软件包安装【master节点】
      • 配置文件修改
      • 应用修改配置
      • 配置文件重命名
      • metrics服务状态查看
    • 测试
      • 查看node及pod监控指标
      • top精简查看
      • top中使用率m说明
      • top报错error处理
  • namespace【命名空间】
    • 说明
    • 查看所有Namespace
      • 查看namespace对应的label
    • 查看当前默认namespace
    • 查看单个namespace的详细信息
    • 创建namespace
      • 方式1,通过文件创建
      • 方式2,通过命令创建
    • 删除Namespace
    • 在指定命名空间上部署应用
      • 说明
      • 创建示例
    • Kubernetes pod状态为ImagePullBackOff处理方法
    • kubens工具的使用
      • 下载并拷贝到bin目录
      • 使用说明
        • `kubens`:列出当前上下文中的名称空间
        • `kubens `:更改当前上下文的活动命名空间
        • `kubens -`:切换到此上下文中的上一个命名空间

说明

  • 从 Kubernetes 1.8 开始,资源使用指标(如容器 CPU 和内存使用率)通过 Metrics API 在 Kubernetes 中获取, metrics-server 替代了heapster。Metrics Server 实现了Resource Metrics API,Metrics Server 是集群范围资源使用数据的聚合器。

  • Metrics Server 从每个节点上的 Kubelet 公开的 Summary API 中采集指标信息。

  • kubernetes metrics server 参考文档https://github.com/kubernetes-incubator/metrics-server

  • 把metric和namespace放在一起说是因为,metric查看使用率的时候会指定命名空间,怕你看不懂。

metrics server

镜像和包下载并上传到服务器

可以自行去网上下载最新的,也可以直接使用我下载好的一个版本【使用方式都是一样的】

k8s_metrics-server包.rar

下载完毕以后上传到主机,一共有2个文件【镜像和包】

[root@master k8s]# ls | grep met
metrics-img.tar
metrics-server-v0.3.6.tar.gz
[root@master k8s]# 

镜像解压【每一个节点】

首先需要把这个镜像拷贝到每一台服务器上【master和node节点】
然后再解压成镜像【每一台都需要解压】

[root@master k8s]# ls | grep met
metrics-img.tar
metrics-server-v0.3.6.tar.gz
[root@master k8s]# 
[root@master k8s]# scp metrics-img.tar node1:~
root@node1's password: 
metrics-img.tar                                        100%   39MB  21.3MB/s   00:01    
[root@master k8s]# scp metrics-img.tar node2:~
root@node2's password: 
metrics-img.tar                                        100%   39MB  21.3MB/s   00:01    
[root@master k8s]# 
[root@master k8s]# docker load -i metrics-img.tar 
932da5156413: Loading layer  3.062MB/3.062MB
7bf3709d22bb: Loading layer  38.13MB/38.13MB
Loaded image: k8s.gcr.io/metrics-server-amd64:v0.3.6
[root@master k8s]# 
[root@master k8s]# docker images |grep metri
k8s.gcr.io/metrics-server-amd64                                   v0.3.6     9dd718864ce6   21 months ago   39.9MB
[root@master k8s]## node节点别忘解压啊
[root@node1 ~]# docker load -i metrics-img.tar
932da5156413: Loading layer  3.062MB/3.062MB
7bf3709d22bb: Loading layer  38.13MB/38.13MB
Loaded image: k8s.gcr.io/metrics-server-amd64:v0.3.6
[root@node1 ~]# 
[root@node1 ~]# docker images |grep metri
k8s.gcr.io/metrics-server-amd64                                   v0.3.6     9dd718864ce6   21 months ago   39.9MB
[root@node1 ~]# 

软件包安装【master节点】

  • 看执行的命令,跟着命令做。
[root@master k8s]# tar zxvf metrics-server-v0.3.6.tar.gz
...
[root@master k8s]# cd kubernetes-sigs-metrics-server-d1f4f6f/
[root@master kubernetes-sigs-metrics-server-d1f4f6f]# ls
cmd                 deploy      hack      OWNERS          README.md          version
code-of-conduct.md  Gopkg.lock  LICENSE   OWNERS_ALIASES  SECURITY_CONTACTS
CONTRIBUTING.md     Gopkg.toml  Makefile  pkg             vendor
[root@master kubernetes-sigs-metrics-server-d1f4f6f]# cd deploy/
[root@master deploy]# ls
1.7  1.8+  docker  minikube
[root@master deploy]# cd 1.8+/
[root@master 1.8+]# ls
aggregated-metrics-reader.yaml  metrics-apiservice.yaml         resource-reader.yaml
auth-delegator.yaml             metrics-server-deployment.yaml
auth-reader.yaml                metrics-server-service.yaml
[root@master 1.8+]# #注意,当前在这个路径
[root@master 1.8+]# pwd
/k8s/kubernetes-sigs-metrics-server-d1f4f6f/deploy/1.8+
[root@master 1.8+]# 

配置文件修改

[root@master 1.8+]# pwd
/k8s/kubernetes-sigs-metrics-server-d1f4f6f/deploy/1.8+
[root@master 1.8+]# 
[root@master 1.8+]# vim metrics-server-deployment.yaml
# 下面行号中33行imagePullPolicy的值改为IfNotPresent
#并且34-38是新增内容,复制过去即可
...33         imagePullPolicy: IfNotPresent34         command: 35         - /metrics-server 36         - --metric-resolution=30s 37         - --kubelet-insecure-tls38         - --kubelet-preferred-address-types=InternalIP
...# 修改完成后是这样的
[root@master 1.8+]# cat metrics-server-deployment.yaml | grep -A 6 imagePullPolicyimagePullPolicy: IfNotPresentcommand:- /metrics-server - --metric-resolution=30s - --kubelet-insecure-tls- --kubelet-preferred-address-types=InternalIPvolumeMounts:
[root@master 1.8+]# 

应用修改配置

复制下面的命令即可【.是应用当前位置所有配置文件】

[root@master 1.8+]# pwd
/k8s/kubernetes-sigs-metrics-server-d1f4f6f/deploy/1.8+
[root@master 1.8+]# 
[root@master 1.8+]# kubectl apply -f .
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
Warning: rbac.authorization.k8s.io/v1beta1 ClusterRoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 ClusterRoleBinding
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
Warning: rbac.authorization.k8s.io/v1beta1 RoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 RoleBinding
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
Warning: apiregistration.k8s.io/v1beta1 APIService is deprecated in v1.19+, unavailable in v1.22+; use apiregistration.k8s.io/v1 APIService
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
serviceaccount/metrics-server created
deployment.apps/metrics-server created
service/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
[root@master 1.8+]# 

配置文件重命名

不做也可,做了更规范一点,没坏处。

[root@master 1.8+]# pwd
/k8s/kubernetes-sigs-metrics-server-d1f4f6f/deploy/1.8+
[root@master 1.8+]# 
[root@master 1.8+]# cd /k8s
[root@master k8s]# ls | grep kubernetes-sigs-metrics-server-d1f4f6f/
[root@master k8s]# ls | grep kubernetes-sigs-metr
kubernetes-sigs-metrics-server-d1f4f6f
[root@master k8s]# 
[root@master k8s]# mv kubernetes-sigs-metrics-server-d1f4f6f/ metric
[root@master k8s]# 

至此,metrics就配置完成了。

metrics服务状态查看

现在也可以看到metrics的pod状态是running的
命令:kubectl get pods -n kube-system

[root@master k8s]# kubectl get ns
NAME              STATUS   AGE
default           Active   4d3h
kube-node-lease   Active   4d3h
kube-public       Active   4d3h
kube-system       Active   4d3h
[root@master k8s]# kubectl get pods -n kube-system | tail -n 2
kube-scheduler-master                      1/1     Running   12         4d3h
metrics-server-644c7f4f6d-xb9bz            1/1     Running   0          6m39s
[root@master k8s]# 
  • api中也有这个服务
[root@master ~]# kubectl api-versions | grep me
metrics.k8s.io/v1beta1
[root@master ~]# 

测试

查看node及pod监控指标

node:kubectl top nodes
pod:kubectl top pod --all-namespaces

[root@master ~]# kubectl top nodes
W0706 16:03:01.500535  125671 top_node.go:119] Using json format to get metrics. Next release will switch to protocol-buffers, switch early by passing --use-protocol-buffers flag
NAME     CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
master   319m         7%     1976Mi          53%       
node1    132m         3%     856Mi           23%       
node2    141m         3%     841Mi           22%       
[root@master ~]# 
[root@master ~]# kubectl top pods -n kube-system
W0706 16:03:03.934225  125697 top_pod.go:140] Using json format to get metrics. Next release will switch to protocol-buffers, switch early by passing --use-protocol-buffers flag
NAME                                       CPU(cores)   MEMORY(bytes)   
calico-kube-controllers-78d6f96c7b-p4svs   4m           32Mi            
calico-node-cc4fc                          40m          134Mi           
calico-node-stdfj                          40m          138Mi           
calico-node-zhhz7                          58m          132Mi           
coredns-545d6fc579-6kb9x                   3m           28Mi            
coredns-545d6fc579-v74hg                   3m           19Mi            
etcd-master                                18m          271Mi           
kube-apiserver-master                      66m          387Mi           
kube-controller-manager-master             21m          77Mi            
kube-proxy-45qgd                           1m           25Mi            
kube-proxy-fdhpw                           1m           35Mi            
kube-proxy-zf6nt                           1m           25Mi            
kube-scheduler-master                      4m           35Mi            
metrics-server-bcfb98c76-w87q9             2m           13Mi            
[root@master ~]#

top精简查看

默认执行会有一堆提示,如果不想要这些提示,直接在后面加上参数:--use-protocol-buffers即可【提示中最后有参数说明的哈】

[root@master ~]# kubectl top nodes
W0706 16:45:18.630117   42684 top_node.go:119] Using json format to get metrics. Next release will switch to protocol-buffers, switch early by passing --use-protocol-buffers flag
NAME     CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
master   317m         7%     1979Mi          53%       
node1    140m         3%     849Mi           23%       
node2    138m         3%     842Mi           22%       
[root@master ~]# 
[root@master ~]# kubectl top nodes --use-protocol-buffers
NAME     CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
master   324m         8%     1979Mi          53%       
node1    140m         3%     850Mi           23%       
node2    139m         3%     841Mi           22%       
[root@master ~]#

top中使用率m说明

  • 一核心会分成1000个微核心,一个微核心为1m,如下cpu(cores)中324m就表示324个微核心。
[root@master ~]# kubectl top nodes --use-protocol-buffers
NAME     CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
master   324m         8%     1979Mi          53%       
node1    140m         3%     850Mi           23%       
node2    139m         3%     841Mi           22%       
[root@master ~]# 
  • 核心计算百分比方式,需要先知道自己有多少颗cpu,命令:lscpu,一颗cpu是1000微核心,得出总微核心以后就可以计算了,如上master使用了324m,则master的使用率为:
    324/4000*100=8.1%
[root@master ~]# lscpu | grep CPU\(
CPU(s):                4
  • 问题来了,你觉得nodes中已经有CPU的%了,还自己算个der?
    是的,node使用率已经有了,但pod没有,所有pod都需要自己计算的,要知道m这个东西是啥才是最重要的。
[root@master ~]# kubectl top pods -n kube-system 
W0706 16:53:45.335507   52024 top_pod.go:140] Using json format to get metrics. Next release will switch to protocol-buffers, switch early by passing --use-protocol-buffers flag
NAME                                       CPU(cores)   MEMORY(bytes)   
calico-kube-controllers-78d6f96c7b-p4svs   4m           32Mi            
calico-node-cc4fc                          41m          134Mi           
calico-node-stdfj                          56m          137Mi           
calico-node-zhhz7                          55m          133Mi           
coredns-545d6fc579-6kb9x                   4m           27Mi            
coredns-545d6fc579-v74hg                   4m           20Mi            
etcd-master                                18m          269Mi           
kube-apiserver-master                      69m          383Mi           
kube-controller-manager-master             20m          77Mi            
kube-proxy-45qgd                           1m           25Mi            
kube-proxy-fdhpw                           1m           34Mi            
kube-proxy-zf6nt                           1m           26Mi            
kube-scheduler-master                      4m           35Mi            
metrics-server-bcfb98c76-w87q9             1m           13Mi            
[root@master ~]# 

top报错error处理

metrics所有服务状态都正常,但是执行top的时候,就会报如下错误
在这里插入图片描述
这是因为应用修改配置需要时间,还没配置完成了,等待一会即可【前提是保证上面的步骤没有遗漏和配置文件修改正确】。
如果等待时间漫长了依然不行【如果在VMware的虚拟机上,确定本地物理机cpu没有处于满负荷状态(资源管理器查看使用率是不是100%)】,在master节点将metric的tar包放到/root目录下重头开始一遍即可】

namespace【命名空间】

说明

  • Kubernetes 支持多个虚拟集群,它们底层依赖于同一个物理集群。这些虚拟集群被称为命名空间。
  • 在一个Kubernetes集群中可以使用namespace创建多个“虚拟集群”,这些namespace之间完全隔离,但可以通过某种方式,让一个namespace中的service可以访问到其他的namespace中的服务,我们在CentOS中部署kubernetes1.6集群的时候就用到了好几个跨越namespace的服务,比如Traefik ingress和kube-systemnamespace下的service就可以为整个集群提供服务,这些都需要通过RBAC定义集群级别的角色来实现。

查看所有Namespace

  • 查看单个:kubectl get namespace 名称【一般不会这么用】
  • 查看全部
    • 方式1:kubectl get ns【缩写】
    • 方式2:kubectl get namespace【全拼,这个namespace可以在后面加s用复数形式】
[root@master ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   4d8h
kube-node-lease   Active   4d8h
kube-public       Active   4d8h
kube-system       Active   4d8h
ns1               Active   39m
[root@master ~]# kubectl get namespaces
NAME              STATUS   AGE
default           Active   4d8h
kube-node-lease   Active   4d8h
kube-public       Active   4d8h
kube-system       Active   4d8h
ns1               Active   39m
[root@master ~]# 
  • Kubernetes以三个初始名称空间开头:

    • default 没有其他命名空间的对象的默认命名空间.
    • kube-system系统创建的对象的命名空间.
    • kube-public此命名空间是自动创建的,并且可供所有用户(包括未经过身份验证的用户)读取.此命名空间主要用于集群使用,关联的一些资源在集群中是可见的并且可以公开读取。此命名空间的公共方面知识一个约定,但不是非要这么要求。
  • 命名空间可以分为两个阶段:

    • Active 当前命名空间正在被使用。
    • Terminating 这个Namespace正在被删除,并且不能用于新对象。

查看namespace对应的label

命令:kubectl get namespaces --show-labels

[root@master ~]# kubectl get namespaces --show-labels 
NAME              STATUS   AGE    LABELS
ccx               Active   8m2s   kubernetes.io/metadata.name=ccx
ccxhero           Active   73s    kubernetes.io/metadata.name=ccxhero,name=ccxhero
default           Active   4d8h   kubernetes.io/metadata.name=default
kube-node-lease   Active   4d8h   kubernetes.io/metadata.name=kube-node-lease
kube-public       Active   4d8h   kubernetes.io/metadata.name=kube-public
kube-system       Active   4d8h   kubernetes.io/metadata.name=kube-system
ns1               Active   60m    kubernetes.io/metadata.name=ns1

查看当前默认namespace

命令:kubectl config get-contexts
结果中 NAMESPACE就是当前所处ns空间了。

root@master ~]# kubectl config  get-contexts 
CURRENT   NAME                          CLUSTER      AUTHINFO           NAMESPACE
*         kubernetes-admin@kubernetes   kubernetes   kubernetes-admin   default
[root@master ~]# 

查看单个namespace的详细信息

命令:kubectl describe namespaces 名称

[root@master ~]# kubectl describe namespaces default 
Name:         default
Labels:       kubernetes.io/metadata.name=default
Annotations:  <none>
Status:       ActiveNo resource quota.No LimitRange resource.
[root@master ~]# kubectl describe namespaces kube-system 
Name:         kube-system
Labels:       kubernetes.io/metadata.name=kube-system
Annotations:  <none>
Status:       ActiveNo resource quota.No LimitRange resource.
[root@master ~]# 

创建namespace

方式1,通过文件创建

  • 创建一个名为my-namespace.yaml【可以在任意路径创建,名称自定义,后缀固定】的新YAML文件,其中包含以下内容:
    版本v1自定义,name自定义
    下面这是和命令创建是一摸一样的
[root@master ~]# cat my-namespace.yaml
apiVersion: v1
kind: Namespace
metadata:name: ccx
[root@master ~]# 
  • 但通过配置文件肯定是指定labels的意义更大,创建方式如下。
[root@master ~]# cat my-namespace.yaml 
{"apiVersion": "v1","kind": "Namespace","metadata": {"name": "ccxhero","labels": {"name": "ccxhero"}}
}
[root@master ~]#
[root@master ~]# kubectl create -f my-namespace.yaml 
namespace/ccxhero created
[root@master ~]# kubectl get ns
NAME              STATUS   AGE
ccx               Active   7m2s
ccxhero           Active   13s
default           Active   4d8h
kube-node-lease   Active   4d8h
kube-public       Active   4d8h
kube-system       Active   4d8h
ns1               Active   59m
  • 查看其对应的labels。
[root@master ~]# kubectl get namespaces --show-labels 
NAME              STATUS   AGE    LABELS
ccx               Active   8m2s   kubernetes.io/metadata.name=ccx
ccxhero           Active   73s    kubernetes.io/metadata.name=ccxhero,name=ccxhero
default           Active   4d8h   kubernetes.io/metadata.name=default
kube-node-lease   Active   4d8h   kubernetes.io/metadata.name=kube-node-lease
kube-public       Active   4d8h   kubernetes.io/metadata.name=kube-public
kube-system       Active   4d8h   kubernetes.io/metadata.name=kube-system
ns1               Active   60m    kubernetes.io/metadata.name=ns1
[root@master ~]# 
  • 然后通过一条命令生成
[root@master ~]# kubectl apply -f ./my-namespace.yaml 
namespace/ccx created
[root@master ~]# 
[root@master ~]# kubectl get ns
NAME              STATUS   AGE
ccx               Active   9s
default           Active   4d8h
kube-node-lease   Active   4d8h
kube-public       Active   4d8h
kube-system       Active   4d8h

方式2,通过命令创建

  • 语法:
kubectl create namespace <create-name> 
  • 如,现在创建一个ccx1的空间
[root@master ~]# kubectl create namespace ccx1
namespace/ccx1 created
[root@master ~]# 
[root@master ~]# kubectl get ns
NAME              STATUS   AGE
ccx               Active   2m13s
ccx1              Active   7s
default           Active   4d8h
  • 可以加上一个-f参数,类似于强制创建,如:
    kubectl create -f namespace ccx1

删除Namespace

  • 注:谨慎删除命名空间,删除前先执行:kubectl get pods -n 需要删除的ns先确定里面是否有pod或已有pod是否不需要了,因为删除ns后,里面的pod会一并被删除,不可恢复。
  • 语法:
kubectl delete namespaces <insert-some-namespace-name>
  • 如,我现在删除ccx1的空间
[root@master ~]# 
[root@master ~]# kubectl delete namespaces ccx1
namespace "ccx1" deleted
[root@master ~]# 
[root@master ~]# kubectl get ns
NAME              STATUS   AGE
ccx               Active   3m44s
default           Active   4d8h

在指定命名空间上部署应用

说明

  • 下面这是官方英文文档,我也是翻译里面的内容,跟着做的而已。
    部署流程

  • 语法

kubeclt create deployment 自定义pod名称 --image=镜像仓库名称 -n=命名空间名称 --replicas=自定义副本数#镜像仓库查看
[root@master ~]# docker images | grep ng
nginx                                                             latest     d1a364dc548d   6 weeks ago     133MB
[root@master ~]## 命名空间查看
[root@master ~]# kubectl get ns
NAME              STATUS   AGE
ccx               Active   15h
ccxhero           Active   15h
default           Active   5d
kube-node-lease   Active   5d
kube-public       Active   5d
kube-system       Active   5d
ns1               Active   16h
[root@master ~]# #副本数
--replicas=这参数可以不要,默认是1,如果--replicas==2,则会创建2个该pod。

创建示例

  • 如,我在ccx命名空间里创建一个nginx,副本数为2的pod
# 创建前是空的
[root@master ~]# kubectl get pod -n ccx
No resources found in ccx namespace.
[root@master ~]# 
[root@master ~]# kubectl create deployment nginx-test --image=nginx -n=ccx --replicas=2
deployment.apps/nginx-test created
[root@master ~]#
  • 创建成功后如下
    因为我指定了2个副本数,所以会有2个pod生成
[root@master ~]# kubectl get pod -n ccx
NAME                          READY   STATUS             RESTARTS   AGE
nginx-test-795d659f45-j9m9b   0/1     ImagePullBackOff   0          6s
nginx-test-795d659f45-txf8l   0/1     ImagePullBackOff   0          6s
[root@master ~]#

Kubernetes pod状态为ImagePullBackOff处理方法

  • 可以看到我上面创建的2个pod的STATUS状态不是Running的,而是ImagePullBackOff,下面我们开始处理该错误。
  • 流程
    • 1、查看该命名空间下pod状态为ImagePullBackOff的NAME名称
      kubectl get pods -n ccx【ccx是命名空间名称】
    • 2、查看该pod的详细信息
      kubectl describe pod -n ccx nginx-test-795d659f45-j9m9b【ccx后面就是通过第一步获取的NAME】
  • 如下,我创建的nginx-test就是错误的,查看流程如下
    执行第二步以后就会打印所有信息,下面中会有error原因,原因各有不同,跟着报错原因做即可,因为我的是在内网环境,没有外网,没有配置镜像源,无法下载依赖,我可以手动复制下面报错中给出的网址,去一个外网上docker pull获取相关依赖镜像,导入即可,但我不想折腾,就不演示了,你只要会处理流程就行了。
    如果你是机子是通外网的,最简单的方法就是配置好阿里源,执行systemctl daemon-reload,systemctl restart docker,问题就解决了【我博客docker分类中有配置阿里源的方法】
[root@master ~]# kubectl get pods -n ccx
NAME                          READY   STATUS             RESTARTS   AGE
nginx-test-795d659f45-j9m9b   0/1     ImagePullBackOff   0          34m
nginx-test-795d659f45-txf8l   0/1     ImagePullBackOff   0          34m
[root@master ~]# 
[root@master ~]# kubectl describe pod -n ccx nginx-test-795d659f45-j9m9b
Name:         nginx-test-795d659f45-j9m9b
Namespace:    ccx
Priority:     0
Node:         node2/192.168.59.144
Start Time:   Wed, 07 Jul 2021 09:48:15 +0800
Labels:       app=nginx-testpod-template-hash=795d659f45
Annotations:  cni.projectcalico.org/podIP: 10.244.104.2/32cni.projectcalico.org/podIPs: 10.244.104.2/32
Status:       Pending
IP:           10.244.104.2
IPs:IP:           10.244.104.2
Controlled By:  ReplicaSet/nginx-test-795d659f45
Containers:nginx:Container ID:   Image:          nginxImage ID:       Port:           <none>Host Port:      <none>State:          WaitingReason:       ImagePullBackOffReady:          FalseRestart Count:  0Environment:    <none>Mounts:/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-vmhjt (ro)
Conditions:Type              StatusInitialized       True Ready             False ContainersReady   False PodScheduled      True 
Volumes:kube-api-access-vmhjt:Type:                    Projected (a volume that contains injected data from multiple sources)TokenExpirationSeconds:  3607ConfigMapName:           kube-root-ca.crtConfigMapOptional:       <nil>DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300snode.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:Type     Reason     Age                    From               Message----     ------     ----                   ----               -------Normal   Scheduled  34m                    default-scheduler  Successfully assigned ccx/nginx-test-795d659f45-j9m9b to node2Warning  Failed     34m                    kubelet            Failed to pull image "nginx": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on [::1]:53: read udp [::1]:55518->[::1]:53: read: connection refusedWarning  Failed     34m                    kubelet            Failed to pull image "nginx": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on [::1]:53: read udp [::1]:39653->[::1]:53: read: connection refusedWarning  Failed     33m                    kubelet            Failed to pull image "nginx": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on [::1]:53: read udp [::1]:40238->[::1]:53: read: connection refusedWarning  Failed     33m (x6 over 34m)      kubelet            Error: ImagePullBackOffWarning  Failed     32m (x4 over 34m)      kubelet            Error: ErrImagePullNormal   Pulling    32m (x4 over 34m)      kubelet            Pulling image "nginx"Warning  Failed     32m                    kubelet            Failed to pull image "nginx": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on [::1]:53: read udp [::1]:37451->[::1]:53: read: connection refusedNormal   BackOff    4m16s (x132 over 34m)  kubelet            Back-off pulling image "nginx"
[root@master ~]# 

kubens工具的使用

下载并拷贝到bin目录

  • 下载地址:
    kubens-命名空间管理工具
  • 解压后的脚本上传到主机上,增加x权限并移动到/bin/目录下
[root@master k8s]# ls| grep kubens
kubens
[root@master k8s]# chmod +x kubens
[root@master k8s]# mv kubens /bin/
[root@master k8s]# 

使用说明

kubens:列出当前上下文中的名称空间

正常情况下这是会列出你所有的命名空间的,并且当前所属空间颜色会被标黑或加深,但我这不知道为啥,显示不出。

[root@master ~]# kubens
[root@master ~]# 
  • 并且脚本中的值单独执行是能获取的
    不过没关系哈,切换这是可以正常使用的。
[root@master ~]#  kubectl get namespaces -o=jsonpath='{range .items[*].metadata.name}{@}{"\n"}{end}'
}ccx
ccxhero
default
kube-node-lease
kube-public
kube-system
ns1
[root@master ~]# }
  • 我们是可以通过命令查看默认ns和所有ns的
root@master ~]# kubectl config  get-contexts 
CURRENT   NAME                          CLUSTER      AUTHINFO           NAMESPACE
*         kubernetes-admin@kubernetes   kubernetes   kubernetes-admin   default
[root@master ~]# 
[root@master ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   4d8h
kube-node-lease   Active   4d8h
kube-public       Active   4d8h
kube-system       Active   4d8h
ns1               Active   26m

kubens <NAME>:更改当前上下文的活动命名空间

  • 如我现在是在默认空间default里面,是无法直接执行pod的,然后我直接切换到kube-system里面,即可看到现在所有pod了
[root@master ~]# kubectl config  get-contexts 
CURRENT   NAME                          CLUSTER      AUTHINFO           NAMESPACE
*         kubernetes-admin@kubernetes   kubernetes   kubernetes-admin   default
[root@master ~]# 
[root@master ~]# kubectl get pods
No resources found in default namespace.
[root@master ~]#
[root@master ~]# kubens kube-system
Context "kubernetes-admin@kubernetes" modified.
Active namespace is "kube-system".
[root@master ~]# 
[root@master ~]# kubectl get pods
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-78d6f96c7b-p4svs   1/1     Running   0          4d7h
calico-node-cc4fc                          1/1     Running   18         4d6h
calico-node-stdfj                          1/1     Running   20         4d7h
calico-node-zhhz7                          1/1     Running   1          4d7h
coredns-545d6fc579-6kb9x                   1/1     Running   0          4d8h
coredns-545d6fc579-v74hg                   1/1     Running   0          4d8h
etcd-master                                1/1     Running   1          4d8h
kube-apiserver-master                      1/1     Running   1          4d8h
kube-controller-manager-master             1/1     Running   11         4d8h
kube-proxy-45qgd                           1/1     Running   1          4d6h
kube-proxy-fdhpw                           1/1     Running   1          4d8h
kube-proxy-zf6nt                           1/1     Running   1          4d7h
kube-scheduler-master                      1/1     Running   12         4d8h
metrics-server-bcfb98c76-w87q9             1/1     Running   0          123m
[root@master ~]# 

kubens -:切换到此上下文中的上一个命名空间

  • 我上面是已经切换到kube-system空间中了,现在我直接执行kubens -就可以回到上一个空间了
[root@master ~]# kubens -
Context "kubernetes-admin@kubernetes" modified.
Active namespace is "default".
[root@master ~]# 
[root@master ~]# kubectl get pods
No resources found in default namespace.
[root@master ~]# 

可以看到执行命令后回到了默认的default空间。


http://www.ppmy.cn/news/561762.html

相关文章

n个元素中取m个元素的组合、排列问题

n个元素中取m个元素的组合 如A{1,2,3}则有这些组合&#xff1a;1,2,3,12,13,23,123; 我们可以把问题分解如下&#xff1a; 1&#xff09;求数组中由1到n个元素的组合f(n,m) (m>1 && m<n;n为数组元素个数)&#xff1b; 2&#xff09;对于f(n,m)&#xff0c;我们从…

阵列卡直通模式和raid模式_linux入门系列13--磁盘管理之RAID、LVM技术

前一篇文章学习了磁盘分区、格式化、挂载等相关知识,本文将讲解RAID和LVM技术。 磁盘管理操作主要是运维人员用的较多,如果只是单纯的开发人员,可以先略过本文。但是在很多小公司里往往都是一人多用,运维、开发通常都是同一个人,因此对个人的技能要求更高。即便不是如此,…

字典序排列之后, 求其中的第m个数

题目描述 给定整数n和m, 将1到n的这n个整数按字典序排列之后, 求其中的第m个数。 对于n11, m4, 按字典序排列依次为1, 10, 11, 2, 3, 4, 5, 6, 7, 8, 9, 因此第4个数是2. 对于n200, m25, 按字典序排列依次为1 10 100 101 102 103 104 105 106 107 108 109 11 110 111 112 113 …

Container exited with a non-zero exit code 134错误原因查找

问题&#xff1a;spark在yarn执行任务遇到如下的错误&#xff1a; 19/12/03 17:19:50 ERROR YarnScheduler: Lost executor 8 on hd060.corp.yodao.com: Container marked as failed: container_e84_1574035425015_31355_01_000009 on host: hd060.corp.yodao.com. Exit statu…

Matlab——m_map指南(3)——实例

m_map 实例 1、 clear all m_proj(ortho,lat, 48,long,-123);%投影方式,范围 m_coast(patch,r);%红色填充 m_grid(linest,-,xticklabels,[],yticklabels,[]);%标注为空 patch(.55*[-1 1 1 -1],.25*[-1 -1 1 1]-.55,w);%四个点,白色填充 text(0,-.55,M\_Map,fontsize,25,color…

“n个球放到m个盒子”问题整理

n个球放到m个盒子 以8个球放到3个盒子为例 1 球同&#xff0c;盒同&#xff0c;可空 思路一&#xff1a;8个球放到3个盒子 取球最少盒子取0个球&#xff0c;取球第二少的盒子取[0,4] 取球最少盒子取1个球&#xff0c;取球第二少的盒子取[1,3] 取球最少盒子取2个球&am…

RN6752/RN6752V1/RN6854M/RN6862M/RN6864M---台湾立敏RICHNEX AHD RX芯片介绍

台湾立敏RICHNEX AHD RX芯片介绍 RICHNEX 公司简介 RICHNEX&#xff0c;台湾立敏电子股份有限公司&#xff0c;隶属于RICHTEK集团&#xff0c;成立于2008年&#xff0c;是一家无晶圆IC设计公司&#xff0c;主要从事模数混合类IC设计&#xff0c;主要应用于车载、安防、消费类…

LeetCode(134) Gas Station

题目 There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from station i to its next station (i1). You begin the journey with an e…