k8s安装metric server和了解namespace【命名空间】
学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取![外链图片转存中…(img-XuLj5J
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目录下重头开始一遍即可】
==============================================================================
-
Kubernetes 支持多个虚拟集群,它们底层依赖于同一个物理集群。这些虚拟集群被称为命名空间。
-
在一个Kubernetes集群中可以使用namespace创建多个“虚拟集群”,这些namespace之间完全隔离,但可以通过某种方式,让一个namespace中的service可以访问到其他的namespace中的服务,我们在CentOS中部署kubernetes1.6集群的时候就用到了好几个跨越namespace的服务,比如Traefik ingress和kube-systemnamespace下的service就可以为整个集群提供服务,这些都需要通过RBAC定义集群级别的角色来实现。
-
查看单个:
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
命令: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 ~]#
命令:kubectl describe namespaces 名称
[root@master ~]# kubectl describe namespaces default
Name: default
Labels: kubernetes.io/metadata.name=default
Annotations:
Status: Active
No resource quota.
No LimitRange resource.
[root@master ~]# kubectl describe namespaces kube-system
Name: kube-system
Labels: kubernetes.io/metadata.name=kube-system
Annotations:
Status: Active
No resource quota.
No LimitRange resource.
[root@master ~]#
方式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
- 如,现在创建一个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
-
注:谨慎删除命名空间,删除前先执行:
kubectl get pods -n 需要删除的ns
,先确定里面是否有pod或已有pod是否不需要了,因为删除ns后,里面的pod会一并被删除,不可恢复。 -
语法:
kubectl delete namespaces
- 如,我现在删除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
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
技术学习总结
学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。
最后面试分享
大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
[外链图片转存中…(img-XuLj5JgD-1712166649757)]
[外链图片转存中…(img-zy1gHfE0-1712166649757)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
技术学习总结
学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。
[外链图片转存中…(img-ywmZlAGq-1712166649757)]
[外链图片转存中…(img-TQWQVQW3-1712166649757)]
[外链图片转存中…(img-dNXK5HYG-1712166649758)]
最后面试分享
大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
[外链图片转存中…(img-Zvt6Y8gS-1712166649758)]
[外链图片转存中…(img-XfuScPqD-1712166649758)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
更多推荐
所有评论(0)