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 def-ns-admin@kubernetes --cluster=kubernetes --user=def-ns-admin \
--kubeconfig=/root/def-ns-admin.conf
Context "def-ns-admin@kubernetes" created.
# 切换用户,此时可以用/root/def-ns-admin.conf文件进行登录
# 认证账号必须是ServiceAccount,被dashboard pod拿来进行认证集群认证
kubectl config use-context def-ns-admin@kubernetes --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/

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

  1. Kubernetes 学习22 kubernetes容器资源需求资源限制及HeapSter(翻车章节)

    一.概述 1.接下来介绍在k8s上运行pod对象时我们如何去监控我们系统级的资源指标以及业务级别的资源指标.数据如何获取和监控.在此之前先介绍一下Pod对象的资源请求和资源限制.即容器的资源需求和资源 ...

  2. k8s系列--- dashboard认证及分级授权

    http://blog.itpub.net/28916011/viewspace-2215214/ 因版本不一样,略有改动 Dashboard官方地址: https://github.com/kube ...

  3. Kubernetes:容器资源需求与限制(约束)

    Blog:博客园 个人 A Container is guaranteed to have as much memory as it requests, but is not allowed to u ...

  4. k8s资源需求及资源限制

    在k8s上,可由容器或pod请求或消费的计算资源时指cpu和内存,这也是目前仅有的受支持的两种类型.相比较来说,cpu属于可压缩资源,即资源额度可按需收缩,而内存则是不可压缩型资源,对其执行收缩操作可 ...

  5. K8S 容器的资源需求、资源限制

    容器的资源需求,资源限制 requests:需求,最低保障: limits:限制,硬限制: CPU: 1 颗逻辑 CPU 1=1000,millicores 500m=0.5CPU QoS: Gura ...

  6. 十六, k8s集群资源需求和限制, 以及pod驱逐策略。

    目录 容器的资源需求和资源限制 QoS Classes分类 Guaranteed Burstable Best-Effort kubernetes之node资源紧缺时pod驱逐机制 Qos Class ...

  7. k8s-容器资源需求、资源限制及HeapSter-二十二

    一.容器资源需求.资源限制 资源需求.资源限制:指的是cpu.内存等资源: 资源需求.资源限制的两个关键字: request:需求,最低保障,在调度时,这个节点必须要满足request需求的资源大小: ...

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

    本文的相关源码位于 https://github.com/dreamingodd/CA-generation-demo 0.Nginx配置Https双向认证 首先配置Https双向认证的服务器资源. ...

  9. K8s集群认证之RBAC

    kubernetes认证,授权概括总结: RBAC简明总结摘要:API Server认证授权过程: subject(主体)----->认证----->授权[action(可做什么)]--- ...

随机推荐

  1. slax linux的定制

    由于数据结构教学的需要,需要用到linux,要求就是小,启动快,可定制性强,恰好slax正好满足要求,以下就是定制slax linux的过程记录: 什么是Slax Slax是一个基于Linux的Liv ...

  2. springboot实现异步调用

    介绍 所谓的异步执行其实就是使用多线程的方式实现异步调用. 异步有什么好处呢? 如果一个业务逻辑执行完成需要多个步骤,也就是调用多个方法去执行, 这个时候异步执行比同步执行相应更快.不过要注意异步请求 ...

  3. Cesium入门-3-官方完整实例

    实例核心代码 //资源访问令牌 Cesium token Cesium.Ion.defaultAccessToken='eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ ...

  4. centos7.4出现yum command not found

    购买的云服务器运行yum命令出现yum command not found. 通过将云主机自带的yum和python卸载掉,并且同时需要关注/usr/bin/yum文件的首行解释.我定义其为" ...

  5. 【工具】sqlmap 中文手册 使用教程

    日期:2019-07-28 09:27:27 更新: 作者:Bay0net 介绍:自己翻译了一下,做个备忘. 0x01. 基本信息 官网 sqlmap: automatic SQL injection ...

  6. VMware安装Centos7超详细过程

    本篇文章主要介绍了VMware安装Centos7超详细过程(图文),具有一定的参考价值,感兴趣的小伙伴们可以参考一下 一.软硬件准备 软件:推荐使用VMwear,我用的是VMwear 12 镜像:Ce ...

  7. 删除badi及badi interface

    转自:https://blog.csdn.net/zeewjj/article/details/7963147 Use Function Module OO_INTERFACE_DELETE and ...

  8. System.Web.UI.Page的用法,一定要学会懒

    在ASP.NET中,任何页面都是继承于System.Web.UI.Page,他提供了ASP.NET中的Response,Request,Session,Application的操作.在使用Visual ...

  9. orac l e数据库第一章

    数据库两种权限:                    1.系统权限 2.对象权限 数据库端口号:                     SQL SERVER  1433 MySql   3306 ...

  10. Install Virtualbox on CentOS7---(後話,最終還是沒有用virtualbox做VM server ,感覺只適用于桌面)

    參考: https://wiki.centos.org/zh-tw/HowTos/Virtualization/VirtualBox cd /etc/yum.repos.d wget http://d ...