2021-04-25周日

RBAC
基于角色的访问控制
角色绑定
角色
:role :特定命名空间访问权限
clusterrole:所有命名空间访问权限
角色绑定:
roleBinding:角色绑定到主体
ClusterRoleBinding:集群角色绑定到主体
主体:
user:用户
group:用户组
serviceAcount:服务账号

创建命名空间
kubectl create ns roledemo
在新创建的命名空间创建pod
kubectl run nginx --image=nginx -n roledemo
kubectl get pods -n roledemo
第三步
创建角色
vi rbac-role.yaml
定义结构如下

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: mynamespace
  name: example-role
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]

kubectl apply -f rbac-role.yaml
kubetcl get role -n roledemo
4创建角色绑定
ps:metadata可以改

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: example-rolebinding
  namespace: mynamespace
subjects:
- kind: User
  name: example-user
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: example-role
  apiGroup: rbac.authorization.k8s.io

kubectl apply -f rbac-rolebinding.yaml
kubetcl get role.rolebinding -n roledemo
使用证书识别身份------略

ingress

1.把端口号对外暴露,通过ip+端口号进行访问
使用Service里面的NodePort实现
2.NodePort缺陷
在每个节点上都会起到端口,在访问时候通过任何节点,都会节点ip+暴露端口号访问
意味着每个端口只能使用一次,一个端口对应一个应用
实际访问中都使用域名,根据不同域名跳转到不同端口服务中

Ingress和Pod关系
Pod和ingress通过service关联的
Ingress作为统一入口,由service关联一组pod

ingress工作流程

5.如何使用igress
第一步部署ingress Controller

第二步创建ingress规则
这里选择官方维护nginx控制器,实现部署
6使用ingress对外暴露应用
(1)创建nginx应用,对外暴露端口使用NodePort
kubectl create deployment web --image=nginx
kubectl get deploy
暴露端口
kubectl expose deployment web --port=80 --target-port=80 --type=NodePort
(2)部署ingress contronller
这个参考ingress-controller.yaml文件
注意将hostNetwork变为true
vi ingress-con.yaml
kubectl apply -f ingress-con.yaml

查看igress controller状态
kubectl get pods -n ingress-nginx
(3)创建ingress规则
vi ingress-h.yaml
kubectl apply -f ingress-h.yaml
kubectl get pods -n ingress-nginx -o wide

查看端口信息 netstat -antp|grep 80

(4)在window系统host文件中添加域名访问规则(限虚拟机)

核心技术Helm

1.引入:

(1)之前部署应用过程
编写yaml文件
deployment
对外暴露端口 service
ingress
如果使用之前方式部署单一应用,少数服务的应用,比较合适
比如部署微服务项目,可能有几十个服务,每个服务都有一套yaml问剑,需要维护大量yaml文件,版本管理特别不方便

使用helm可以解决哪些问题
(1)使用helm可以把yaml作为一个整体管理
(2)实现yaml文件高效复用
(3)使用helm应用级别的版本管理

2.helm介绍
helm是kubernetes的包管理工具,就像linux下的包管理工具,如yum、apt等,可以很方便的将之前打包好的yaml文件部署到kubernetes上

(1)helm
是一个命令行客户端工具,
(2)chart
把yaml打包,是yaml的集合
(3)release
基于chart部署实体,应用级别的版本管理

helm在2019年发布v3版本
V3版本删除Tiller
release可以在不同命名空间重用
将chart推送到docker中
架构也变化了
V3之前版本
helm chart---->(tiller---->kube-apiserver-->操作deployment、service、ingress)括号内指在kubernetes中
v3
helm chart---->kube-config---->(kube-apiserver--操作deployment、service、ingress)括号内指在kubernetes中
helm安装(kubesphere已安装)
1下载helm安装压缩文件,上传到linux系统中
2.解压helm压缩文件,把解压之后helm目录复制到usr/bin目录下

2.配置helm仓库
(1)添加仓库
helm repo add 仓库名称 仓库地址
(2 )helm repo list 查看仓库地址
helm repo remove 仓库名

查找 helm search CHARTNAME
检查 helm inspect CHARTNAME
安装 helm install --name mem1 stable/memcached
获取状态信息 helm status mem1
列出 helm list [-a]
删除 helm delete [--purge] mem1
下载 helm fetch stable/redis
创建 helm create CHARTNAME
语法检测 helm lint CHARTNAME
打包 helm package CHARTNAME
显示状态 helm status NAME

helm list --namespace kubesphere-logging-system
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
elasticsearch-logging kubesphere-logging-system 1 2021-04-21 10:14:25.840834177 +0800 CST deployed elasticsearch-1.22.1 6.7.0-0217
elasticsearch-logging-curator kubesphere-logging-system 1 2021-04-21 10:14:27.742082055 +0800 CST deployed elasticsearch-curator-1.3.5.5.4-0217
logsidecar-injector kubesphere-logging-system 1 2021-04-21 10:15:29.765998991 +0800 CST deployed logsidecar-injector-0.1.0 0.1.0

helm repo list
Error: no repositories to show /我们当前是没有自己的仓库的
kubernetes进阶 -- helm包管理工具https://blog.csdn.net/thermal_life/article/details/107283328

更新操作
helm repo update
删除操作
helm repo remove XXX

helm search hub fluent会搜索仓库

3.使用helm快速部署应用
第一步使用命令应用
helm search repo 名称
第二步根据搜索内容选择安装
helm install 安装之后名称 搜索之后应用名称
查看安装之后状态
helm list
helm status 安装之后名称

修改service的yaml文件,对外暴露端口
kubectl edit svc xxxxx

如何自己创建Chart
1.使用命令创建chart
helm create chart
chart.yaml 当前chart属性配置信息
templates:编写yaml文件放到这个目录中
values.yaml:yaml文件可以使用全局变量
2.在templates文件夹创建两个yaml文件
deployment.yaml
service.yaml

kubectl create deployment web --image=nginx --dry-run -o yaml>deployment.yaml
kubectl expose deployment web1 --port=80 --target-port=80 --type=NodePort -dry-run -o yaml >service.yaml

安装mychart
helm installer web1 mychart/

4.应用升级
helm upgrade chart名称

实现yaml高效复用
通过传递参数,动态渲染模板,yaml内容动态传入参数生成
values.yaml文件
在chart有values.yaml文件,定义yaml文件全局变量
1.在values.yaml定义变量和值
2.在具体yaml文件,获取定义和变量值

yaml文件中大体有几个地方不同
imag
tag
label
port
replicas

在values.yaml中定义值
在templates的yaml文件使用values.yaml定义变量
通过表达式形式使用全局变量
{{.Values.变量名称}}
{{.Release.Name}}
helm install --dry-run web2 mychart/

查看 kubectl get pods

持久存储

数据卷 emptydir,是本地存储,pod重启,数据不存在了,需要对数据持久化存储
1.nfs 网络存储 pod重启,数据还存在
找一台服务器nfs服务端,安装nfs,设置挂载路径,挂载路径需要创建
在k8s集群node节点安装nfs
在nfs服务器启动nfs服务
查看进程 ps -ef |grep nfs
在k8集群部署应用使用nfs持久网络存储
进入pod
kubectl exec -it pod名字 bash

pv 持久化存储和pvc持久化存储的调用
pv:对存储资源进行抽象,对外提供可以调用的地方,而内部自己实现(生产者)
pvc:用于调用,用户不需要关心内部实现细节(消费者)

实现基本流程

应用部署---->定义pvc(绑定pv)---->定义pv(存储容量、匹配模式、数据存储服务器ip、路径)

监控指标和方案
集群资源监控
1.监控指标
*集群监控
节点资源利用率
节点数
运行pods
*pod监控
容器指标
应用程序

2.监控平台搭建方案
prometheus+Grafana
(1)prometheus
开源
监控报警数据库
以HTTP协议周期性抓取被监控组件状态
不需要复杂的集成过程,使用http接口接入就可以了
(2)Grafana
开源的数据分析和可视化工具
支持多种数据源

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270

推荐阅读更多精彩内容