k8s之dashboard认证、资源需求、资源限制及HeapSter

1.部署dashboard

kubernetes-dashboard运行时需要有sa账号提供权限

Dashboard官方地址:https://github.com/kubernetes/dashboard

# 在node1上下载镜像
docker pull googlecontainer/kubernetes-dashboard-amd64:v1.10.1
docker tag googlecontainer/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
# 在master上下载yaml文件
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
文件中需要做以下修改

a.创建一个sa并绑定到cluster-admin上

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system
---

b.修改Service的type为NodePort

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 31443
  type: NodePort
  selector:
    k8s-app: kubernetes-dashboard

# 获取不记名token
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk ‘{print $1}‘)

访问https://10.0.0.20:31443,将这一段内容复制到令牌中,即可看到dashboard面板

该部分内容参考:https://github.com/kubernetes/dashboard/wiki/Creating-sample-user

拿这个sa的token登录,pod就获得了这个sa的权限,即整个集群的管理权限,用命令行再创建个sa,限定它只能访问default名称空间

kubectl create serviceaccount def-ns-admin -n default
kubectl create rolebinding def-ns-admin --clusterrole=admin --serviceaccount=default:def-ns-admin
# 拿这个token登录到web页面,进去后只能看default名称空间
kubectl describe secret def-ns-admin-token-646gx

2.用kubeconfig的方法来验证登录

原理:将sa的token赋给一个用户,然后封装成kubeconfig文件,下面这些操作只是让def-ns-admin用户对kubernetes集群中的default名称空间具有管理权限;更广泛的用法是让某用户对不同集群都有管理权限.

cd /etc/kubernetes/pki
kubectl config set-cluster kubernetes --certificate-authority=./ca.crt --server="https://172.16.1.100:6443" --embed-certs=true --kubeconfig=/root/def-ns-admin.conf
kubectl config view --kubeconfig=/root/def-ns-admin.conf
kubectl get secret def-ns-admin-token-646gx -o json
DEF_NS_ADMIN_TOKEN=$(kubectl get secret  def-ns-admin-token-646gx  -o jsonpath={.data.token}|base64 -d)
kubectl config set-credentials def-ns-admin --token=$DEF_NS_ADMIN_TOKEN --kubeconfig=/root/def-ns-admin.conf
User "def-ns-admin" set
# 创建一个上下文
kubectl config set-context [email protected] --cluster=kubernetes --user=def-ns-admin --kubeconfig=/root/def-ns-admin.conf
Context "[email protected]" created.
# 切换用户,此时可以用/root/def-ns-admin.conf文件进行登录
# 认证账号必须是ServiceAccount,被dashboard pod拿来进行认证集群认证
kubectl config use-context [email protected] --kubeconfig=/root/def-ns-admin.conf

3.容器的资源需求、资源限制

request:需求,最低保障,在调度时,节点必须满足request需求的资源大小才符合需求;

limits:限制、硬限制,限制容器无论怎么运行都不会超过limits的值.

CPU:一颗物理CPU杯虚拟成两颗逻辑cpu,一个逻辑cpu还可以划分为1000个毫核(millcores),所以500m=0.5个CPU,相当于二分之一的核心.

kubectl explain pods.spec.containers.resources.requests
kubectl explain pods.spec.containers.resources.limits
# -m 1表示启动一个子进程对内存做压测,-c 1表示启动一个子进程对cpu做压测,
默认stress-ng的一个子进程使用256M内存
cat pod-demo.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-demo
  labels:
    app: myapp
    tier: frontend
spec:
  containers:
  - name: myapp
    image: ikubernetes/stress-ng:v1
    command: ["/usr/bin/stress-ng", "-m 1", "-c 1", "--metrics-brief"]
    resources:
      requests:
        cpu: "200m"
        memory: "128Mi"
      limits:
        cpu: "1" # 没有单位表示是1个cpu
        memory: "200Mi"
# 容器分配了资源限制后,k8s会自动分配一个Qos(服务质量)

Qos可以分为三类:

Guranteed:表示每个容器的cpu和内存资源设置了相同的requests和limits值,即cpu.requests=cpu.limits和memory.requests=memory.limits,Guranteed会确保这类pod有最高的优先级,会被优先运行的,即使节点上的资源不够用;

Burstable:表示pod中至少有一个容器设置了cpu或内存资源的requests属性,可能没有定义limits属性,那么这类pod具有中等优先级;

BestEffort:指没有任何一个容器设置了requests或者limits属性,那么这类pod是最低优先级,当这类pod的资源不够用时,BestEffort中的容器会被优先终止,以便腾出资源来,给另外两类pod中的容器正常运行.

4.HeapSter

HeapSter的作用是收集个节点pod的资源使用情况,然后以图形界面展示给用户.kubelet中的cAdvisor负责收集每个节点上的资源使用情况,然后把信息存储HeapSter中,HeapSter再把数据持久化的存储在数据库InfluxDB中,然后我们再通过Grafana来图形化展示.

一般监控的指标包括k8s集群的系统指标、容器指标和应用指标. 默认InfluxDB使用的是存储卷是emptyDir,容器一关数据就没了,所以要换成glusterfs等存储卷才行.

InfluxDB--https://github.com/kubernetes/heapster/blob/master/deploy/kube-config/influxdb/influxdb.yaml

mkdir metrics && cd metrics
wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/influxdb.yaml
# 访问https://github.com/kubernetes/heapster/tree/master/deploy/kube-config/rbac
wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/rbac/heapster-rbac.yaml
# 访问https://github.com/kubernetes/heapster/blob/master/deploy/kube-config/influxdb/heapster.yaml
wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/heapster.yaml
# 访问https://github.com/kubernetes/heapster/blob/master/deploy/kube-config/influxdb/grafana.yaml
# 为了能在集群外部访问Grafana,所以在文件最后一行加个type: NodePort
# 在v1.12之后的版本,已经完全抛弃了heapster,模板地址:https://grafana.com/dashboards/9733
wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/grafana.yaml

参考博客:http://blog.itpub.net/28916011/viewspace-2215214/

参考博客:http://blog.itpub.net/28916011/viewspace-2216324/

原文地址:https://www.cnblogs.com/fawaikuangtu123/p/11296191.html

时间: 2024-08-30 02:05:07

k8s之dashboard认证、资源需求、资源限制及HeapSter的相关文章

十四. k8s资源需求和限制, 以及pod驱逐策略

目录 容器的资源需求和资源限制 QoS Classes分类 Guaranteed Burstable Best-Effort kubernetes之node资源紧缺时pod驱逐机制 Qos Class优先级排名 可压缩资源与不可压缩资源 存储资源不足 举例 内存资源不足 举例 Node OOM (Out Of Memory) 总结 参考链接 容器的资源需求和资源限制 requests:需求,最低保障, 保证被调度的节点上至少有的资源配额 limits:限制,硬限制, 容器可以分配到的最大资源配额

14.容器资源需求、资源限制及HeapSter

一.容器资源需求及资源限制: 1.概念 Requests:资源需求,最低保障. Limits:资源限额,硬限制.限制容器无论怎么运行都不能超过的资源阈值 一般来讲,requests <= limits CPU:可压缩资源.一颗逻辑CPU,即一核.1=1000,millicores 内存:不可压缩资源.Ei,Pi,Ti,Gi,Mi,Ki ==> 以1024为进制. 2.定义资源需求及限制 资源需求和资源限制都是定义在容器上的. [[email protected] ~]# kubectl exp

如何使用Java访问双向认证的Https资源

本文的相关源码位于 https://github.com/dreamingodd/CA-generation-demo 0.Nginx配置Https双向认证 首先配置Https双向认证的服务器资源. 可以参考:http://www.cnblogs.com/dreamingodd/p/7357029.html 完成之后如下效果: 1.导入cacerts进行访问 首先将服务器证书导入keystore cacerts,默认密码为changeit,如果需要修改密码就改一下. keytool -impor

项目测试中资源需求

项目测试中的资源需求包括硬件资源.软件资源与人力资源,团队书写测试说明书的时候需要涉及到这方面的内容.其中,硬件资源不仅是安卓手机,还有服务器资源,而软件资源主要是Eclipse.人力资源中,除了要求具有一定的知识和技能以外,还需要具备对项目的热情与投入.一般而言,资源质量越好,项目软件活动时间就越短,所以合理分配项目资源需求具有极大意义.在项目测试中,分别对硬件资源.软件资源.人力资源进行了相关的汇总,便于观察资源需求对项目活动的影响.

02.规划过程组表格-活动资源需求表

活动资源需求表 项目名称 准备日期 编号 资源类型 数量 假设条件 说明 原文地址:https://www.cnblogs.com/aixiaoxiaoyu/p/9001972.html

容器资源需求、资源限制(二十二)

官网:https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ 容器的资源需求,资源限制 Request:需求,最低保障: Limits:限制,硬限制 CPU: 1颗逻辑CPU 1=1000,millcores 500m=0.5CPU 内存: E.P.T.G.M.K.Ei.Pi Request保障容器CPU资源可用,limits限制资源 编写Demo测试, 查看CPU压缩使用情况 [

使用OAuth2实现认证服务器和资源服务器

在项目中有用到OAuth2,这里记录下研究成功.详细介绍可参考官方文档:https://tools.ietf.org/html/rfc6749 准备工作: 1.spring-oauth-server 认证服务器和资源服务器(也可以分开).作为一个jar包提供给客户端使用 2.spring-security-demo 客户端.资源所有者,需要依赖spring-oauth-server进行授权认证 spring-oauth-server pom依赖: <dependency> <groupI

kubernetes dashboard 认证及分级授权

概述 前面介绍了kubernetes的两个东西,认证和授权 在kubernetes中我们对API server的一次访问大概会包含哪些信息?简单来讲它是restfule风格接口,也就是某个用户对某个操作执行了某个操作. subject --> action --> object 因此我们授权定义也是围绕这种方式展开的,同时我们也不能允许所有用户随意就能够访问我们k8s 所以我们讲到了认证,讲到了它的两种认证方式,第一种叫token,一种叫证书认证,即tls,当然还有第三种方式认证,账号和密码(

Kubernetes之(十六)Dashboard认证访问

目录 Kubernetes之(十六)Dashboard认证访问 Dashboard部署 token认证 kube-config认证 总结 Kubernetes之(十六)Dashboard认证访问 Dashboard:https://github.com/kubernetes/dashboard Dashboard部署 下载yaml文件 [[email protected] manifests]# wget https://raw.githubusercontent.com/kubernetes/