![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
k8s
devops_sre
道
展开
-
配置多用户连接k8s
配置多用户连接k8s原创 2022-08-18 15:48:13 · 937 阅读 · 0 评论 -
k8s存储的选择
k8s存储的选择原创 2022-07-26 17:07:35 · 809 阅读 · 0 评论 -
解决k8s默认端口的限制
解决k8s默认端口的限制原创 2022-07-13 19:51:58 · 3598 阅读 · 0 评论 -
linux服务器连接k8s平台配置
linux服务器连接k8s平台配置原创 2022-07-13 16:30:07 · 739 阅读 · 0 评论 -
k8s分发策略之SessionAffinity
前言对于后端应用来说,使用有效的负载分发策略,有利于客户端访问到准确、不间断的后端服务,而不至于出现访问无效、失真的情况分发策略SessionAffinity基于客户端IP地址进行会话保持/关联的模式,即第1次将某个客户端发起的请求转发到后端的某个Pod上,之后从相同的客户端发起的请求都将被转发到后端相同的Pod上补充Round-Robin:轮替模式,即将客户端请求代理到合适的后端合适的Pod上解析如上图所示,当Client第一次被代理到Backend Pod 1上,为了保证Client原创 2021-08-11 16:20:45 · 8737 阅读 · 0 评论 -
k8s部署资源服务的注意事项
前言为了k8s的资源服务能够高效、稳定、健康的运转,需要对其进行相应的设置资源类别声明每个Pod的resource在使用k8s集群时,经常会遇到:在一个节点上调度了太多的Pod,导致节点负载太高,没法正常对外提供服务的问题 为了避免上述问题,在k8s中部署Pod时,可以指定这个Pod需要Request及Limit的资源,k8s在部署这个Pod的时候,就会根据Pod的需求找一个具有充足空闲资源的节点部署这个Pod。如下示例,声明Nginx这个Pod需要1核CPU、1024M的内存,运行中实际使用原创 2021-07-15 17:32:29 · 545 阅读 · 0 评论 -
k8s实战helm3
前言helm3相较于之前的版本,去掉了Tiller,直接通过kubeconfig连接apiserver,release名称可以在不同命名空间重用,chart支持放到docker仓库k8s与helmk8s部署一个应用的流程如下1.0 创建deployment模板kubectl create deployment nginx --image=nginx --dry-run -o yaml > deployment.yaml1.1 启动podkubectl a原创 2021-05-24 17:15:58 · 1113 阅读 · 0 评论 -
k8s编排部署容器报:Back-off restarting failed container错误的处理办法
前言此现象容器会一致处于重启状态,而导致服务不能正常运行处理办法yaml文件内添加如下配置,使容器一直处于正常工作状态方法一... ...command: [ "/bin/bash", "-c", "--" ]args: [ "while true; do sleep 30; done;" ]... ...方法二... ...command: [ "/bin/sh", "-c", "tail -f /dev/null" ]... ...结语… …...原创 2021-04-30 09:42:09 · 1944 阅读 · 5 评论 -
k8s中pod下command与docker中cmd启动优先级的释疑
前言K8s Pod Command 与容器镜像 Cmd 启动优先级详解原创 2021-03-12 17:42:59 · 570 阅读 · 0 评论 -
k8s中pod多个容器的管理
前言在pod中,可以存在多个不同的容器,其各容器共享网络、存储,实现对pod的管理对pod中多个容器的管理部署pod示例]# cat > zookeeper-statefulset.yaml <<-EOFapiVersion: apps/v1kind: StatefulSetmetadata: name: zookeeper namespace: cex-devopsspec: serviceName: zookeeper replicas: 1 sel原创 2021-03-12 17:31:30 · 5575 阅读 · 0 评论 -
k8s启动容器报错:“Back-off restarting failed container“的解决办法
前言当k8s启动容器时,如果配置文件有误,会出现"Back-off restarting failed container"的报错信息更正配置形如1... ... spec: containers: # 添加如下两行内容 imagePullPolicy: IfNotPresent command: [ "/bin/sh", "-c", "--" ] args: [ "shile true; do sleep 30; do原创 2021-03-05 15:57:45 · 6535 阅读 · 0 评论 -
linux部署node_exporter服务,用于prometheus监控其硬件信息
前言node_exporter服务用于收集部署服务器的硬件信息,包括CPU、内存、网络、硬盘等监控信息安装配置node_exporter下载node_exporter文件从github上下载指定版本的node_exporter的linux-amd64.tar.gz文件,并放置在服务器上的/data/node_exporter目录下(放置路径,可自定义)注版本可根据自身的情况,选用合适的版本,这里以node_exporter-0.18.1为例部署node_exporter服务]# tar原创 2021-02-24 18:11:36 · 1342 阅读 · 0 评论 -
centos7安装k8s的kubectl、Kubelet、kubeadm等工具
前言略安装配置阿里云的yum源(由于使用google的yum源出现不能访问的情况)]# cat > /etc/yum.repos.d/kubernetes.repo <<-EOF[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/enabled=1gpgcheck=1repo_gpgcheck=1gpgkey原创 2021-01-21 18:24:43 · 435 阅读 · 0 评论 -
k8s之应用健康
前言略保障应用健康稳定的方法提高应用的可观测性提高应用的可恢复能力应用的状态可以从被实时观测着手应用健康状态应用资源使用应用实时日志应用健康状态示例Liveness与Readness的总结应用故障排查应用远程调试Pod远程调试Service远程调试结语… …...原创 2021-01-13 15:25:20 · 67 阅读 · 0 评论 -
k8s之应用配置管理
前言略导引Pod需要解决如下问题不可变基础设施(容器)的可变配置敏感信息的存储和使用(eg: 密码、token等)集群中Pod的字我身份验证容器运行资源的配置管理容器的运行安全管控容器启动前置条件校验等对应的解决办法ConfigMapSecretServiceAccountSpec.Containers[].resources.limits/requestsSpec.Containers[].SecurityContextSpec.InitContainersCom原创 2021-01-13 11:30:21 · 1011 阅读 · 0 评论 -
k8s之守护进程控制器DaemonSet
前言略作用保证集群内每一个(或者一些)节点都运行一组相同的Pod跟踪集群节点状态,保证新加入的节点自动创建对应的Pod跟踪集群节点状态,保证移除的节点删除对应的Pod跟踪Pod状态,保证每个节点Pod处于运行状态适用场景集群存储进程: glusterd、ceph日志手机进程: fluentd、logstash需要在每个节点运行的监控收集器语法示例]# cat > DaemonSet.yaml <<-EOFpiVersion: apps/v1kind: D原创 2021-01-12 18:29:27 · 538 阅读 · 0 评论 -
k8s之任务控制器
前言略作用创建一个或多个Pod,确保指定数量的Pod可以成功的运行终止跟踪Pod状态,根据配置及时重试失败的Pod确定依赖关系,保证上一个任务运行完毕后,再运行下一个任务控制任务并行度,并根据配置确保Pod队列大小并行运行Job点心completions: 代表本pod队列执行次数parallelism: 代表并行执行个数restartPolicy: 重启策略backoffLimit: 重启次数限制示例]# cat > pi.yaml <<-EO原创 2021-01-12 17:26:22 · 506 阅读 · 0 评论 -
k8s管理部署发布的控制器Deployment
前言略作用定义一组Pod的期望数量,controller会维持Pod数量与期望数量一致配置Pod发布方式,controller会按照给定策略更新Pod,保证更新过程中不可用额pod数量在限定范围内如果发布有问题,支持"一键"回滚语法apiVersion: apps/v1kind: Deployment#--------Deployment元信息--------metadata: name: nginx-deployment labels: app: nginxspe原创 2021-01-12 16:19:18 · 201 阅读 · 0 评论 -
k8s之核心基础知识
前言略资源元信息Spec: 期望的状态Status: 观测到的状态MetadataLabelsAnnotaionsOwnerReferenceLabels标识型的Key: Value元数据作用用于筛选资源唯一的组合资源的方法可以使用selector来查询eg: environment: prodannotationsKey: Value作用存储资源的非标识性信息扩展资源的spec/status特点一般比label更大可以包含特殊字符可以结构化,也可以原创 2021-01-12 15:08:01 · 201 阅读 · 0 评论 -
k8s的核心概念
前言k8s是一个基于容器的自动化的容器编排平台,负责应用的部署、弹性、管理核心功能服务发现与负载均衡容器自动装箱存储编排自动容器恢复自动发布与回滚配置与密文管理批量执行水平伸缩核心架构k8s之master架构...原创 2021-01-11 18:36:57 · 600 阅读 · 0 评论 -
容器基本概念
前言略容器的定义容器,是一个视图隔离、资源可限制、独立文件系统的进程集合视图隔离如能看见部分进程、独立主机名等等控制资源使用率如2G内存大小、CPU使用个数容器镜像的定义运行容器所需要的的所有文件的集合Dockerfile描述镜像构建步骤构建步骤所产生的出文件操作系统的变化 - changeset类似disk snashot提高分发效率,减少磁盘压力容器镜像特点一次构建,多处运行moby容器引擎架构containerd1.容器运行时管理引擎,独立于原创 2021-01-11 17:28:34 · 388 阅读 · 0 评论 -
云原生技术
前言云原生技术是软件开发人员的必修课发展简史生态现状定义云原生为用户指定了一条低心智负担的、敏捷的、能够以可扩展、可复制的方式最大化地利用云的能力、发挥云的价值的最佳路径;是一套指导进行软件架构设计的思想;能够最大化地发挥云的能力,使得我们开发的软件和“云”能够天然地集成在一起,发挥出“云”的最大价值;一条云时代应用从开发到交付的最佳路径技术范畴思想基础不可变基础设施容器镜像云应用编排理论容器设计模式基础设施向云演进的过程基础设施向云演进的意义关键技术点原创 2021-01-11 14:08:36 · 1035 阅读 · 0 评论 -
k8s之灰度发布
前言为了使生产环境的应用服务,正常进行切换,而不导致生产环境的故障影响,需要使用到灰度发布概念灰度发布,又称金丝雀发布,是将应用的旧版本A与新版本B同时部署在环境中,业务请求可能会被路由到版本A的后端上,也可能会被路由到版本B的后端上;可以自定义灰度发布策略,调整版本A和B的流量占比,渐进式完成新版本应用的全量上线,最大限制地控制新版本发布带来的业务风险,降低故障带来的影响面,同事支持快速回滚。灰度发布流程图结语… …...原创 2020-12-09 16:57:46 · 10011 阅读 · 4 评论 -
k8s之prometheus监控
前言prometheus是k8s的强大监控利器监控对象分类1.资源监控节点、应用的资源使用情况,在容器k8s中可理解为: a.节点的资源利用率,b.集群的资源利用率,c.Pod的资源利用率等2.应用监控应用内部指标的监控,例如实时统计应用的在线人数,并通过端口暴露来实现应用业务级别的监控与告警等实例1.系统组件k8s集群中内置的组件,包括: apiserver、controller-manager、etcd等2.静态资源实体节点的资源状态、内核事件等3.动态原创 2020-12-03 16:59:04 · 357 阅读 · 0 评论 -
win10上安装kubectl工具
前言为了方便在win10系统上,对k8s资源进行操作查看等,满足我们对其的日常操作需求,需要安装kubectl工具安装使用使用choco工具安装kubectl命令行choco install kubernetes-cli以管理员身份运行"命令提示符(cmd)"C:\Users\nature>choco install kubernetes-cli配置kubeconfig文件在win10用户目录下新建.kube文件夹,并进入文件夹下,用编辑器创建config文件,将阿里云上或者自原创 2020-11-16 16:27:00 · 2302 阅读 · 0 评论 -
k8s中pod、service、ingress之间的关系
前言当应用服务需要通过域名访问时,会经过pod–>service–>ingress的部署流程,实现所需要的功能Pod直接访问Pod资源,存在的缺陷1.Pod会随时被Deployment这样的控制器删除重建,访问Pod的结果就会变得不可预知2.Pod的地址是在Pod启动后才被分配,在启动之前并不知道Pod的IP地址3.应用往往都是由多个运行相同镜像的一组Pod组成,一个个Pod的访问变得不现实Servicek8s中Service对象是用来解决上述Pod访问的问题注Serv原创 2020-11-18 16:05:24 · 5604 阅读 · 0 评论 -
搭建k8s的服务器硬件选型
前言为了能够搭建高效、稳定、安全的k8s高可用系统,需对服务器各项要素,进行周到的考虑集群规划创建k8s集群时,不宜使用多而小的服务器资源,有如下弊端:1.小规格Worker节点的网络资源受限2.如果一个容器基本可以占用一个小规格ECS,此ECS的剩余资源就无法利用(构建新的容器或者是恢复失败的容器),在小规格ECS较多的情况下,存在资源浪费使用大规格ecs的优势:1.网络带宽大,对于大带宽类的应用,资源利用率高2.容器在一台服务器内建立通信的比例增大,减少网络传输3.拉取镜像的效率原创 2020-11-16 17:49:09 · 6336 阅读 · 0 评论 -
k8s中ConfigMap的timezone使用
前言当使用的容器内部时间不能满足我们的需求时,需要进行相应的处理,比如: 把东八区/上海时间挂载到让其内部,这就要使用到ConfigMap/cmComfigMap(cm)的使用timezone的挂载使用目录树如下所示]# tree -Ca timezone/timezone/├── create-timezone-cm.sh└── timezone0 directories, 2 filestimezone文件cat > timezone <<-EOFAsi原创 2020-10-26 23:57:29 · 737 阅读 · 0 评论 -
k8s中部署无状态(deployment)服务
前言当部署python、java、php等服务时,都是无状态(deployment)应用服务部署注以部署nginx服务为示例编辑英勇的deployment的yaml文件cat > ng-dp.yaml <<-EOFapiVersion: extensions/v1beta1kind: Deploymentmetadata: name: nginx-dev namespace: cj-devspec: selector: matchLabels:原创 2020-10-26 23:38:19 · 1537 阅读 · 0 评论 -
k8s中的常用命令
前言使用k8s中的常用命令,有利于熟练掌握,且有利于排查错误相关常用命令查看pod的名称kubectl get pod -n namespace_name查看相关服务的部署过程信息kubectl describe pod pod_name -n namespace_name查看相关服务的日志输出kubectl logs -f pod_name -n namespace_name结语… …...原创 2020-10-26 15:25:08 · 193 阅读 · 0 评论 -
k8s配置secret中的docker账密
前言由于项目的docker镜像仓库位于阿里云上,如要仿照此技术文档进行相关试验,请自行从阿里云上申请相关docker镜像仓库的一些账密信息配置secret中的docker账密以脚本形式创建,使用的阿里云vpc网络]# cat > ali-shenzhen-registry-secret.sh <<-EOFkubectl create secret docker-registry ali-shenzhen-registry-secret \ --docker-se原创 2020-10-26 14:45:08 · 918 阅读 · 0 评论 -
kubernetes相关概念
前言想要深入浅出的认识,并熟悉k8s,需要掌握其相关的概念相关概念管理节点(Master Node)管理节点是k8s集群的管理者,运行着的服务包括kube-apiserver、kube-scheduler、kube-controller-manager、etcd和容器网络等组件,一般3个管理节点组成HA(高可用)的架构工作节点(Worker Node)工作节点是k8s集群中承担工作负载的节点,可以是虚拟机,也可以是物理机。工作节点承担实际的Pod调度,以及与管理节点的通信等。一个工作节点上的服务原创 2020-10-21 12:59:18 · 170 阅读 · 1 评论 -
k8s之ingress配置多个站点
前言进行配置的多个站点同时写在一个ingress文件中,方便管理与部署服务示例apiVersion: extensions/v1beta1kind: Ingressmetadata: name: frontend-separate namespace: default annotations: # kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/ssl-redirect: "true"s原创 2020-09-12 22:43:45 · 5143 阅读 · 0 评论 -
win10搭建k8s之minikube单机版
前言Minikube是一种可以轻松在本地(win系统)运行Kubernetes的工具。Minikube在笔记本电脑的虚拟机(VM)内运行一个单节点Kubernetes集群,以供希望试用Kubernetes或每天使用它开发的用户使用。搭建流程查看win主机是否支持虚拟化打开win终端执行如下命令:systeminfo注: 当出现如下信息时,表示支持虚拟化,如未有,但你的电脑主板是支持虚拟化的,请自行在bios里开启虚拟化支持,这里不再赘述C:\WINDOWS\system32>sys原创 2020-07-18 09:50:17 · 1814 阅读 · 0 评论 -
k8s配置secret中的ssl证书
前言网站安全需要https来处理,k8s配置中涉及到需要处理secrets操作申请ssl证书请自行处理,这里不再赘述获取审核通过的Nginx证书注由于我这里的k8s的ingress插件是nginx-controller-manager,是故证书类型为Nginx,可根据实际情况选择合适类型的证书放置证书到指定目录下目录树如下所示:tree -aC certs/certs/├── www.xxx.com.key└── www.xxx.com.pem0 directories原创 2020-06-16 23:03:58 · 6167 阅读 · 0 评论