草庐IT

microK8s

全部标签

SpringCloud - Nacos 结合 K8s 优雅关闭服务(平滑升级)

问题描述在生产环境中使用springcloud框架,由于服务更新过程中,容器服务会被直接停止,部分请求仍被分发到终止的容器,导致服务出现500错误,这部分错误请求数据占用比较少,因为Pod滚动更新都是一对一。因为部分用户会产生服务器错误的情况,考虑使用优雅的终止方式,将错误请求降到最低,直至滚动更新不影响用户。这里结合nacos使用来分析。在K8s的滚动升级中,比如5个Pod服务在升级过程中,会先启动一半左右(比如:3个新的启动),然后下线一部分服务……直到所有的旧服务被新服务完全替代,简单粗暴的理解滚动升级。如果我们不涉及Nacos还好,因为K8s会保证在升级过程中,因为负载的情况很有可能在

SpringCloud - Nacos 结合 K8s 优雅关闭服务(平滑升级)

问题描述在生产环境中使用springcloud框架,由于服务更新过程中,容器服务会被直接停止,部分请求仍被分发到终止的容器,导致服务出现500错误,这部分错误请求数据占用比较少,因为Pod滚动更新都是一对一。因为部分用户会产生服务器错误的情况,考虑使用优雅的终止方式,将错误请求降到最低,直至滚动更新不影响用户。这里结合nacos使用来分析。在K8s的滚动升级中,比如5个Pod服务在升级过程中,会先启动一半左右(比如:3个新的启动),然后下线一部分服务……直到所有的旧服务被新服务完全替代,简单粗暴的理解滚动升级。如果我们不涉及Nacos还好,因为K8s会保证在升级过程中,因为负载的情况很有可能在

微服务 & 云原生:搭建 K8S 集群

为节约时间和成本,仅供学习使用,直接在两台虚拟机上模拟K8S集群搭建踩坑之旅系统环境:CentOS-7-x86_64-Minimal-2009镜像,为方便起见,直接在root账户下操作,现实情况最好不要这样做。基础准备关闭防火墙systemctldisablefirewalldsystemctlstopfirewalld关闭selinux#临时禁用selinuxsetenforce0#永久关闭selinuxsed-i's/SELINUX=permissive/SELINUX=disabled/'/etc/sysconfig/selinuxsed-i"s/SELINUX=enforcing/SE

k8s查看所有在运行pod内的镜像版本

本地跑的算法镜像有时候与线上跑的环境不一致,这时候又需要同步,每一个都去查找又很麻烦这时候查看两边的镜像,选取其中不同的地方edit一下,就方便多了名称空间更改为自己的名称空间kubectl-nxxxgetpods|grepRunning|awk'{print$1}'|xargs-r-I'{}'kubectl-nxxxgetpods{}-o=jsonpath='{.status.containerStatuses[0].image}{"\n"}'|sort查询镜像并去重,有名称空间的 记得把名称空间加上kubectl-nnamespacegetpods-ojsonpath='{.items[*

【云原生】Kubernetes(k8s)Istio Gateway 介绍与实战操作

文章目录一、概述二、Istio架构三、通过istioctl部署Istio1)安装istioctl工具2)通过istioctl安装istio3)检查四、IstioGateway五、IstioVirtualService虚拟服务六、示例演示(bookinfo)1)安装bookinfo应用1、创建命令空间2、添加label3、开始部署bookinfo2)添加路由规则3)访问服务1、通过NodePort访问2、通过externalip访问4)卸载bookinfo服务5)卸载istio七、IstioGateway示例演示1)Helm安装Nginx,Apache2)http测试1、配置Gateway2、配

k8s通过命令批量删除pod

k8s批量删除失败的pod查看所有的podkubectlgetpod--all-namespaces选择STATUS列,查看某namespace的非Running的记录,比如:kubectlgetpods-nkube-system|grepEvicted|awk'{print$1}'|xargskubectldelete-nkube-systempods解析:获取所有的pods及其状态kubectlgetpods筛选出命名空间kube-system的记录,默认视default-nkube-systemgrep选出带有Evicted字段pod|grepEvicted通过awk,获取第一列信息,也

K8S-kubectl scale(静态)扩缩容pod,K8S-kubectl autoscale(动态)扩缩容pod,K8S的HorizontalPodAutoscaler(HPA)机制自动扩容缩容

K8S-kubectlscale(静态)扩缩容pod,K8S-kubectlautoscale(动态)扩缩容pod,K8S的HorizontalPodAutoscaler(HPA)机制自动扩容缩容1、静态调整pod方式1.1通过kubectlscale命令扩缩pod1.2使用yml文件扩缩容pod2、HPA自动扩容2.1通过kubectlautoscale命令自动扩缩容pod(不推荐)2.2通过yml文件自动扩缩容pod(推荐配置)搭建K8S文档:yum安装K8Sansible搭建K8S集群:ansible搭建K8S准备至少3个机器搭建好K8S集群节点名称IPk8s-master192.168

Kubernetes(k8s)基础入门详细教程

目录1.Kubernetes基本概念:1.1Pod(容器组):1.2Deployment(部署):1.3Service(服务):1.4ReplicaSet(副本集):1.5Namespace(命名空间):1.6Label(标签)和Selector(选择器):1.7ConfigMap(配置映射)和Secret(秘密):1.8Volume(存储卷):1.9StatefulSet(有状态副本集):1.10DaemonSet(守护进程集):1.11Job和CronJob:1.12Ingress(入口):2.如何使用Kubernetes管理应用程序:2.1查看集群信息:2.2查看资源状态:2.3创建和管

redis - 我对 K8s 中的 redis 不了解的地方

我使用helmchart在GKE中设置了redis。它创建了3个服务redis-master、redis-slave和redis-headless。当我通过“redis-headless”连接到它时,我收到一个错误(大约66%的时间):READONLYYoucan'twriteagainstareadonlyreplica.我假设这是因为它正在路由到两个从属实例。如果我使用master那么它似乎可以工作。我假设我应该只使用redis-master来连接?它会使用奴隶吗?如果master挂了,它会更新吗?我是否应该路由到从服务器(用于读取查询)?我想更好地了解我对它的工作原理的理解(假设

redis - 我对 K8s 中的 redis 不了解的地方

我使用helmchart在GKE中设置了redis。它创建了3个服务redis-master、redis-slave和redis-headless。当我通过“redis-headless”连接到它时,我收到一个错误(大约66%的时间):READONLYYoucan'twriteagainstareadonlyreplica.我假设这是因为它正在路由到两个从属实例。如果我使用master那么它似乎可以工作。我假设我应该只使用redis-master来连接?它会使用奴隶吗?如果master挂了,它会更新吗?我是否应该路由到从服务器(用于读取查询)?我想更好地了解我对它的工作原理的理解(假设