自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 K8s平台部署企业级项目案例

1、架构图在没有k8s前,一个项目的开发部署架构大概是这样的在有k8s后,这个架构变成了这样在k8s中部署项目的流程2、部署一个java网站项目实践2.1编译java第一步:先将代码拉取到本地(这里有一个实例代码拉取),下载好的代码就是一个包,没有的可以通过此命令拉取git clone https://github.com/lizhenliang/tomcat-java-demojava项目需要下载maven依赖和java-.

2022-05-06 09:57:54 5619 34

原创 k8s应用部署之helm初探

目录1、为什么需要helm?2、helm介绍3、helm工作流程4、使用helmHelm管理应用生命周期:helm模板功能试用helm动态传参使用helm动态文件传参helm版本管理回滚拓展命令卸载应用:附属服务打包1、为什么需要helm?由于Kubernetes缺少对发布的应用版本管理和控制,使得部署的应用维护和更新等面临诸多的挑战,主要面临以下问题:• 如何将这些服务作为一个整体管理?•

2022-05-06 09:32:46 1705 3

原创 k8s安全框架

k8s安全框架K8S安全控制框架主要由下面3个阶段进行控制,通过API Server配置来启用插件:1. Authentication(鉴权)2. Authorization(授权)3. Admission Control(准入控制)整个k8s的操作流程如下K8s Apiserver提供三种客户端身份认证:• HTTPS 证书认证:基于CA证书签名的数字证书认证(kubeconfig)• HTTP Token认证:通过一个Token来识别用户(serviceaccou

2022-05-06 09:17:57 914 24

原创 k8s之StatefulSet有状态部署

目录Kubernetes 有状态应用部署StatefulSet 控制器概述示例StatefulSet 控制器:独享存储Kubernetes 有状态应用部署• 无状态与有状态• StatefulSet 控制器概述• StatefulSet 控制器:网络标识• StatefulSet 控制器:独享存储Deployment控制器设计原则:管理的所有Pod一模一样,提供同一个服务,也不考虑在哪台Node运行,可随意扩容和缩容。这种应用称为“无状态”,例

2022-05-06 09:05:41 1083 1

原创 k8s数据卷数据持久化nfs之PV与PVC

PV与PVC• PersistentVolume(PV):持久数据卷,对存储资源的抽象,使得存储作为集群中的资源管理。• PersistentVolumeClaim(PVC):持久数据卷申请,用户定义使用的存储容量,使得用户不需要关心后端存储实现。Pod申请PVC作为卷来使用,Kubernetes通过PVC查找绑定的PV,并挂载到Pod中供程序使用他是出于安全性与专业性以及专业职业逻辑分离的考虑他的一般逻辑如下其中,容器应用内的引用与卷需求模板由开发提供,数据卷定

2022-04-24 10:10:07 3716 13

原创 k8s数据持久化之NFS

目录NFS部署nfs测试k8s中使用nfs示例测试数据共享测试数据持久化NFSNFS是主流的k8s数据持久化解决方案与pod共享存储解决方案NFS数据卷:提供对NFS挂载支持,可以自动将NFS共享路径挂载到Pod中NFS:是一个主流的文件共享服务器部署nfs1、实施nfs(所有节点)yum install nfs-utils -y2、选择一台nfs-utils服务器作为数据节点,并进行配置修改nfs服务器配置

2022-04-24 09:44:39 3340

原创 k8s数据卷之hostPath与emptyDir

目录为什么需要数据卷?常用数据卷empryDir测试hostPath示例为什么需要数据卷?容器中的文件在磁盘上是临时存放的,这给容器中运行比较重要的应用程序带来一些问题。• 问题1:当容器升级或者崩溃时,kubelet会重建容器,容器内文件会丢失• 问题2:一个Pod中运行多个容器需要共享文件 Kubernetes 卷(Volume) 这一抽象概念能够解决这两个问题。常用数据卷• 节点本地(hostPath,emptyDir)• 网络(NFS.

2022-04-24 09:35:38 5838

原创 k8s存储资源ConfigMap与Secret

ConfigMapConfigMap是一个K8s存储资源,用于存储应用程序配置文件。Pod使用configmap数据有两种方式:• 变量注入• 数据卷挂载示例:示例先创建一个configMapvi configMap.yamlapiVersion: v1kind: ConfigMapmetadata:name: configmap-demodata:abc: "123"cde: "456"redis-c...

2022-04-17 22:17:44 2278 4

原创 k8s-ingress工作流程总结

Ingress Contronler工作流程: Ingress Contronler通过与 Kubernetes API 交互,动态的去感知集群中 Ingress 规则变化,然后读取它, 按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段 Nginx 配置,应用到管理的 Nginx服务,然后热加载生效。 以此来达到Nginx负载均衡器配置及动态更新的问题。流程包流程:客户端 ->Ingress Controller(nginx) -> 分布在各节点Po...

2022-04-17 22:11:39 792

原创 k8s-ingress个性化配置

本质上ingress就是一个nginx,而nginx上有很多配置,ingress支持一些个性化定义配置,以下即为将超时信息设置为60秒,关键注解为annotaionshttps://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.mdapiVersion: networking.k8s.io/v1kind: Ingressmetadata

2022-04-17 22:10:07 2968

原创 k8s-ingress发布https服务

配置HTTPS步骤:1、准备域名证书文件(来自:openssl/cfssl工具自签或者权威机构颁发)2、将证书文件保存到Secretkubectl create secret tls \blog-aliangedu-cn --cert=blog.aliangedu.cn.pem --key=blog.aliangedu.cn-key.pem3、Ingress规则配置tls1、生成自签证书先去生成证书,然后将证书放入kubectl的secret中,在代码中写明引用如下

2022-04-17 22:06:24 498

原创 k8s-ingress设置通过url转发

1、案例1、先创建两个测试service暴露两个应用创建一个httpd的deploymentkubectl create deployment httpd --image=httpd创建httpd的servicekubectl expose deployment httpd --port=80 --target-port=80创建一个nginx的deploymentkubectl create deployment nginx --image=ngi

2022-04-17 22:03:38 3557

原创 k8s之ingress介绍与实施

ingress是什么首先,要来看传统k8s中service的NodePort存在的不足1、一个端口只能一个服务使用,端口需要提前规划2、只支持4层网络协议四层(传输层):基于ip和端口转发的七层(应用层):基于应用层协议转发,例如http、可以根据域名、url等转发所以,使用ingress的话,他可以在集群中实现一个统一的负载均衡,在集群中提供一个访问入口,其中,ingress分为ingress和ingress Controlleringress: k8s中的

2022-04-17 21:52:17 6018 7

原创 k8s-service底层之 Iptables与 IPVS

service底层之 Iptables与 IPVS service底层实现主要由两个网络模式组成:iptables与IPVS。他们都是有kube-proxy维护service工作流程图Iptables以k8s中的nginx这个service举例,这是一个nodePort类型的service用命令iptables-save |grep nginx可以看到这个service中的iptables规则找到他对外暴露的端口30601...

2022-04-17 21:36:41 7432 1

原创 k8s之Service

1、Service存在的意义:service引入主要是解决pod的动态变化,提供统一的访问入口:1、防止pod失联,准备找到提供同一服务的pod(服务发现)2、定义一组Pod的访问策略(负载均衡)即访问流程应该是在前端访问后端时,如果直接绑定pod的ip,当pod进行更新时,pod的ip也会变化,前端无法动态的感知后端的变化。同时,还面临多个pod副本如何对外统一访问的问题这里,就需要用到前面的服务发现与负载均衡的概念,2、Pod与Service的关系

2022-04-17 21:28:00 13729

原创 k8s工作负载控制器之job与CronJob

Job与CronJobJob分为普通任务(Job)和定时任务(CronJob)一次性执行,一般用作离线数据处理和视频解码等,或者数据库数据备份等job示例:计算一个圆周率这里配置了never的重启规则,是job常用的规则,即失败后不重启,因为是一次性任务。但job执行完后k8s不会主动去删除那个pod容器,方便查看执行结果apiVersion: batch/v1kind: Jobmetadata:name: pispec:template:...

2022-04-17 21:19:38 1060

原创 k8s负载控制器之DaemonSet

DaemonSet功能:• 在每一个Node上运行一个Pod• 新加入的Node也同样会自动运行一个Pod应用场景:网络插件(kube-proxy、calico)、其他Agentdeplayment示例:yaml示例apiVersion: apps/v1kind: DaemonSetmetadata:labels:app: filebeatname: filebeatspec:selector:matchLabels...

2022-04-17 21:16:11 237

原创 k8s工作负载控制器之deployment介绍与使用

工作负载控制器工作负载控制器(Workload Controllers)是K8s的一个抽象概念,用于更高级层次对象,部署和管理Pod。常用工作负载控制器有:• Deployment : 无状态应用部署• StatefulSet : 有状态应用部署• DaemonSet : 确保所有Node运行同一个Pod• Job : 一次性任务 • Cronjob : 定时任务控制器的作用:1、管理pod对象2、使用标签与pod绑定•3、控制器实现了Pod的运维,例如...

2022-04-10 09:23:55 3953

原创 k8s的pod调度之污点与污点容忍以及pod指定调度

目录k8s的污点介绍Taints案例,给节点添加污点污点容忍,Tolerations案例删除污点nodeNamek8s的污点介绍 基于节点标签分配是站在Pod的角度上,通过在Pod上添加属性,来确定Pod是否要调度到指定的Node上,其实我们也可以站在 Node的角度上,通过在Node上添加污点属性,来避免Pod被分配到不合适的节点上。 Taints:避免Pod调度到特定Node上 Tolerations:允...

2022-04-10 09:11:06 4281

原创 k8s资源调度(POD的资源调度( nodeSelector & nodeAffinity)

目录POD的资源调度(nodeSelector & nodeAffinity)nodeSelector:案例nodeAffinity案例POD的资源调度(nodeSelector & nodeAffinity)nodeSelector: 用于将Pod调度到匹配Label的Node上,如果没有匹配的标签会调度失败。 作用: • 约束Po...

2022-04-10 09:03:44 2376

原创 k8s创建pod的工作流程以及资源限制操作

1、创建一个pod的工作流程: Kubernetes基于list-watch机制的控制器架构,实现组件间交互的解耦。 其他组件监控自己负责的资源,当这些资源发生变化时,kubeapiserver会通知这些组件,这个过程类似于发布与订阅。流程图当用户用kubectl创建容器时,是kubectl向apiserver发送一个创建pod的请求,apiserver会将数据放入etcd存储。scheduler收到未绑定pod资源,通过自身调度算法选择一个合适的node进行绑定,然后响应给api..

2022-04-10 09:00:04 4054

原创 k8s中pod的环境变量,InitContainer初始化容器

1、pod环境变量k8s在容器创建时,有些容器会有需要使用变量的情况,常见的例如mysql这类容器可以通过创建的变量来修改用户名密码等。而在创建 Pod 时,可以为其下的容器设置环境变量。应用场景:• 容器内应用程序希望获取Pod信息• 容器内应用程序希望通过用户定义的变量改变默认行为变量值几种定义方式: • 自定义变量值 • 变量值从Pod属性获取 • 变量值从Secret、ConfigMap获取测试写一个测试yaml(在官网找到的示例)api...

2022-04-06 10:24:30 6235

原创 k8s中pod的重启策略和健康检查

k8s中pod的重启策略pod中一共有以下三个重启策略(restartPolicy)1、Always:当容器终止退出后,总是重启容器,默认策略。2、OnFailure:当容器异常退出(退出状态码非0)时,才重启容器。3、Never:当容器终止退出,从不重启容器。三种重启策略中,Always是默认策略,即当用户在配置文件中未配置关于重启的策略,则默认为Always.检查示例模拟http请求与存活检查先创建一个nginx的deployment.yamlkub..

2022-04-06 10:17:15 10102

原创 k8s中pod的基本概念以及pod内资源共享的分析与实现

pod基本概念: pod是一个逻辑抽象概念,他是kuberneter创建的最小单元,一个pod可以由一个或者多个容器组成pod特点: 1、一个pod可以理解为一个应用实例,提供服务 2、一个pod中的容器始终在一个node上 3、一个pod中可以共享网络、存储资源我们可以抽象的将一个pod看作像一个豌豆荚,一个豌豆荚中可有多个豌豆。pod的主要用法 pod主要有两种用法,分别为单容器用法与多容器用法 运行单个容器:...

2022-04-06 10:09:22 5390

原创 yaml文件格式说明及编写教程

1、ymal介绍k8s是容器编排引擎,使用yaml来编排部署应用特点:1、缩进表示层级关系 2、不支持制表符“tab”缩进,需要使用空格缩进 3、通常开头缩进两个空格 4、关键词字符后缩进一个空格,比如冒号与逗号后面需要缩进一个字符 5、“---”表示YAML格式,一个文件的开始 6、“#”表示注释以下yaml为例等同于 kubectl create deploy...

2022-03-29 09:44:23 19763

原创 使用k8s命令简单部署一个项目

1、简单命令部署一个项目使用Deployment控制器部署镜像:kubectl create deployment xxx--image=xxx如下java-demo是创建的deployment名,lizhenliang/java-demo是所拉取镜像名kubectl create deployment java-demo --image=lizhenliang/java-demo查看创建结果kubectl get deployment,pods使用...

2022-03-29 09:34:03 4291

原创 k8s切换引擎Containerd

1、为什么弃用docker Kubernetes平台中,为了解决与容器运行时(例如Docker)集成 问题,在早期社区推出了CRI(Container Runtime Interface,容 器运行时接口),以支持更多的容器运行时。 当我们使用Docker作为容器运行时之后,架构是这样的,如图所示: Kubernetes 计划弃用就是kubelet中dockershim。即 Kubernetes kubelet 实现中的组件之一,它能够与 Docker Engine 进行通信• Doc...

2022-03-28 12:10:51 1789 4

原创 k8s介绍、架构以及服务器配置推荐

1、k8s官方网站地址Kubernetes2、官方文档地址Kubernetes 文档 | Kubernetes3、k8s架构master:负责整个集群的管理1、API Server :整个k8s的api,主要负责整个集群的统一访问入口以及其他组件的协调工作2、scheduler:调度器,负责调度,将容器调度到合适的节点3、controller-manager:控制器,负责功能的具体实现,例如部署、副本的管理、升级4、kubectl:命令行管理工具,负责连接api管理k8s集群(他可以安装

2022-03-28 12:00:17 7290 1

原创 使用kubeadm部署k8s集群

使用kubeadm部署k8s集群

2022-03-28 11:42:17 1046

原创 关于java接口的一些说明

接口接口(interface)是一种特殊的抽象类,本质上不是一个类,里面只能包含常量和方法的定义(不允许实现),接口就是一套未实现方法的集合。 代码示例: public interface Flyable { //public static final String NAME = "bird"; String NAME = "bird"; ...

2019-07-21 22:11:40 176

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除