摘要:一、排序 ### 函数: ~~~ sort:正序 ~~~ sort_desc:倒序 二、正序: ### 函数:sort ~~~ 表达式:sort(node_memory_MemFree_bytes) ~~~ 输出结果:输出结果为顺序排序 三、倒序: ### 函数:sort_desc ~~~ 表达式:
阅读全文
摘要:一、对label进行处理 ### 2个label合并,赋值成一个新的label ~~~ # 函数:label_join ~~~ 表达式:label_join(node_filesystem_files_free, "new_label","","instance","mountpoint"):把in
阅读全文
摘要:一、去除小数点 ### 函数: ~~~ Ceil():四舍五入,向上取最接近的整数;比如2.79,向上取就是3 ~~~ floor():四舍五入:向下取最接近的整数,比如2.79,向下取就是2 二、去除小数点,向上取四舍五入 ### 函数:Ceil() ~~~ 表达式:ceil(predict_li
阅读全文
摘要:一、差值: ### 函数 ~~~ 函数:Delta:差值 二、查看和8h之前的差值是多少 ### 函数:delta ~~~ 表达式:delta(node_memory_MemFree_bytes[8h]) ~~~ 输出结果:和8小时之前的差值 Walter Savage Landor:strove
阅读全文
摘要:一、absent:判断监控指标是否正确 ### 查找k8s-master01内存监控值 ~~~ 表达式:node_memory_MemFree_bytes{instance="k8s-master01"} ~~~ 输出结果:254648320 二、absent返回值是什么: ### 函数:absen
阅读全文
摘要:一、predict_linear:预测性告警:查询预测性告警: ### 表达式: ~~~ node_filesystem_files_free:宿主机上一些分区的剩余空间 二、查找根节点的分区空间 ### 表达式: ~~~ node_filesystem_files_free{mountpoint=
阅读全文
摘要:一、Prometheus常用函数实例:查询kubelet_http_requests_total 二、查询表达式访问量:查询kubelet的访问量: ### 函数:无 ~~~ 表达式:kubelet_http_requests_total{endpoint="https-metrics",insta
阅读全文
摘要:一、Prometheus查询增长率:查询增长率:方法一:查询kubelet近1小时访问增长率 ### 函数:increase() ~~~ 表达式:increase(kubelet_http_requests_total{endpoint="https-metrics",instance="192.1
阅读全文
摘要:一、运算符: ### 集合运算: ~~~ 集合运算:and ,or,unless ### OR:查找小于等于2977,并且等于2977.7890625:or: ~~~ 并列关系,前面符合后面也需要符合 ~~~ node_memory_MemTotal_bytes/1024/1024 <= 2977
阅读全文
摘要:一、聚合:查看当前主机下有多少个节点和其使用的内存 二、sum:求和:sum(node_memory_MemTotal_bytes)/ 1024^2 计算3个节点的总内存数量 三、min:最小值:min:(node_memory_MemTotal_bytes) 查找当前所有资源下内存最小值 四、ma
阅读全文
摘要:一、过滤查询:过滤:Labelsets ### 查询语法: ~~~ offset:查看多少分钟之前的数据 offset 30m ~~~ Labelsets:过滤 ~~~ 过滤出具有 handler=“/login”的label的数据 二、绝对查询:查询http_request_total有多少个:查
阅读全文
摘要:一、匹配符: ### 匹配符:数学运算 ~~~ # 数学运算 ~~~ 数学运算:+-*/% ^ 二、查询node_memory_MemTotal_bytes值为内存总大小的字节:一般我们查看的是内存的GB或者兆 三、除以转换内存的值为兆node_memory_MemTotal_bytes/1024/
阅读全文
摘要:一、PromQL基本操作 ### 通过Prometheus通过自带的WEB-UI来查询 ~~~ # 查询方式一: 瞬时向量:包含该时间序列中最新的样本值 ~~~ # 查询方式二: 区间向量:带时间戳的:一段时间范围内的数据 ### 操作符优先级: ~~~ ^ ~~~ * / % ~~~ + - ~~
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:一、Prometheus概述:PrometheusMetrics架构图 二、PrometheusMetrics架构说明 ### PrometheusMetrics架构说明 ~~~ 主要核心是Prometheus server:prometheus-k8s-0 ~~~ 直接使用node节点存储的,查询
阅读全文
摘要:一、Metrics类型说明 ### summary类型的数据说明 ~~~ exporter接口: [root@k8s-master01 ~]# kubectl get po -n monitoring -owide NAME READY STATUS RESTARTS AGE IP NODE NOM
阅读全文
摘要:一、通过Chrome访问alert:http://alert.test.com/并进行初始操作配置:可以查看到当前的环境有多少告警 二、激活的Silence是:抑制那些告警;当我们需要维护那些节点时抑制一些告警不要让其发送一些告警信息 ### 注: ~~~ Active:正在运行的Silences
阅读全文
摘要:一、通过Chrome访问prometheus:http://prom.test.com/进入Prometheus初始UI:初始界面 二、Alerts:红色表示正在告警 ### 注: ~~~ Firing:正在告警 ~~~ Pending:已经出发一次,有可能在触发第二次 ~~~ Inactive:正
阅读全文
摘要:一、安装kube-prometheus ### 下载kube-prometheus的最新版本包 ~~~ # kube-prometheus下载地址: ~~~ https://github.com/coreos/kube-prometheus.git ~~~ ——>——> 最左边:main——>Swi
阅读全文
摘要:一、Prometheus.UI操作:通过Chrome访问Grafana ### 添加本地hosts文件 #C:\Windows\System32\drivers\etc 192.168.1.11 alert.test.com,grafana.test.com,prom.test.com 二、通过Ch
阅读全文
摘要:一、安装helm ### 安装helm的客户端工具到k8s集群中:https://helm.sh/docs/intro/install/ ~~~ 下载helm二进制程序包: [root@k8s-master01 helm]# wget https://get.helm.sh/helm-v3.5.4-
阅读全文
摘要:一、通过helm安装ingress ### 下载ingress版本包 ~~~ 添加ingress的helm仓库 [root@k8s-master01 ingress]# helm repo add ingress-nginx https://kubernetes.github.io/ingress-
阅读全文
摘要:附录一:报错处理 ### 报错现象 [root@k8s-master01 filebeat]# kubectl get po -n public-service -owide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINES
阅读全文
摘要:一、Prometheus介绍 ### Prometheus简介 ~~~ 在容器中使用的监控是Prometheus,容器的监控更复杂,更具有动态性,它的动态性更强。 ~~~ 使用传统的监控方式,可能不是很适合;所以就衍生了专属监控容器的监控工具 ~~~ Prometheus监控容器是做的非常好的监控工
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:一、通过kafka.UI查看监控数据 ### 通过Chrome登入Kibana:http://192.168.1.11:30495/ ~~~ ——>创建Index:设置——>Kibana:Index Patterns——>Create index pattern ~~~ ——>Index patte
阅读全文
摘要:一、部署logstash ### 创建logstash-configmap.yaml ~~~ 创建logstash-configmap [root@k8s-master01 filebeat]# vim logstash-configmap.yaml apiVersion: v1 kind: Con
阅读全文
摘要:一、部署APP+Filebeat ### 创建Flebeat-configmap.yaml资源文件 ~~~ # FIlebeat-congimap地址: https://github.com/dotbalo/k8s/blob/master/fklek/6.x/filebeat-configmap.y
阅读全文
摘要:一、验证日志输出采集是否正常 ### 进入Filebeat-pod查看是否正常启动 ~~~ 查看Filebeat容器 [root@k8s-master01 filebeat]# kubectl get po -n public-service -owide NAME READY STATUS RES
阅读全文
摘要:一、部署kafka: ### 组件helm+zookeeper+kafka ~~~ # 部署EFLK架构: ~~~ ElasticSearch+Filebeat+Logstash+Kibana+zookeeper+kafka 二、下载kafka版本包 ### 添加bitnami的helm仓库 [ro
阅读全文
摘要:一、Filebeat部署环境准备 ### 部署环境检查 ~~~ 清理fluentd:测试环境压力不够 [root@k8s-master01 EFK]# kubectl scale deploy --replicas=0 fluentd-es-v3.0.1-xprsz -n public-servic
阅读全文
摘要:一、部署zookeeper: ### 组件helm+zookeeper+kafka ~~~ # 部署EFLK架构: ~~~ ElasticSearch+Filebeat+Logstash+Kibana+zookeeper+kafka 二、下载zookeeper版本包 ### 添加bitnami的he
阅读全文
摘要:一、Filebeat概述 ### Filebeat ~~~ 在生产环境中,很常用的场景是pod的日志都是写在本地文件的; ~~~ 若是你的应用是基于容器开发的,在设计之初,是直接输出到控制台了; ~~~ 但是有可能你的容器是通过虚拟机或者是物理机迁移过来或者说是容器化过来的; ~~~ 这类的应用的日
阅读全文
摘要:一、Kibana操作实例 ### 查看Kibana的端口号 [root@k8s-master01 EFK]# kubectl get po,svc,ep -n public-service -owide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED
阅读全文
摘要:一、部署Kibana ### 创建Kibana-service.yaml文件 [root@k8s-master01 EFK]# cat kibana-service.yaml apiVersion: v1 kind: Service metadata: name: kibana-logging na
阅读全文
摘要:一、EFK日志收集概述: ### EFK架构: ~~~ ElasticSearch + Fluentd + Kibana:收集宿主机上的日志 ~~~ 主要用于收集宿主机上的日志 ~~~ Fluentd是轻量级的,比较适合在容器中部署 ### k8s常用的组件都放在addons这个里面 ~~~ 地址:
阅读全文
摘要:一、部署ElasticSearch ### 创建ElasticSearch-service.yaml文件 [root@k8s-master01 EFK]# cat es-service.yaml apiVersion: v1 kind: Service metadata: name: elastic
阅读全文
摘要:一、部署Fluentd ### 创建Fluentd-configmap.yaml文件 ~~~ 创建Fluentd-configmap文件 [root@k8s-master01 EFK]# cat fluentd-configmap.yaml kind: ConfigMap apiVersion: v
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:一、kafka和zookeeper集群扩容和缩容 ### 扩容kafka和zookeeper:扩容副本数均为2 ~~~ 扩容kafka副本数为2;在生产环境中,不可以使用2个副本数,当前环境资源有限, ~~~ 只是为查看效果 [root@k8s-master01 kafka]# pwd /root/
阅读全文
摘要:一、kafka和zookeeper集群测试 ### 查看kafka和zookeeper集群状态 [root@k8s-master01 zookeeper-kafka]# kubectl get po -n public-service -owide NAME READY STATUS RESTART
阅读全文
摘要:一、部署zookeeper和kafka集群概述 ### zookeeper和kafka的官方地址 ~~~ https://docs.bitnami.com/tutorials/deploy-scalable-kafka-zookeeper-cluster-kubernetes ~~~ 使用的是bit
阅读全文
摘要:一、使用helm部署zookeeper和kafka;下载部署 ### 添加bitnami的helm仓库并添加版本库 ~~~ 添加bitnami的helm仓库 [root@k8s-master01 zookeeper-kafka]# helm repo add bitnami https://char
阅读全文
摘要:一、helm的目录层级 ### 使用helm创建一个charts [root@k8s-master01 harbor]# helm create helm-test Creating helm-test ### helm创建的charts的层级 [root@k8s-master01 harbor]#
阅读全文
摘要:一、通过helm创建RabbitMQ集群:失败 ### 编写RabbitMQ集群的helm:准备环境阶段 ~~~ 新建一个charts [root@k8s-master01 helm]# helm create rabbitmq-cluster Creating rabbitmq-cluster #
阅读全文
摘要:一、docker镜像导出导入操作 ### 导出docker镜像:将镜像保存成tar文件,然后发送到其它的节点上面 [root@k8s-node01 ~]# docker save rabbitmq:3.8.3-management -o /tmp/rabbit.tar ### 拉取到当前节点 [ro
阅读全文
摘要:一、helm概述 ### helm官方安装文档: ~~~ https://helm.sh/docs/intro/install/ ### helm版本包下载方案 ~~~ ——>进入之后——>desired version——>找到helm3.5.4——>下载 二、helm安装 ### 下载helm安
阅读全文
摘要:一、helm常用操作 ### helm的常用操作 ~~~ helm fetch for helm v2 ### 添加一个仓库到helm [root@k8s-master01 helm]# helm repo add bitnami https://charts.bitnami.com/bitnami
阅读全文
摘要:一、rabbitmq持久化数据概述 ### 若是需要做持久化数据,但是节点没有比较高的存储,如何做持久化 ~~~ 假设有4台宿主机,rabbitmq需要3个实例 ~~~ 使用节点反亲和力部署在不同的节点上面, ~~~ 可以使用节点亲和力来部署在不同的节点上,使用节点标签来定位 ~~~ 再通过节点反亲
阅读全文
摘要:一、RabbitMQ扩容和缩容 ### RabbitMQ扩容 [root@k8s-master01 rabbit-cluster]# kubectl get sts -n public-service NAME READY AGE rmq-cluster 3/3 41m [root@k8s-mast
阅读全文
摘要:一、rabbitmq连接redis集群 ### 通过节点IP地址加31479端口号打开RabbitMQ的管理界面http://192.168.1.20:31549/登录密码是不生效的 ~~~ 注:默认密码是不会生效的,需要通过修改配置文件生效 二、使用guest登录查看结果 三、通过客户端rabbi
阅读全文
摘要:一、查看custom-config配置文件 ### custom-config.yaml该文件可以自定义一些它的配置 [root@k8s-master01 redis-cluster-operator]# more deploy/example/custom-config.yaml apiVersi
阅读全文
摘要:一、RabbitMQ概述 ### RabbitMQ概述 ~~~ 相比redis:RabbitMQ是支持服务发现的,可以利用k8s的服务发现机制;然后自动的配置集群, ~~~ 说明即使没有后端存储,也是可以运行在k8s集群中的。 ~~~ 而且RabbitMQ扩容和缩容是非常简单的一件事,因为它用的是k
阅读全文
摘要:一、redis集群自定义账号密码 ### 自定义账号密码 [root@k8s-master01 redis-cluster-operator]# more deploy/example/custom-password.yaml apiVersion: v1 kind: Secret metadata
阅读全文
摘要:一、为redis集群指定后端存储 ### 指定后端存储,持久化数据 ~~~ 修改后端存储配置文件 [root@k8s-master01 redis-cluster-operator]# more deploy/example/persistent.yaml apiVersion: redis.kun
阅读全文
摘要:一、redis集群缩容与扩容 ### redis集群扩容 ~~~ 查找对应的rediscluster的名称;自定义的资源类型 [root@k8s-master01 redis-cluster-operator]# kubectl get DistributedRedisCluster NAME MA
阅读全文
摘要:一、自定义custom-resources形式创建集群 ### 自定义custom-resources的形式创建集群 ~~~ 查看配置文件 [root@k8s-master01 redis-cluster-operator]# more deploy/example/custom-resources
阅读全文
摘要:一、redis实验操作 ### 查看创建的redis.pod和service ~~~ 准备参数 [root@k8s-master01 redis]# kubectl get po -n ratel-test1 -owide NAME READY STATUS RESTARTS AGE IP NODE
阅读全文
摘要:一、使用Operator部署概述 ### Operator部署概述 ~~~ # 部署一些有状态的应用或者比较复杂的应用去部署, ~~~ 若是手动去部署redis,mysql,mysql主从,mysql一主多从, ~~~ mysql-mgr部署不叫复杂,使用到operator就比较简单了。 ~~~ #
阅读全文
摘要:一、使用operator方式去部署redis ### 下载redis版本包:operator方式部署 ~~~ 下载redis-cluster-operator包文件 [root@k8s-master01 operator-redis]# git clone https://github.com/uc
阅读全文
摘要:一、k8s下同步docker镜像 ### 在节点1上下载并镜像导入到目标节点 [root@k8s-master01 redis]# scp redis.tar rabbit.tar k8s-master02:/root/ ### 将镜像导入到docker容器中 [root@k8s-master02
阅读全文
摘要:一、如何部署一个容器到k8s中 ### docker官方源地址 ~~~ OFFICIAL IMAGE:经过认证的:官方的人员去做的镜像,基本每个版本都有 ~~~ 容器化一个中间件:先到docker的官方仓库上去找对应的中间件容器的官方镜像。 ~~~ 自己做对应的镜像,建议使用alpine作为基础镜像
阅读全文
摘要:一、部署Redis到k8s上:通过资源管理创建 ### 下载官方redis.conf配置模板: ~~~ 官方地址: [root@k8s-master01 redis]# wget -c http://download.redis.io/redis-stable/redis.conf ### 取消配置
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:一、测试数据清理 ### 清除创建的deployment,registry [root@k8s-master01 ceph]# kubectl delete deploy kube-registry -n kube-system deployment.apps "kube-registry" del
阅读全文
摘要:一、PVC快照 ### PVC快照说明 ~~~ 注意:PVC快照功能需要k8s 1.17+ ~~~ 块存储快照具体原理和注意事项参考5节点方案 二、创建snapshotClass ### 切换到创建目录 [root@k8s-master01 cephfs]# cd /root/rook/cluste
阅读全文
摘要:一、文件共享类型快照: ### 操作步骤和块存储类型无区别,可以参考: ~~~ https://rook.io/docs/rook/v1.5/ceph-csi-snapshot.html#cephfs-snapshots 二、PVC克隆 #1、进出创建目录 [root@k8s-master01 rb
阅读全文
摘要:一、PVC扩容 ### PVC扩容说明 ~~~ 文件共享类型的PVC扩容需要k8s 1.15+ ~~~ 块存储类型的PVC扩容需要k8s 1.16+ ~~~ PVC扩容需要开启ExpandCSIVolumes,新版本的k8s已经默认打开了这个功能, ~~~ 可以查看自己的k8s版本是否已经默认打开了
阅读全文
摘要:一、扩容块存储 ### 扩容步骤类似,找到第五章创建PVC,直接edit即可 ~~~ 扩容块存储的空间为30Gi [root@k8s-master01 cephfs]# kubectl edit pvc mysql-pv-claim spec: accessModes: - ReadWriteOnc
阅读全文
摘要:一、共享文件系统的使用 ### 创建共享类型的文件系统 ~~~ 共享文件系统一般用于多个pod共享一个存储 ~~~ 切换到filesystem配置文件目录下 [root@k8s-master01 kubernetes]# cd /root/rook/cluster/examples/kubernet
阅读全文
摘要:一、ceph块存储的使用:创建StorageClass和ceph的存储池 ### 注:块存储一般用于一个Pod挂载一块存储使用,相当于一个服务器新挂了一个盘,只给一个应用使用。 ~~~ # 进入StorageClass配置文件目录并修改配置参数 ~~~ 注:因为我是试验环境,所以将副本数设置成了2(
阅读全文
摘要:一、安装ceph snapshot控制器 ### snapshot控制器说明 ~~~ k8s 1.19版本以上需要单独安装snapshot控制器,才能完成pvc的快照功能, ~~~ 所以在此提前安装下,如果是1.19以下版本,不需要单独安装,直接参考视频即可。 ~~~ snapshot控制器的部署在
阅读全文
摘要:一、安装ceph客户端工具 ### 安装ceph客户端 ~~~ 切换到ceph目录下 [root@k8s-master01 ~]# cd /root/rook/cluster/examples/kubernetes/ceph ### 安装ceph客户端 [root@k8s-master01 ceph
阅读全文
摘要:一、安装ceph dashboard ### 暴露服务 ~~~ 默认情况下,ceph dashboard是打开的,可以通过以下命令查看ceph dashboard的service: [root@k8s-master01 ceph]# kubectl -n rook-ceph get service
阅读全文
摘要:一、Rook介绍 ### rook官方地址: ~~~ https://rook.io/docs/rook/v1.5/ceph-quickstart.html 二、ceph部署cluster.yaml配置文件修改说明 ### ceph部署cluster.yaml配置文件修改说明 [root@k8s-m
阅读全文
摘要:一、部署ceph ### 创建crds、common、operator [root@k8s-master01 ceph]# kubectl create -f crds.yaml -f common.yaml -f operator.yaml customresourcedefinition.api
阅读全文
摘要:一、安装ceph dashboard ### 暴露服务 ~~~ 默认情况下,ceph dashboard是打开的,可以通过以下命令查看ceph dashboard的service: [root@k8s-master01 ceph]# kubectl -n rook-ceph get service
阅读全文
摘要:一、部署ceph snapshot控制器 ### snapshot控制器说明 ~~~ k8s 1.19版本以上需要单独安装snapshot控制器,才能完成pvc的快照功能, ~~~ 所以在此提前安装下,如果是1.19以下版本,不需要单独安装; ~~~ snapshot控制器的部署在集群安装时的k8s
阅读全文
摘要:一、安装ceph客户端工具 ### 安装ceph客户端 ~~~ # 切换到ceph目录下 [root@k8s-master01 ~]# cd /root/rook/cluster/examples/kubernetes/ceph ### 安装ceph客户端 [root@k8s-master01 ce
阅读全文
摘要:一、Rook介绍 ### rook官方地址: ~~~ https://rook.io/docs/rook/v1.5/ceph-quickstart.html ### ceph部署cluster.yaml配置文件修改说明 [root@k8s-master01 ceph]# vim cluster.ya
阅读全文
摘要:一、部署ceph ### 创建crds、common、operator [root@k8s-master01 ceph]# kubectl create -f crds.yaml -f common.yaml -f operator.yaml customresourcedefinition.api
阅读全文
摘要:一、Rook概述 ### Rook概述 ~~~ 一个自我管理的分布式存储编配系统,它本身并不是存储系统, ~~~ 在存储和k8s之前搭建了一个桥梁,存储系统的搭建或者维护变得特别简单,rook支持CSI ~~~ Rook是云原生的存储,本身是支持CSI ~~~ 可以使用CSI做一些PVC的快照,PV
阅读全文
摘要:一、RBAC:查看k8s官方的dashboard ### k8s官方的dashboard [root@k8s-master01 ~]# kubectl get svc,po -n kubernetes-dashboard service/kubernetes-dashboard NodePort 1
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:一、QoS ### QoS ~~~ QoS:Quality of Service,服务质量。 ~~~ Guaranteed:k8s的最高的服务质量,也就是CPU内存的Request和Limit的值一样。 ~~~ Burstable:CPU内存的request有配置,但是值不一样 ~~~ BestEf
阅读全文
摘要:一、准入控制 ### 准入控制 ~~~ # 请注意: ~~~ k8s 1.20版本已经删除PodPreset功能,低于1.20版本正常使用 ~~~ # 准入控制: ~~~ 就是在创建资源经过身份验证之后,kube-apiserver在数据写入etcd之前做一次拦截, ~~~ 然后对资源进行更改、判断
阅读全文
摘要:一、在线测试验证 ### 使用临时容器测试demo-nginx容器是否可以调用临时容器的命令 ~~~ # 进入容器查看 ~~~ 注:-c是指定某个容器,刚才创建的容器时debugger [root@k8s-master01 ~]# kubectl exec -ti demo-nginx-6bdcdc
阅读全文
摘要:一、k8s资源管理平台Ratel ### ratel官方hub地址: ~~~ https://github.com/dotbalo/ratel-doc 二、安装Ratel ### 创建secret ~~~ # 安装Ratel [root@k8s-master01 ~]# mkdir ratel [r
阅读全文
摘要:一、ratel的使用 ### 通过Chrome访问Ratel ~~~ 注意:如果没有安装ingress controller,需要把type: ClusterIP改成type: NodePort,然后通过主机IP+Port进行访问 ~~~ 通过Ingress配置的krm.test.com/ratel
阅读全文
摘要:一、使用临时容器在线Debug: ### 制作busybox为临时容器,为demo-nginx添加此临时容器 ~~~ # 查看demo-nginx是否有一些维护工具 ~~~ 注:常用的维护命令是没有的 [root@k8s-master01 ~]# kubectl exec -ti demo-ngin
阅读全文
摘要:一、临时容器概述 ### 官方地址: ~~~ https://kubernetes.io/docs/reference/access-authn-authz/rbac/ ### 注意事项: ~~~ k8s 1.19+已经弃用basic_auth_file的认证方式, ~~~ 如果集群大于1.19+
阅读全文
摘要:一、临时容器配置:打开k8s组件中--feature-gates功能 ### 打开k8s组件功能:在k8s的kubelet组件打开--feature-gates功能(所有节点) ~~~ 所有节点都执行 ~~~ 首先在kubelet下打开EphermeralContainers: [root@k8s-
阅读全文
摘要:一、命令行操作:kubectl create role ### 创建 Role 对象,定义在某一名字空间中的权限。例如: ~~~ # 创建名称为 "pod-reader" 的 Role 对象,允许用户对 Pods 执行 get、watch 和 list 操作: kubectl create role
阅读全文
摘要:一、配置文件说明 ### Role example:角色权限示例 ~~~ 注:就是在default命名空间下下创建一个role, ~~~ 这个role是对pods具有get,watch和list权限 apiVersion: rbac.authorization.k8s.io/v1 kind: Rol
阅读全文
摘要:一、RBAC实验实例 ### RoleBinding下subjects示例 ~~~ # subjects绑定到用户 ~~~ 对于名为的用户alice@example.com: ~~~ 以下示例是RoleBinding仅显示本subjects节的摘录。 subjects: - kind: User /
阅读全文
摘要:一、ClusterRole和ClusterRoleBinding架构图说明 ### ClusterRole和ClusterRoleBinding架构图说明 ~~~ 首先我们有了一个cluster-admin的ClusterRole ~~~ 然后还有一个admin-user的一个ServiceAcco
阅读全文
摘要:一、RBAC的使用 ### 官方地址: ~~~ https://kubernetes.io/docs/reference/access-authn-authz/rbac/ ### RBAC注意事项 ~~~ 基于用户名密码实现不同用户有不同的权限 ~~~ 基于ServiceAccount实现不同的SA
阅读全文
摘要:一、rbac在安装k8s的时候就已经启用了 ### rbac在安装的时候就已经启用它了 ~~~ RBAC是可以接入第三方的。 [root@k8s-master01 ~]# more /usr/lib/systemd/system/kube-apiserver.service [Service] Ex
阅读全文
摘要:一、role和ClusterRole使用场景 ### role和ClusterRole ~~~ # 该使用role还是该使用ClusterRole? ~~~ 当为某一个namespace去创建一个单独的role的话是没有去创建ClusterRole的, ~~~ 若是有很多namespace,需要创建
阅读全文
摘要:一、RBAC概述 ### RBAC说明 ~~~ # RBAC: ~~~ 基于角色的访问控制,Role-Based Access Control。 ~~~ 他是一种基于企业内个人角色来管理一些资源的访问方法。 ### Jenkins使用基于角色的用户权限管理。 ~~~ RBAC:4中顶级资源,Role
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:一、拓扑域划分示例 二、使用Topology实现多地多机房部署 ### 使用Topology实现多机柜部署 ~~~ 模拟一下5个节点是属于同一个机房不同机柜的,为其打标签 [root@k8s-master01 ~]# kubectl label node k8s-master01 k8s-node0
阅读全文
摘要:一、Topology概述 ### Topology说明 ~~~ # TopologyKey: ~~~ kubernetes.io/hostname ~~~ # topologykey: ~~~ 拓扑域,首先说明不同的可以不同的value是属于不同的拓扑域 ~~~ topologykey的值代表一个拓
阅读全文
摘要:一、pod的亲和力:跨namespace: ### pod亲和力实验说明 ~~~ 与指定pod部署在一块,是可以块namespace的: ~~~ 把demo-nginx和kube-systemnamespace下的符合label ~~~ 为k8s-app=calico-kube-controller
阅读全文
摘要:一、Pod的反亲和力: ### 编辑yaml文件:编写pod的反亲和力的参数 ~~~ # 编辑yaml文件 ~~~ 就是尽量不和namespace下的kube-system,key: k8s-app的值为values:calico-kube-controllers的pod尽量不要部署在一块 [roo
阅读全文
摘要:一、若是想把demo-nginx部署在不同的节点上面, ### 部署demo-nginx至不同的宿主机上 ~~~ 编写yaml文件 ~~~ demo-nginx就和当前的app下的demo-nginx匹配,不写namespace就是当前的namespace下 [root@k8s-master01 ~
阅读全文
摘要:一、Pod亲和力和反亲和力概述 ### pod亲和力说明 ~~~ Pod亲和力:尽量将Pod部署在一起 ~~~ Pod反亲和力:不尽量将Pod部署在一起 ### 官方地址: ~~~ https://kubernetes.io/docs/concepts/scheduling-eviction/ass
阅读全文
摘要:一、实验三: ### Exists:部署在具有某个存在key为指定的值的Node节点上 ~~~ 配置Exists参数 [root@k8s-master01 ~]# kubectl edit deploy demo-nginx affinity: nodeAffinity: preferredDuri
阅读全文
摘要:一、实验四: ### Gt: 大于指定的条件 条件为number,不能为字符串 ~~~ 打标签 [root@k8s-master01 ~]# kubectl label node k8s-node01 test.gt=a node/k8s-node01 labeled [root@k8s-maste
阅读全文
摘要:一、实验二:NotIn: ### pod不要部署在满足这些条件的节点上 ~~~ # 把pod部署在label不要部署在 kubernetes.io/e2e-az-name;values: ~~~ 是- e2e-az1和- e2e-az2节点上面。 ~~~ # 这样它就会部署在具有这个label的节点
阅读全文
摘要:一、实验一:书写yaml文件,配置NodeAffinity参数;验证和的关系 ### Affinity参数说明 ~~~ In:部署在满足多个条件的节点上 ~~~ NotIn:不要部署在满足这些条件的节点上 ~~~ Exists:部署在具有某个存在key为指定的值的Node节点上 ~~~ DoesNo
阅读全文
摘要:一、Affinity概述 ### Affinity:亲和力概述 ~~~ 之前容器部署都是随机去部署的,是通过一系列的算法来筛选出最优的节点, ~~~ 来定义部署在哪个节点上面。 ~~~ 虽然NodeSelect和taind可以执行这些操作,但是功能不够强大,不够灵活。 ~~~ Affinity和No
阅读全文
摘要:一、tolerationSeconds实验 ### 为容器打NoExecute,只能在上面停留60s;验证60s之后是否会被驱逐掉 ~~~ 为demo-nginx容器打NoExecute,只能在上面停留60s;60s之后还是会被驱逐的 [root@k8s-master01 ~]# kubectl e
阅读全文
摘要:一、InitContainer概述 ### InitContainer概述 ~~~ # InitContainer: ~~~ 初始化容器:预处理、预判断、与执行命令操作;在我应用容器启动之前做的一些舒适化操作。 ~~~ # postStart: ~~~ 在容器启动之前做一些操作。不能保证在你的con
阅读全文
摘要:一、NoSchedule静止调度,容器强制驱逐 ### 为master01打一个污点,NoSchedule类型,静止调度;容器会被强制驱逐 ~~~ 为master01节点打入污点,NoExecute类型 [root@k8s-master01 ~]# kubectl taint node k8s-ma
阅读全文
摘要:一、Taint&Toleration:NoSchedule不会被调度,但不强制 ### 为master01打一个污点,NoSchedule类型,不会被调度,但不强制迁移 ~~~ 查看Pod部署在那些节点上 [root@k8s-master01 ~]# kubectl get po -owide NA
阅读全文
摘要:一、Taint&Toleration概述 ### 引入Taint&TolerationToleration必然性 ~~~ 在不同的机房 ~~~ 在不同的城市 ~~~ 有着不一样配置:GPU服务器(贵)、纯固态硬盘的服务器(贵) ~~~ # k8s是全自动的去调度, ~~~ 中间是不需要人去控制的;为
阅读全文
摘要:一、CronJob ### CronJob是什么 ~~~ # 在k8s里面运行周期性的计划任务,和linux下的crontab是一样的。 ~~~ 写法顺序:* * * * * 分时日月周;和linux是一样的。 ~~~ 你的计划任务可能需要调用应用的接口。可以解决宿主机和容器不通的问题,可以通过se
阅读全文
摘要:一、通过命令创建ConJob ### 创建一个CronJob(新版kubectl可能无此命令,需要使用下面的yaml创建): [root@k8s-master01 ~]# kubectl run hello --schedule="*/2 * * * *" --restart=OnFailure -
阅读全文
摘要:一、持久化存储创建流程 ### PV部署流程 ~~~ # 第一步:首先需要由一个NFS的存储 ~~~ # 第二步:创建一个NFS类型的PV ~~~ # 第三步:创建一个PVC;这个PVC指定了使用哪个类型的PV;绑定哪个类型的PV ~~~ 符合storageClassName=nfs-slowd ~
阅读全文
摘要:一、删除PVC流程 ### 删除PVC ~~~ 它会一直卡在这个状态不动,因为PVC被占用,它就会处于这个状态不会删除 [root@k8s-master01 ~]# kubectl delete pvc myclaim persistentvolumeclaim "myclaim" deleted
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:一、PV&PVC挂载NFS类型PV配置参数 ### 创建NFS类型PV配置参数 apiVersion: v1 kind: PersistentVolume metadata: name: pv0003 spec: capacity: storage: 5Gi volumeMode: Filesyst
阅读全文
摘要:一、PV&PVC挂载NFS类型PV ### 创建了一个NFS的PV配置文件 ~~~ # 创建挂载目录 [root@k8s-node01 ~]# mkdir -p /data/testDir ### 查看NFS服务端主机IP地址 [root@k8s-node01 ~]# ip addr ens33:
阅读全文
摘要:一、挂载NFS至容器 ### 在k8s-node01节点安装nfs服务端配置 ~~~ 安装nfs-server服务 [root@k8s-node01 ~]# yum install -y nfs-utils [root@k8s-node01 ~]# systemctl start nfs-serve
阅读全文
摘要:一、PV&PVC概述 ### PV&PVC概述 ~~~ Volume:NFS、CEPH、GFS :Volume可以直接连的一些存储集群类型 ~~~ PV:PersistentVolume:NFS、CEPG/GFS:也可以连接这些存储集群类型 ### 引入PV的必然性 ~~~ K8s:Volume——
阅读全文
摘要:一、VolumesHostPath挂载宿主机路径:实现宿主机与容器间时间同步 ### hostPath: ~~~ hostPath卷可将节点上的文件或目录挂载到Pod上, ~~~ 用于Pod自定义日志输出或访问Docker内部的容器等。 二、使用hostPath卷的示例。将主机的/data目录挂载到
阅读全文
摘要:一、Volumes概述 ### Volumes: ~~~ 可以使用volumes去挂载configmap和secrets, ~~~ # volumes:容器每次重启都会以最干净的状态去启动; ~~~ 比如在容器中创建了一个文件,但是重启之后,这个文件就会丢失。因为我们没有对它进行持久化存储。 ~~~
阅读全文
摘要:一、持久化存储 ### 创建nginx-deploy.yaml;使用emptyDir卷的示例,直接指定emptyDir为{}即可: ~~~ 创建nginx-deployment挂载volume配置参数 [root@k8s-master01 ~]# vim nginx-deploy.yaml apiV
阅读全文
摘要:一、configmap编辑方式 ### 编辑configmap的形式: ~~~ 方式一: edit:显示文件内容会很杂乱,不是很标准的显示内容,造成视觉的难理解。若是文件特别小的话,它会把文件内容显示在configmap的文件中,若是文件特别长的话,它是不会把文件内容显示在configmap文件中,
阅读全文
摘要:一、k8s1.19不可变的secret和configmap ### immutable ~~~ 在k8s1.18版本之后引入了一个immutable这种机制: ~~~ 这个参数在设置configmap和secret的时候把它设置为不可变的。 ### 为什么会引入这种机制呢? ~~~ 容器挂载了con
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:一、使用SubPath解决覆盖目录问题 ### 使用SubPath解决覆盖目录的问题,而是挂载这个文件; ~~~ 为了解决这个问题,使用SubPath去挂载这个文件 ~~~ key的值 [root@k8s-master01 ~]# kubectl edit deploy demo-nginx vol
阅读全文
摘要:一、ConfigMap和Secret的热更新概述 ### ConfigMap和Secret的热更新概述 ~~~ ConfigMap和Secret如果是以subPath 的形式挂载的, ~~~ 那么Pod是不会感知到ConfigMap和Secret的更新的。 ~~~ 如果Pod的变量来自于Config
阅读全文
摘要:一、ImagePullSecret: ### ImagePullSecret: ~~~ Pod拉取私有镜像仓库时使用的账号密码,里面的账号信息会传递给kubelet, ~~~ 然后kubelet就可以拉取有密码的仓库里面的镜像。 ### 创建一个docker registry的secrets ~~~
阅读全文
摘要:一、SubPath概述 ### configMap和Secret: ~~~ configMap和Secret它挂载的时候是会覆盖这个目录的,所以覆盖这个目录是可以被解决掉的。 ~~~ 若是挂载一个文件到这个目录中,可能会覆盖掉这个目录原有的文件。 ~~~ 引入SubPath来解决这个覆盖的问题 二、
阅读全文
摘要:一、手动创建一个secrets ### 将创建的账户密码写入配置文件 ~~~ 可以先以JSON或YAML格式在文件中创建一个Secret,然后再创建该对象。 ~~~ 机密对象的名称必须是有效的 DNS子域名。 ~~~ 该秘密 包含两个地图: data和stringData。该data字段用于存储使用
阅读全文
摘要:一、Secret ### Secret概述 ~~~ Secret:用来保存敏感信息的,比如密码、令牌或者Key,Redis、MySQL密码。 ~~~
$ \* \\ 特殊字符单引号无需转义 ### Secret用途: ~~~ ImagePullSecret:Pod拉取私有镜像仓库时使用的账户密码,
阅读全文
摘要:一、创建特殊字符的secrets,需要转译 ### 创建特殊字符的secrets ~~~ 特殊字符,例如
,\,∗,和!将被你解释外壳和需要逃逸。 在大多数Shell中,最简单的转义密码方法是用单引号(′)引起来。 例如,如果您的实际密码是S!B\*dzDsb [root@k8s-
阅读全文
摘要:一、把configmap挂载到容器中充当配置文件:形式一:修改configmap配置参数 ### 删除之前的容器 [root@k8s-master01 configmap]# kubectl delete -f pod-single-configmap-env-variable.yaml pod "
阅读全文
摘要:一、将configmap数据添加到卷中的特定路径 ### 将configmap数据添加到卷中的特定路径 ~~~ # 修改pod-configmap.yaml配置文件 ~~~ 使用该path字段可以为特定的ConfigMap项目指定所需的文件路径。 ~~~ 在这种情况下,该SPECIAL_LEVEL项
阅读全文
摘要:一、使用configmap数据定义容器 ### 使用congfigmap数据定义容器环境变量 ~~~ 使用来自单个configmap的数据定义容器环境变量 [root@k8s-master01 configmap]# vim pod-single-configmap-env-variable.yam
阅读全文
摘要:一、定义从文件生成configmap时需要使用的秘钥 ### 定义从文件生成configmap时要使用的秘钥 ~~~ 可以定义一个密钥,而不是要在ConfigMap生成器中使用的文件名。 ~~~ configure-pod-container/configmap/game.properties ~~
阅读全文
摘要:一、从文件值创建configmap ### 根据文件值创建configmap ~~~ 可以将kubectl create configmap其与--from-literal参数一起使用, ~~~ 以从命令行定义文字值 [root@k8s-master01 configmap]# kubectl cr
阅读全文
摘要:一、从生成器中创建一个configmap ### 从生成器中创建一个configmap ~~~ # 从文件中生产configmap ~~~ 从文件生成ConfigMap configure-pod-container/configmap/game.properties ~~~ kubectlkust
阅读全文
摘要:一、ConfigMap概述 ### ConfigMap概述 ~~~ # 一般用ConfigMap去管理一些配置文件、或者一些大量的环境变量信息。 ~~~ ConfigMap将配置和Pod分开,有一个nginx,nginx.conf -> configmap,nginx ~~~ 更易于配置文件的更改和
阅读全文
摘要:一、从文件创建configmap ### 可以用来kubectl create configmap从单个文件或多个文件创建ConfigMap。 ~~~ 也可以定义它的名字,在前面加入命名方式,若是不加的话默认是按照它的文件名来命名的: ~~~ 这种方式在生产环境中是最常用的。 [root@k8s-m
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:一、自动扩缩容HPA实践 ### 创建deployment,添加内存参数 ~~~ 首先需要创建一个deployment [root@k8s-master01 ~]# kubectl get deploy NAME READY UP-TO-DATE AVAILABLE AGE demo-nginx 2
阅读全文
摘要:一、HPA概述 ### 什么是HPA ~~~ Horizontal Pod Autoscaler:Pod的水平自动伸缩器。 ~~~ 观察Pod的CPU、内存使用率自动扩展或缩容Pod的数量。 ~~~ 不适用于无法缩放的对象,比如DaemonSet。一般都是用在Deployment上的。 ~~~ 一般
阅读全文
摘要:一、Ingress入门使用 ### 使用详解: ~~~ # 地址: ~~~ https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/ ~~~ # 配置域名的方式有好几种: ~~~ ConfigMap,Anno
阅读全文
摘要:一、创建一个多域名ingress ### 创建多域名ingress.yaml配置文件 [root@k8s-master01 ~]# vim ingress-mulDomain.yaml apiVersion: networking.k8s.io/v1beta1 # networking.k8s.io
阅读全文
摘要:一、Ingress安装使用 ### Ingress安装使用 ~~~ # 首先安装helm管理工具: ~~~ https://helm.sh/docs/intro/install/ ~~~ # 使用helm安装ingress: ~~~ https://kubernetes.github.io/ingr
阅读全文
摘要:一、ingress扩容缩容节点 ### ingress扩容节点 ~~~ 将ingress controller部署至Node节点(ingress controller不能部署在master节点, ~~~ 需要安装视频中的步骤将ingress controller部署至Node节点, ~~~ 生产环境
阅读全文
摘要:一、Ingress概述:ingress架构 二、ingress架构说明 ### ingress架构说明 ~~~ # 通过service: ~~~ 也可以发布一些服务,通过service的NodePort的方式也可以在外网暴露一些端口, ~~~ 通过IP+端口号的形式也可以实现外网访问,这个端口号也可
阅读全文
摘要:一、使用Service反代域名 ### 创建service反代域名yaml配置文件 ~~~ 书写反代域名的yaml文件 ~~~ 需要改成反代的域名 [root@k8s-master01 ~]# vim nginx-externalName.yaml apiVersion: v1 kind: Serv
阅读全文
摘要:一、service常用类型:service类型一:ClusterIP:在集群内部使用,也是默认值。 ### 类型一:ClusterIP:在集群内部使用,也是默认值。 ~~~ 这个service的地址,在安装的时候不要和公司的网段去重复。 ~~~ 还有Pod的网段是不建议去重复。 ~~~ 这个serv
阅读全文
摘要:一、验证创建的service是否代理到pod上 ### 验证service是否代理到对应的pod上 ~~~ 查看创建的pod及service地址 [root@k8s-master01 ~]# kubectl get po -owide NAME READY STATUS RESTARTS AGE I
阅读全文
摘要:一、使用service代理k8s外部应用 ### service代理k8s外部应用使用场景 ~~~ 希望在生产环境中使用某个固定的名称而非IP地址进行访问外部的中间件服务 ~~~ 希望Service指向另一个Namespace中或其他集群中的服务 ~~~ 某个项目正在迁移至k8s集群,但是一部分服务
阅读全文
摘要:一、外部应用地址发生变化,解决方案 ### 更改endpoints配置参数 ~~~ 查看百度地址 ~~~ 若是百度的地址或者目标地址变更了怎么办,我们只需要编辑endpoint就可以: ~~~ 模拟编辑测试;代理一下淘宝的 [root@k8s-master01 ~]# ping taobao.com
阅读全文
摘要:一、引入service ### 什么是service ~~~ Service可以简单的理解为逻辑上的一组Pod。 ~~~ 一种可以访问Pod的策略,而且其他Pod可以通过这个Service访问到这个Service代理的Pod。 ~~~ 相对于Pod而言,它会有一个固定的名称,一旦创建就固定不变。 ~
阅读全文
摘要:一、selector的查询语法 ### 通过一个条件匹配label过滤符合条件的pod ~~~ 通过一个条件来匹配:假设我们有这么多Pod ~~~ 假设我们需要查看metrics-scraper和dashboard这个Pod,我们如何过滤 [root@k8s-master01 ~]# kubectl
阅读全文
摘要:一、在k8s中如何发布服务概述 ### 服务访问分为两种形式: ~~~ 第一种:服务之间的调用;就是我们部署了两个应用,这两个都是后端应用;比如是ServerA,serviceB两个服务之间的调用。 ~~~ 第二种:用户流量的访问,用户通过域名去访问。 ~~~ # 东西流量:服务之间的访问,一般有s
阅读全文
摘要:一、service:创建nginx-deployment ### 创建nginx-deployment.yaml配置文件 [root@k8s-master01 ~]# cat nginx-deploy.yaml apiVersion: apps/v1 kind: Deployment metadat
阅读全文
摘要:一、Label和selector ### 通过label来划分宿主机部署pod ### 假如实验环境是5个节点 [root@k8s-master01 ~]# kubectl get node -owide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTER
阅读全文
摘要:一、修改label ### label修改方式 ~~~ 第一种:删除重建:如何删除一个label ~~~ 第二种:修改overwrite进行修改label 二、方式一:删除label重建 ### 删除容器对应的label [root@k8s-master01 ~]# kubectl label po
阅读全文
摘要:一、Label和Selector: ### k8s的;label和selector概述 ~~~ Label:对k8s中各种资源进行分类、分组,添加一个具有#特别属性的一个标签。 ~~~ Selector:通过#一个过滤的语法进行查找到对应标签的资源 二、label和selector架构说明 三、la
阅读全文
摘要:一、daemonset更新和回滚 ### daemonset的更新 ~~~ 使用RollingUpdate更新DaemonSet ~~~ daemonset滚动更新是先删除然后再创建一个新的。 ~~~ 默认的更新策略是RollingUpdate;多了一个update字符串,maxUnavailabl
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:一、将daemonset部署到符合条件的宿主机上 ### 为符合条件的宿主机打标签 ~~~ 为所有node节点搭上标签 ~~~ 只需要在node节点上部署ds,忽略master节点。需要给node节点打个标签, [root@k8s-master01 ~]# kubectl label node k8
阅读全文
摘要:一、StatefulSet删除 ### StatefulSet删除方式 ~~~ 级联删除:删除StatefulSet时同时删除pod;默认使用级联删除。 ~~~ 非级联删除:删除StatefulSet时不删除pod 二、StatefulSet级联删除 ### 级联删除(默认) [root@k8s-m
阅读全文
摘要:一、DaemonSet概述 ### DaemonSet是什么? ~~~ DaemonSet:守护进程集,缩写为ds,在所有节点或者是匹配的节点上都部署一个Pod。 ### DaemonSet应用场景 ~~~ 运行集群存储的daemon,比如ceph或者glusterd ~~~ 节点的CNI网络插件,
阅读全文
摘要:三、StatefulSet更新策略二:OnDelete ### 添加配置参数,触发更新 ~~~ # 更改StatefulSet配置参数镜像版本更改为1.15.3 ~~~ 使用 OnDelete去更新;它是不会触发更新的,只有把这个Pod删除之后才会触发更新镜像 [root@k8s-master01
阅读全文
摘要:一、StatefulSet分段更新:StatefulSet分段更新架构 二、StatefulSet分段更新说明 ### StatefulSet分段更新说明 ~~~ 假设我们启动了5个Pod ~~~ 假设Partition设置为2,那么他就只会更新web-2,web-3,web-4,而web-0和we
阅读全文
摘要:一、StatefulSet更新策略 ### 查看StatefulSet资源文件 [root@k8s-master01 ~]# kubectl get sts web -o yaml apiVersion: apps/v1 kind: StatefulSet metadata: creationTim
阅读全文
摘要:一、定义一个StatefulSet资源 ### 创建一个StatefulSet.yaml资源文件 ~~~ 创建StatefulSet资源文件 [root@k8s-master01 ~]# vim nginx-sts.yaml apiVersion: v1 kind: Service metadata
阅读全文
摘要:一、StatefulSet是如何为我们创建各自标识的容器的。 ### StatefulSet类型pod启动顺序 ~~~ pod是按照顺序去启动的 ~~~ 删除的时候和创建的时候顺序是相反的。 [root@k8s-master01 ~]# kubectl get po //它是按顺序启动之后才会启动下
阅读全文
摘要:一、Deployment注意事项 ### 查看deployment.yaml配置文件 [root@k8s-master01 ~]# kubectl get deploy nginx -oyaml apiVersion: apps/v1 kind: Deployment metadata: annot
阅读全文
摘要:一、StatefulSet有状态应用管理 ### 有状态应用管理StatefulSet ~~~ # 注:StatefulSet:是创建有状态应用的,会为每个Pod起一个固定的名称, ~~~ # 每个Pod的名称加上他的service名称就可以访问到这个Pod。 ~~~ StatefulSet(有状态
阅读全文
摘要:一、deployment扩容 ### deployment扩容 ~~~ 假设我们的deployment前期的业务量很小,只起了3个副本或者5个副本。 ~~~ 但是随着时间的推移,当前副本已经不能支撑业务需求; ~~~ 或者说是预期内需要搞一个活动,搞活动访问量会比较大, ~~~ 需要进行扩容:# 方
阅读全文
摘要:一、deployment暂停和恢复 ### deployment暂停恢复概述 ~~~ 使用edit命令可以同时修改多个参数,统一去保存的。 ~~~ 使用set命令多次修改它的配置,只触发一次更新呢? ~~~ 可以使用呢Deployment的暂停功能,就是多次执行deployment的更新给暂停掉,
阅读全文
摘要:一、Deployment更新 ### 修改deployment配置参数,触发更新 ~~~ 修改配置参数,触发更新 ~~~ 只有更改了spec中的template的配置才会触发它的更新。才会新生成一个RS, ~~~ 更改了template才会记录一个新的RS, [root@k8s-master01 ~
阅读全文
摘要:一、Deployment回滚 ### 回滚到上一个版本:查看资源的历史版本 ~~~ # 回滚到上一个版本 ~~~ 模拟镜像版本地址写错了,回滚到之前的版本 ~~~ 其实是没有这个镜像地址,改为之前的版本;但是可能时间久了,你不知道之前的版本是多少。 ~~~ 就可以使用deployment回滚,回滚有
阅读全文
摘要:一、Deployment、StatefulSet、DaemonSet三者的区别: ### deployment ~~~ # Deployment:无状态的应用部署:不产生任何的缓存数据,随时的去重启发布回滚等操作, ~~~ 部署在哪个节点都是没有问题。 ~~~ 在生产环境中都是使用Deploymen
阅读全文
摘要:一、Deployment: ### Deployment概念: ~~~ 用于部署无状态的服务,这个最常用的控制器。 ~~~ 一般用于管理维护企业内部无状态的微服务, ~~~ 比如configserver、zuul、springboot。 ~~~ 他可以管理多个副本的Pod实现无缝迁移、自动扩容缩容、
阅读全文
摘要:一、pod的退出流程 二、pod退出流程说明 ### pod退出流程说明 ~~~ 用户执行删除操作,这个pod就会转为一个Terminating状态,执行删除之后会有一个宽限时间 ~~~ 在进行terminating状态的时候, ~~~ 比如配置了一个service,在这个service里面配置en
阅读全文
摘要:一、Replication Controller和ReplicaSet概述 ### Replication Controller和ReplicaSet ~~~ Replication Controller(复制控制器,RC)和ReplicaSet(复制集,RS)是两种简单部署Pod的方式。 ~~~
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:一、Pod退出的流程:探针检查配置说明 ### 探针检查配置参数 ~~~ initialDelaySeconds: 60 // 初始化时间 ~~~ timeoutSeconds: 2 // 超时时间 ~~~ periodSeconds: 5 // 检测间隔 ~~~ successThreshold:
阅读全文
摘要:一、为什么要引入startupProbe ### 为什么要引入startupProbe? ~~~ # 这个容器启动特别慢,启动之后会进行一系列的初始化操作,比如加载数据,同步操作。 ~~~ 载入各种数据等,这个过程会非常慢, ~~~ 但是你把检测的过程放在LivenessProbe里面, ~~~ 会
阅读全文
摘要:一、判断pod和进程是否存活 ### 判断pod和进程存活的参数 ~~~ readinessProbe:判定容器是不是存活的 ~~~ livenessProbe:判定容器里进程是否是存活的 二、判断容器和进程是否存活readinessProbe.livenessProbe;创建资源 ### 创建资源
阅读全文
摘要:一、yaml概述:yaml文件详解 ### 查看pod.yaml配置文件 [root@k8s-master01 ~]# vim pod.yaml apiVersion: v1 # 必选,API的版本号 kind: Pod # 必选,类型Pod;开头是apiVersion和kind:若是写yaml文件
阅读全文
摘要:一、使用yaml文件部署容器 ### 使用yaml创建资源;默认命名空间下 ~~~ 创建一个资源 ~~~ kubectl create:创建一个资源 -f:指定创建资源的文件是谁 [root@k8s-master01 ~]# kubectl create -f pod.yaml pod/nginx
阅读全文
摘要:一、Pod探针概述 ### Pod探针startupProbe ~~~ StartupProbe:k8s1.16版本后新加的探测方式,用于判断容器内应用程序是否已经启动。 ~~~ 如果配置了startupProbe,就会先禁止其他的探测,直到它成功为止,成功后将不在进行探测。 ### pod探针Li
阅读全文
摘要:一、kubernetes.pod ### pod概述 ~~~ Pod是k8s中最小的单元 ~~~ 由一组、一个或多个容器组成,每个Pod还包含了一个Pause容器 ~~~ pause容器时pod的父容器,主要负责僵尸进程的回收管理, ~~~ 通过通过Pause容器可以使同一个Pod里面的多个容器共享
阅读全文
摘要:一、kubernetes资源查看方式:查看pod ### 可以通过get ns查看当前节点下有多少个namespace; [root@k8s-master01 ~]# kubectl get ns NAME STATUS AGE default Active 4d23h kube-node-leas
阅读全文
摘要:一、kubernetes.master节点组件说明 ### Master节点:整个集群的控制中枢 ~~~ 整个集群的控制中枢; ### kube-apiserver:集群的控制中枢 ~~~ 集群的控制中枢,各个模块之间信息交互都需要经过Kube-APIServer, ~~~ 同时它也是集群管理、资源
阅读全文
摘要:一、IPVS和IPtables的区别 ### IPVS: ~~~ 监听Master节点增加和删除service记忆endpoint的消息, ~~~ 调用Netlink接口创建相应的IPVS规则,通过IPVS规则,将流量转发至相应的Pod上。 ### Iptables: ~~~ 监听master节点增
阅读全文
摘要:一、Kubernetes详解 ### 为什么需要使用到Kubernetes ~~~ # docker已经可以实现帮我们部署应用,而且可以帮我们实现我们需要的功能,为什么还需要引入k8s呢 ~~~ docker部署应用,前期部署的容器并不多,而且应用到容器也不多。 ~~~ 直接使用docker或者宿主
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文