
K8S
文章平均质量分 74
GavinYCF
梦想起飞的地方
展开
-
ingress中的路径类型pathType具体的示例
本文档,我们主要来说明,在创建ingress的时候呢,里面会有个字段叫做,path type,这个字段都可以设置为哪些的值,设置为不同的值,对我们设置的path有什么影响。OK,话不多说,我们开始。在ingress中的每个path都需要一个对应的pathType。转载 2023-04-17 16:30:23 · 3177 阅读 · 0 评论 -
k8s教程(service篇)-ingress 7层路由机制
一个ingress资源对象的定义如下:metadata:spec:rules:http:paths:backend:service:port:Ingress资源主要用于定义路由转发规则,可以包含多条转发规则的定义,通进行设置。下面对其中的关键配置进行说明。转载 2023-04-17 16:50:21 · 2176 阅读 · 0 评论 -
k8s deployments搭建sftp服务
sftp转载 2022-07-26 14:14:07 · 1286 阅读 · 1 评论 -
在k8s中使用secret挂载rsa密钥对
网上有好几种方法,我使用的不是直接写在yaml中,而是使用命令,全程不会接触和修改rsa的公私钥文件内容。一,拿到或生成pem格式的密钥对。过程略,假设拿到的文件名为private.pem和public.pem二,在K8s集群中导入rsa文件。命名为rsa-secret ,namespace为cgtest.kubectl create secret generic rsa-secret --from-file=ssh-privatekey=private.pem --from-file转载 2022-05-19 13:47:21 · 1093 阅读 · 0 评论 -
K8s 安全抽象:Secret
Secret 是对敏感信息的抽象,例如:密码、token、SSH key,其他对象可引用Secret。Pod 使用 Secret 有两种场景:作为 volume 中的文件被挂载到 Pod 中一个或多个容器中 拉取镜像时需要使用 secret 作为安全凭证Secret 分类Secret 可分为三类:docker-registry: 创建一个给 Docker Registry 使用的 secret,实际是保存了账户密码。 generic:从本地 file, direct转载 2022-05-19 13:45:23 · 779 阅读 · 0 评论 -
查看JVM内存使用状况
1、jps:查看本地正在运行的java进程和进程ID(pid)2、jinfo pid,查看指定pid的所有JVM信息 1)jinfo -flags pid 查询虚拟机运行参数信息。 2)jinfo -flag name pid,查询具体参数信息,如jinfo -flagUseSerialGC 42324,查看是否启用UseSerialGC3、jmap 1)jmap -heap pid:输出堆内存设置和使用情况(JDK11使用jhsdb jmap --heap --...转载 2021-11-15 11:18:12 · 562 阅读 · 0 评论 -
Kubernetes之路 1 - Java应用资源限制的迷思
随着容器技术的成熟,越来越多的企业客户在企业中选择Docker和Kubernetes作为应用平台的基础。然而在实践过程中,还会遇到很多具体问题。本系列文章会记录阿里云容器服务团队在支持客户中的一些心得体会和最佳实践。我们也欢迎您通过邮件和钉钉群和我们联系,分享您的思路和遇到的问题。问题有些同学反映:自己设置了容器的资源限制,但是Java应用容器在运行中还是会莫名奇妙地被OOM Killer干掉。这背后一个非常常见的原因是:没有正确设置容器的资源限制以及对应的JVM的堆空间大小。我...转载 2021-11-15 10:34:49 · 267 阅读 · 0 评论 -
Kubernetes Ingress Nginx使用
在此我们不讲述如何部署ingress-controller,只演示如何使用ingress之nginx使用。主要演示如何使用ingress nginx实现我们nginx的多样化配置,从而达到使用ingress nginx如同使用手动部署nginx同样的便利。在此使用以下几个案例作讲解: 案例1(基本转发,https配置与annotations基础使用) 案例2(通过annotations对nginx做个性化配置) 案例3(通过annotations做rewrite基本配置)转载 2021-10-08 17:11:09 · 666 阅读 · 0 评论 -
k8s 走ingress服务提示文件过大,连接超时等解决方法
k8s 走ingress服务提示文件过大,连接超时等解决方法nginx.ingress.kubernetes.io/proxy-body-size: 10gnginx.ingress.kubernetes.io/proxy-connect-timeout: 6000snginx.ingress.kubernetes.io/proxy-read-timeout: 6000snginx.ingress.kubernetes.io/proxy-write-timeout: 6000s原文链接转载 2021-09-10 14:14:16 · 1424 阅读 · 0 评论 -
PV、PVC、StorageClass讲解
博客园 首页 新随笔 联系 订阅 管理随笔 - 87 文章 - 27 评论 - 24 阅读 - 29万PV、PVC、StorageClass讲解 PV、PVC、StorageClass讲解为了方便开发人员更加容易的使用存储才出现的概念。通常我们在一个POD中定义使用存储是这样的方式,我们以hostpath类型来说:apiVersion: v1kind: Podmetadata: name: mypodspec: containers: - image: ...转载 2021-05-08 17:02:48 · 570 阅读 · 0 评论 -
Kubernetes核心概念之Volume存储数据卷nfs-pv-pvc
Kubernetes核心概念之Volume存储数据卷详解在Docker中就有数据卷的概念,当容器删除时,数据也一起会被删除,想要持久化使用数据,需要把主机上的目录挂载到Docker中去,在K8S中,数据卷是通过Pod实现持久化的,如果Pod删除,数据卷也会一起删除,k8s的数据卷是docker数据卷的扩展,K8S适配各种存储系统,包括本地存储EmptyDir,HostPath,网络存储NFS,GlusterFS,PV/PVC等,下面就详细介绍下K8S的存储如何实现。一.本地存储...转载 2021-04-02 14:30:44 · 347 阅读 · 0 评论 -
helm教程
1.概述Helm是k8s的包管理工具,类似Linux系统常用的 apt、yum等包管理工具。使用helm可以简化k8s应用部署2.基本概念Chart:一个 Helm 包,其中包含了运行一个应用所需要的镜像、依赖和资源定义等,还可能包含 Kubernetes 集群中的服务定义,类似 Homebrew 中的 formula、APT 的 dpkg 或者 Yum 的 rpm 文件。 Release:在 Kubernetes 集群上运行的 Chart 的一个实例。在同一个集群上,一个 Chart 可转载 2021-03-02 17:52:46 · 1421 阅读 · 0 评论 -
helm学习笔记
helm学习笔记Helm 是什么每个成功的软件平台都有一个优秀的打包系统,比如 Debian、Ubuntu 的 apt,Redhat、Centos 的 yum。而 Helm 则是 Kubernetes 上的包管理器。Helm 的架构Helm 有两个重要的概念:chart 和 release。chart 是创建一个应用的信息集合,包括各种 Kubernetes 对象的配置模板、参数定义、依赖关系、文档说明等。chart 是应用部署的自包含逻辑单元。可以将 chart 想象成 apt、.转载 2021-03-02 17:40:14 · 186 阅读 · 0 评论 -
使用kubectl config控制多个k8s集群
使用kubectl config控制多个k8s集群 在pipeline中的CD环节,有时候需要部署到不同的K8S集群,比如开发环境、测试环境、生产环境。此时可以使用kubectl config来进行多个集群的管理。开发环境集群 生产环境集群 为了方便,我们使用Jenkins本机作为agent来配置两个K8S集群的认证文件,达到可以在本机上操作两个集群的目的。scp root@192.168.2.29:/etc/kubernetes/admin.conf ~/.kube/config-work-转载 2021-03-02 16:41:58 · 1280 阅读 · 0 评论 -
容器JVM分配内存两种方式
容器JVM分配内存两种方式在启动命令添加参数方式一:添加JVM内存参数java -Xms512m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m -jar test.jar-Xms:最小堆内存,默认是物理内存的1/64-Xmx:最大堆内存,默认是物理内存的1/4-XX:PermSize 非堆内存初始值,默认是物理内存的1/64-XX:MaxPermSize 最大非堆内存的大小,默认是物理内存的1/4方式二:配置感知参数自动感知容器资源限制来按原创 2020-08-19 18:20:42 · 810 阅读 · 0 评论 -
JVM内存限制和调整
JVM内存限制和调整今天用java -jar执行一个jar文件提示内存不够,需要设置虚拟机的堆大小。以下是参考资料:堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是J..转载 2020-08-19 18:15:33 · 3664 阅读 · 0 评论 -
docker JVM配置自动感知分配内存
docker JVM配置自动感知分配内存想象一下,你有一个32GB内存的节点,你想使用Docker运行一个限制为1GB的Java应用程序。如果未提供-Xmx参数,则JVM将使用其默认配置:JVM将检查总可用内存。因为JVM不知道Linux容器(特别是限制内存的控制组),所以它认为它在主机上运行并且可以访问完整的32GB可用内存。 默认情况下,JVM将使用MaxMemory / 4,在这种情况下为8GB(32GB / 4)。 随着堆大小的增长并超过1GB,容器将被Docker杀死。早期的Doc.转载 2020-08-19 18:04:25 · 1446 阅读 · 0 评论 -
Docker——JVM 感知容器的 CPU 和 Memory 资源限制
Docker——JVM 感知容器的 CPU 和 Memory 资源限制 前言对于那些在Java应用程序中使用Docker的CPU和内存限制的人来说,可能会遇到一些挑战。特别是CPU限制,因为JVM在内部透明地设置GC线程和JIT编译器线程的数量。这些可以通过命令行选项-XX:ParallelGCThreads和-XX:CICompilerCount显式设置。对于内存限制,也可以通过JVM命令行选项-Xmx显式设置最大Java堆大小。但是,在没有指定上述JVM命令行选项的情况...转载 2020-08-19 17:54:17 · 1324 阅读 · 0 评论 -
如何排查 Kubernetes 的内存增长问题
某用户生产环境的 kubernetes 节点遇到的一个问题,大概问题是这样的,用户反馈他的业务所在 pod 一在吃内存,内存占用高达 17 G 并且还是持续在增长。接到用户反馈后,我秒登 VPN ,进到用户的环境开始排查问题。当时想的思路是这样的,既然是内存问题,那先看看这个业务所在 pod 里面到底是哪个进程在吃内存吧。kubectlexec-itpod-nxxx/bin/bash执行 top 命令查看下当前 pod 正在运行的进程,发现在容器里面有一个 7 号进程 VSZ 占...转载 2020-08-18 18:21:49 · 10338 阅读 · 1 评论 -
k8s pod自动重启原因(jvm内存设置)
k8s pod自动重启原因(jvm内存设置)k8s集群环境下,docker容器中运行镜像方式启动springboot项目。由于制作的镜像未对JVM的内存进行配置,那么 JVM 会默认设置堆栈的大小,这个大小是根据物理机的内存进行分配的。 那么物理机的内存越大,默认分配的内存就越大(最大堆栈=1/4 * 物理机内存,初始堆栈=1/64* 物理机内存)。JVM 是不知道自己在Docker容器中运行的,jvm识别的是物理主机的内存,而不是k8s给pod分配的内存或docker容器的内存。因此在没有..转载 2020-08-04 14:19:10 · 4009 阅读 · 0 评论 -
jvm在k8s中参数调整
jvm在k8s中参数调整作为一个jvm参数一直是手动调整的码农,本身对自动调整没啥感觉,类似gc线程数等参数都是手动调整的。后面发现这样的好处是各种参数可控,不好处就是调整一次太繁琐了。每一个进程都这么调整,工作量会变的特别大。所以使用默认的参数在前期跑起业务来的作用非常巨大。k8s的问题java进程跑在物理机的时候,就是我们常见的方法,啥也不设置,那么xmx默认就是物理机进程的四分之一。这个问题不大,当跑在k8s的时候,会有一些小意外。默认的gc线程数也是和cpu核数相关的。使用gc线转载 2020-08-04 13:36:22 · 5703 阅读 · 0 评论 -
k8s实用整理(18)-k8s存储之NFS
k8s实用整理(18)-k8s存储之NFS 1 NFS介绍NFS是Network File System的简写,即网络文件系统,NFS是FreeBSD支持的文件系统中的一种。NFS基于RPC(Remote Procedure Call)远程过程调用实现,其允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序就可以像访问本地文件一样访问远端系统上的文件。NFS是一个非常稳定的,可移植的网络文件系统。具备可扩展和高性能等特性,达到了企业级应用质量标准。由于网络速度的增加和延迟的降低,NF转载 2020-07-31 14:10:25 · 729 阅读 · 0 评论 -
Kubernetes-存储卷Volume
Kubernetes-存储卷Volume1、存储卷概述由于容器本身是非持久化的,因此需要解决在容器中运行应用程序遇到的一些问题。首先,当容器崩溃时,kubelet将重新启动容器,但是写入容器的文件将会丢失,容器将会以镜像的初始状态重新开始;第二,在通过一个Pod中一起运行的容器,通常需要共享容器之间一些文件。Kubernetes通过存储卷解决上述的两个问题。在Docker有存储卷的概念卷,但Docker中存储卷只是磁盘的或另一个容器中的目录,并没有对其生命周期进行管理。Kubernetes.转载 2020-07-31 14:02:16 · 171 阅读 · 0 评论 -
Tomcat内存释放不了
Tomcat内存释放不了今天公司CMS的tomcat又挂掉了,之前挂了一次.出现以下错误,后来把tomcat的内存增大到1024严重: Exception initializing page contextjava.lang.OutOfMemoryError: Java heap space在tomcat\bin\catalina.bat的set CURRENT_DIR=%cd% 前面添加set JAVA_OPTS =-Xms512m -Xmx1024m意思:设置最小虚拟内存512,最大102转载 2020-07-31 10:45:06 · 1557 阅读 · 0 评论 -
k8s ingress高级配置,动态修改上传文件大小限制参数
k8s ingress高级配置,动态修改上传文件大小限制参数client_max_body_size通常情况下,service和pod的IP可以被集群网络访问。外部访问的所有流量被丢弃或转发到别处。ingress是允许入站连接到达群集服务的规则集合.可以为外部提供可访问服务的URL,流量负载均衡,可被终止的ssl连接,以及基于配置的虚拟主机。k8s ingress配置官网链接:https://github.com/kubernetes/ingress-nginx/blob/master/doc.转载 2020-07-28 15:54:25 · 3653 阅读 · 2 评论 -
配置Pods和containers--为Containers和Pods分配内存资源
配置Pods和containers--为Containers和Pods分配内存资源 指定内存请求和内存限制要为容器指定内存请求,在容器的资源清单中使用resources:requests字段。要指定内存限制,使用resources:limits。memory-request-limit.yaml 1 apiVersion: v1 2 kind: Pod 3 metadata: 4 name: memory-demo 5 namespace: mem-example 6原创 2020-06-29 18:53:45 · 715 阅读 · 0 评论 -
k8s ingress原理及ingress-nginx部署测试
k8s ingress原理及ingress-nginx部署测试ingress是啥东东上篇文章介绍service时有说了暴露了service的三种方式ClusterIP、NodePort与LoadBalance,这几种方式都是在service的维度提供的,service的作用体现在两个方面,对集群内部,它不断跟踪pod的变化,更新endpoint中对应pod的对象,提供了ip不断变化的pod的服务发现机制,对集群外部,他类似负载均衡器,可以在集群内外部对pod进行访问。但是,单独用service.原创 2020-06-22 11:50:15 · 11041 阅读 · 2 评论 -
K8S部署eureka高可用
K8S部署eureka高可用新建eureka-service工程1. pom<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.or原创 2020-06-20 13:45:21 · 1632 阅读 · 0 评论 -
kubernetes yaml文件访问外部变量
kubernetes yaml文件访问外部变量1、在 shell脚本里 使用export为变量赋值 export REGISTRY_HOST=$1 export IMAGE_MYSQL_VERSION=$22、在yaml中编辑如下,红色部分就是变量引用了 spec: containers: - name: mysql image: $REGISTRY_HOST/mysql:$IMAGE_MYSQL_VERSION...原创 2020-06-13 15:30:13 · 5132 阅读 · 1 评论 -
Kubernetes的三种外部访问方式:NodePort、LoadBalancer和Ingress
Kubernetes的三种外部访问方式:NodePort、LoadBalancer和Ingress最近有些同学问我 NodePort,LoadBalancer 和 Ingress 之间的区别。它们都是将集群外部流量导入到集群内的方式,只是实现方式不同。让我们看一下它们分别是如何工作的,以及你该如何选择它们。注意:这里说的每一点都基于Google Kubernetes Engine。如果你用 minikube 或其它工具,以预置型模式(om prem)运行在其它云上,对应的操作可能有点区别。我不会太.原创 2020-06-12 13:50:32 · 464 阅读 · 0 评论 -
如何理解k8s中limit限制cpu单位
如何理解k8s中limit限制cpu单位官方对单位的解释:https://v1-14.docs.kubernetes.io/zh/docs/tasks/configure-pod-container/assign-cpu-resource/#cpu-%E5%8D%95%E4%BD%8Drequests:代表容器启动请求的资源限制,分配的资源必须要达到此要求limits:代表最多可以请求多少资源单位m:CPU的计量单位叫毫核(m)。一个节点的CPU核心数量乘以1000,得到的就是节点.原创 2020-06-11 16:05:50 · 15857 阅读 · 1 评论 -
docker CPU限制参数
docker CPU限制参数 Option Description --cpus=<value> Specify how much of the available CPU resources a container can use. For instance, if the host machine has two CPUs and you set--cpus="1.5", the container is guara.原创 2020-06-11 14:39:28 · 7322 阅读 · 0 评论 -
deployment标签(labels)匹配相关知识:spec.selector.matchLables与spec.template.metadata.lables
deployment标签(labels)匹配相关知识:spec.selector.matchLables与spec.template.metadata.lables1. spec.selector.matchLables实验1.1 正确的Deployment书写方式,是要让spec.selector.matchLabels值和spec.template.metadata.lables值完全匹配,这样才不会报错。apiVersion: apps/v1kind: Deploymentme.原创 2020-06-11 10:12:03 · 11711 阅读 · 0 评论 -
k8s service的yaml定义
k8s service的yaml定义Service:Service有四种type: ClusterIP(默认)、NodePort、LoadBalancer、ExternalName. 其中NodePort和LoadBalancer两类型的Services可以对外提供服务。engine.yaml: apiVersion: v1 #API的版本号,版本号可以用 kubectl api-versions 查询到 kind: Service .原创 2020-06-11 09:42:21 · 4199 阅读 · 0 评论 -
一个简单的例子理解Kubernetes的三种IP地址类型
一个简单的例子理解Kubernetes的三种IP地址类型很多Kubernetes的初学者对Kubernetes里面三种不同的IP地址和工作机制理解得不是很清楚。本文我们通过一个最简单的例子来学习。用如下命令行创建一个基于nginx的deployment:kubectl run nginx --image=nginx:maxline用kubectl get deploy查看成功生成的名为nginx的deployment:此时这个deployment里的nginx pod还无法.原创 2020-06-08 14:17:52 · 1026 阅读 · 0 评论 -
Kubernetes的三种外部访问方式:NodePort、LoadBalancer 和 Ingress
Kubernetes的三种外部访问方式:NodePort、LoadBalancer 和 IngressClusterIPClusterIP 服务是 Kubernetes 的默认服务。它给你一个集群内的服务,集群内的其它应用都可以访问该服务。集群外部无法访问它。ClusterIP 服务的 YAML 文件类似如下:apiVersion:v1kind:Servicemetadata:name:my-internal-serviceselector:app:my-...原创 2020-06-08 14:14:16 · 577 阅读 · 0 评论 -
Kubernetes监控:Dashbaord 2.0.0部署方式
Kubernetes监控:Dashbaord 2.0.0部署方式Kubernetes的Dashboard目前版本已经升至2.0.0-rc3,这篇文章介绍一下如何在Kubernetes 1.17.2中安装此版本的Dashboard。Dashboard Github地址 https://github.com/kubernetes/dashboard 目前版本:2.0....原创 2020-03-10 21:32:56 · 1163 阅读 · 0 评论 -
kubernetes-dashboard v2.0.0-rc4搭建
kubernetes-dashboard v2.0.0-rc4搭建 以下操作都在master节点上执行[root@elk-master ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc4/aio/deploy/recommended.yaml修改recommended.yaml文件...原创 2020-03-10 21:24:19 · 764 阅读 · 0 评论 -
基于kubernetes v1.17部署dashboard:v2.0-beta8
基于kubernetes v1.17部署dashboard:v2.0-beta8参考文章:https://www.jianshu.com/p/60a1d6db9f12https://www.jianshu.com/p/c6d560d12d50一、前言 Dashboard 是基于网页的 Kubernetes 用户界面。您可以使用 Dashboard 将容器应用部署到 Kuber...原创 2020-03-10 00:58:42 · 478 阅读 · 0 评论 -
kubectl常用命令2
kubectl常用命令kubectl命令---获取namespace信息:kubectl get namespace查看node详细信息:kubectl describe nodekubectl get node帮助信息--kubectl scale -h查看版本--kubectl version查看所有的pod---kubectl get pods --all-nam...原创 2020-03-09 17:19:39 · 570 阅读 · 0 评论