如何使用Kubectl 滚动重启应用
Kubernetes 中的 Pod 通常应该是"Running"状态,然而有时候我们需要针对正在运行的Pod调度到其它的节点或是基于其它特殊的原因,将正常运行的Pod进行重启。Pod的重启方式也有不少,比如常见删除正在运行的Pod让其创建新的Pod实例(单个Pod无法直接使用该方式)。以下罗列出几种常见的方式仅供备忘: 方法1:滚动重启方法[推荐] 自 Kubernetes 1.
解决CNI报failed to find plugin "bridge" in path [/opt/cni/bin]错误
在部署 Kubernates 集群时,CoreDNS 的Pod始终处于**"ContainerCreating"**状态,正如下所示: # k get pod -n kube-system NAME READY STATUS RESTARTS AGE coredns-546565776c-8rtm4 0/
etcd 数据备份与恢复
etcd 数据备份与恢复 etcd 是高性能K/V数据库,Kubernetes系统中所有数据都存储于etcd数据中,所以为保障Kubernetes的可用性,针对etcd的备份还是很有必要的。 etcd容器运行 备份 冷备份 Kubeadm默认安装时,etcd的存储数位于节点的/var/lib/etcd/目录,将此目录下的文件定期复制归档压缩起来,如果以后etcd的数据出现问题,需要恢复时,
使用普通用户运行容器应用
序言 从安全的角度,容器应该创建一个普通的用户来运行应用,这样在一定的程度上可以保障应用的安全。实现的方式也简单,在创建Dockerfile 中定义普通用户的UID与GID。在K8S YAML资源中使用runAsUser*(注意:值需要与Dockerfile所定义的一致,否则会提示权限问题)*来运行应用。 Dockerfile 创建普通用户 Debian 镜像 FROM node:slim
容器环境 JVM 内存动态配置
在微服务架构中,JAVA 框架占用了绝大部分的市场,比如Spring Cloud、Dubbo等,其中在使用容器化部署的时候经常碰到关于JVM的内存分配的大小的配置,以下来讲述自己所用到过的配置方式。 固定配置 此方式,顾名思义,就是将JVM参数进行固定化,比如在将JAR打包成容器镜像时 FROM openjdk:8-jdk-alpine LABEL maintainer="Shuhui&
Kubernetes 1.20+ NFS Provisioner 无法正常使用
问题描述 在使用**Kubernetes 1.20+**部署NFS Provisioner时,会发现在创建PersistentVolumeClaim 时状态始终为Pending,并抛出以下异常: unexpected error getting claim reference: selfLink was empty, can't make
K8s Job资源使用笔记
我们在一个新环境里部署应用,经常会结合Job控制器来实现我们的初始化数据。当然,这是一种最简单的使用场景,创建一个 Job 对象以便以一种可靠的方式运行某 Pod 直到完成。同时这个Pod初始化数据时依赖某个服务接口、数据库、又或者是其它的中间件服务,所以我们就需要使用一些条件去判断--循环请求,延时,直到接口正常返回数据。 某个HTTP接口 不死不休版 顾名思义,探测URL没有正常返回我就一直重试--天荒地老、不死不休。
Elasticsearch + Kibana + Fluent-bit日志采集方案
序 在本文中,将简单说明如何在Kubernetes环境下部署 Elasticsearch服务、Kibana服务、Fluent Bit服务,通过Kibana服务进行可视化预览, 同时我们将以Fluent-Bit 进行日志收集。 本文所部署服务为典型的EFK日志系统,至少是这些组件。如果部署了一整套EFK系统,从中选择某个Pod的日志也需要进一步进行筛选过滤才能得到需要的日志。有时候我们不需要收集整个集群所产生的日志内容,而是只关心某个命名空间、某个模块所产生的日志,这时候就需要更为灵活的日志代理部署模式了,我们通常称之为“Sidecar”
Ingress-nginx 中开启 Brotili 压缩算法
Brotli是Google开发的一种压缩方法,于2015年发布。我们常用的压缩算法是 gzip(Ingress-nginx也是默认使用gzip),据说brotli要比gzip高出20%至30%的压缩率。 ingress-nginx 配置 默认的压缩算法是gzip,压缩级别为1,如需要启用brotli,需要配置以下三个参数: enable-brotli: true 或 false,是否启用brotli压缩算法 brotli-level:
java容器无法使用jmap命令
jmap是java一个常用的辅助工具,它可以输出所有内存中对象,来检查内存泄漏等问题,然而在容器里使用jmap命令时,会遇到以下错误: / # ps -ef PID USER TIME COMMAND 1 root 1h30 java -jar /app-salary.jar --sahara.config.