avatar
文章
130
标签
14
分类
14

首页
文章
标签
分类
关于
阿哲博客
搜索
首页
文章
标签
分类
关于
实际项目部署案例
发表于2022-07-16|更新于2024-09-29|K8S|K8S
部署项目前的梳理: 1.项目的代码构成,什么语言开发的 2.项目的依赖环境 3.项目的配置文件在哪里 4.项目的端口清单 5.项目有没有做数据的持久化 容器交付流程 在K8s平台部署项目流程 在K8s平台部署Java网站项目 阿里云maven源地址: https://maven.aliyun.com/mvn/guide 第一步:制作镜像 yum install java-1.8.0-openjdk maven git -ygit clone https://github.com/lizhenliang/tomcat-java-demomvn clean package -Dmaven.test.skip=true # 代码编译构建unzip target/*.war -d target/ROOT # 解压构建文件 FROM lizhenliang/tomcat LABEL maintainer www.ctnrs.comRUN rm -rf /usr/local/tomcat/webapps/*COPY target/ROOT /usr/local/tomcat/webapps/ ...
K8s应用包管理器Helm初探
发表于2022-07-15|更新于2024-09-29|K8S|K8S
为什么需要Helm 由于Kubernetes缺少对发布的应用版本管理和控制,使得部署的应 用维护和更新等面临诸多的挑战,主要面临以下问题: 如何将这些服务作为一个整体管理? 这些资源文件如何高效复用? 不支持应用级别的版本管理 Helm介绍 Helm是一个Kubernetes的包管理工具,就像Linux下的包管理器,如yum/apt等,可以很方便的将之前 打包好的yaml文件部署到kubernetes上。 Helm有3个重要概念: helm:一个命令行客户端工具,主要用于Kubernetes应用chart的创建、打包、发布和管理。 Chart:应用描述,一系列用于描述 k8s 资源相关文件的集合。 Release:基于Chart的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个 release;将在 k8s中创建出真实运行的资源对象。 Helm目前有两个大版本:v2和v3 2019年11月Helm团队发布v3版本,相比v2版本最 大变化是将Tiller删除,并将大部分代码重构。 Helm客户端 使用helm很简单,你只需要下载一个二 ...
K8s安全控制
发表于2022-07-14|更新于2024-09-29|K8S|K8S
Kubernetes 安全框架 K8S安全控制框架主要由下面3个阶段进行控制,每一个阶段都 支持插件方式,通过API Server配置来启用插件。 Authentication(鉴权) Authorization(授权) Admission Control(准入控制) 客户端要想访问K8s集群API Server,一般需要证书、Token或 者用户名+密码;如果Pod访问,需要ServiceAccount 鉴权(Authentication) 三种客户端身份认证: HTTPS 证书认证:基于CA证书签名的数字证书认证 HTTP Token认证:通过一个Token来识别用户 HTTP Base认证:用户名+密码的方式认证 授权(Authorization) RBAC(Role-Based Access Control,基于角色的访问控制):负责完成授权(Authorization)工作。 RBAC根据API请求属性,决定允许还是拒绝。 比较常见的授权维度: user:用户名 group:用户分组 资源,例如pod、deployment 资 ...
再谈有状态应用部署:StatefulSet控制器
发表于2022-07-13|更新于2024-09-29|K8S|K8S
无状态与有状态 Deployment控制器设计原则:管理的所有Pod一模一样,提供同一个服务,也不考虑在哪台Node 运行,可随意扩容和缩容。这种应用称为“无状态”,例如Web服务 在实际的场景中,并不能满足所有应用,尤其是分布式应用,会部署多个实例,这些实例之间往往有 依赖关系,例如主从关系、主备关系,这种应用称为“有状态”,例如MySQL主从、Etcd集群 StatefulSet 控制器概述 StatefulSet控制器用于部署有状态应用,满足一些有状态应 用的需求: Pod有序的部署、扩容、删除和停止 Pod分配一个稳定的且唯一的网络标识 Pod分配一个独享的存储 StatefulSet 控制器:网络标识 稳定的网络标识:使用Headless Service(相比普通Service只是将spec.clusterIP定义为None)来维 护Pod网络身份,会为每个Pod分配一个数字编号并且按照编号顺序部署。还需要在StatefulSet添加 serviceName: “nginx”字段指定StatefulSet控制器要使用这个Headless Service。 稳定 ...
数据卷与持久数据卷
发表于2022-07-12|更新于2024-09-29|K8S|K8S
为什么需要存储卷 容器部署过程中一般有以下三种数据: 启动时需要的初始数据,例如配置文件 启动过程中产生的临时数据,该临时数据需要多个容器间共享 启动过程中产生的持久化数据,例如MySQL的data目录 数据卷概述 Kubernetes中的Volume提供了在容器中挂载外部存储的能力 Pod需要设置卷来源(spec.volume)和挂载点(spec.containers.volumeMounts)两个信息后才可以使用相应的Volume 数据卷类型大致分类: 本地(hostPath,emptyDir等) 网络(NFS,Ceph,GlusterFS等) 公有云(AWS EBS等) K8S资源(configmap,secret等) 支持的数据劵类型:https://kubernetes.io/docs/concepts/storage/volumes/ 数据卷:emptyDir emptyDir卷:是一个临时存储卷,与Pod生命周期绑定一起,如果 Pod删除了卷也会被删除。 应用场景:Pod中容器之间数据共享 示例:Pod内容器之前共享数据 ...
管理应用程序配置
发表于2022-07-11|更新于2024-09-29|K8S|K8S
ConfigMap 创建ConfigMap后,数据实际会存储在K8s中Etcd,然后通过创建Pod时引用该数据。 应用场景:应用程序配置 Pod使用configmap数据有两种方式: 变量注入 数据卷挂载 两种数据类型: 键值 多行数据 #解释 apiVersion: v1kind: Podmetadata: #pod的名字 name: configmap-demo-pod spec: containers: - name: demo image: alpine #用进程夯筑容器不让它退出 command: ["sleep", "3600"] env: # 定义环境变量 # 请注意这里和 ConfigMap中的键名是不一样的(自定义键的名字) - name: ABC valueFrom: configMapKeyRef: # 这个值来自 ConfigMa ...
Ingress最佳方式对外暴露应用
发表于2022-07-10|更新于2024-09-29|K8S|K8S
Ingress是什么 NodePort存在的不足: 一个端口只能一个服务使用,端口需提前规划 只支持4层负载均衡 Ingress:Ingress公开了从集群外部到集群内服务的HTTP和HTTPS路由的规则集合,而具体实现流量路 由则是由Ingress Controller负责。 Ingress:K8s中的一个抽象资源,给管理员 提供一个暴露应用的入口定义方法 Ingress Controller:根据Ingress生成具体 的路由规则,并对Pod负载均衡器 Ingress Controller Ingress Controller有很多实现,我们这里采用官方维护的Nginx控制器。 项目地址:https://github.com/kubernetes/ingress-nginx 部署:kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx0.30.0/deploy/static/mandatory.yaml 注意事项: 镜像地址修改成国内的:lizh ...
Service(对外暴露你的应用)
发表于2022-06-17|更新于2024-09-29|K8S|K8S
Service是什么与Service存在的意义 Service引入主要是解决Pod的动态变化,提供统一访问入口: 防止Pod失联,准备找到提供同一个服务的Pod(服务发现) 定义一组Pod的访问策略(负载均衡) Pod与Service的关系 Service通过标签关联一组Pod Service使用iptables或者ipvs为一组Pod提供负载均衡能力 Service定义与创建 vim service.yaml apiVersion: v1kind: Servicemetadata: labels: app: web name: webspec: type: ClusterIP # 服务类型 ports: - port: 80 # Service端口 protocol: TCP # 协议 targetPort: 80 # 容器端口 selector: app: web # 指定关联Pod的标签 #创建service: kubectl apply -f service.yaml #查看service: kubectl get ...
常用工作负载控制器
发表于2022-06-16|更新于2024-09-29|K8S|K8S
工作负载控制器是什么 工作负载控制器(Workload Controllers)是K8s的一个抽象概念,用于更高级层次对象,部署和管理Pod。 常用工作负载控制器: Deployment : 无状态应用部署 StatefulSet : 有状态应用部署 DaemonSet : 确保所有Node运行同一个Pod Job : 一次性任务 Cronjob : 定时任务 控制器的作用: 管理Pod对象 使用标签与Pod关联 控制器实现了Pod的运维,例如滚动更新、伸缩、副本管理、维护Pod状态等。 Deployment Deployment:介绍 Deployment的功能: 管理Pod和ReplicaSet 具有上线部署、副本设定、滚动升级、回滚等功能 提供声明式更新,例如只更新一个新的Image 应用场景:网站、API、微服务 Deployment:使用流程 Deployment:部署 第一步:部署镜像 kubectl apply -f xxx.yaml kubectl create deployment web --image=n ...
深入理解Pod对象:调度
发表于2022-06-15|更新于2024-09-29|K8S|K8S
创建一个Pod的工作流程 Kubernetes基于list-watch机制的控制器架构,实现组件间交 互的解耦。 其他组件监控自己负责的资源,当这些资源发生变化时,kubeapiserver会通知这些组件,这个过程类似于发布与订阅。 Pod中影响调度的主要属性 资源限制对Pod调度的影响 容器资源限制: resources.limits.cpu resources.limits.memory 容器使用的最小资源需求,作为容器调度时资 源分配的依据: resources.requests.cpu resources.requests.memory CPU单位:可以写m也可以写浮点数,例如0.5=500m,1=1000m K8s会根据Request的值去查找有足够资源的Node来调度此Pod vim pod-resources.yaml apiVersion: v1kind: Podmetadata: name: pod-resourcesspec: containers: - name: web image: nginx resources ...
1…678…13
avatar
阿哲
强大自己是解决问题的唯一办法
文章
130
标签
14
分类
14
公告
分享个人经验总结
最新文章
vue前端菜单权限实现思路2024-10-06
django-webssh实现2024-09-23
django-apscheduler基本使用2024-09-22
zabbix监控服务器2024-08-28
银河麒麟离线安装zabbix72024-08-26
分类
  • Ceph1
  • DRF5
  • Django10
  • Docker6
  • ELK11
  • Jenkins5
  • K8S28
  • Prometheus13
标签
Python ELK Prometheus DRF Vue Docker Zabbix Jenkins Web前端 微服务 K8S Django Shell Ceph
归档
  • 十月 20241
  • 九月 20242
  • 八月 20242
  • 六月 202410
  • 五月 20244
  • 三月 202413
  • 二月 202414
  • 一月 20241
网站资讯
文章数目 :
130
本站访客数 :
本站总访问量 :
最后更新时间 :
Copyright © 2021 阿哲
搜索
数据库加载中