helm + skaffold 部署简单项目到K8S
什么是Helmhttps://blog.dsihano.cn/2022/12/25/Helm%E5%9F%BA%E7%A1%80/
什么是skaffoldhttps://time.geekbang.org/column/article/5208
https://skaffold.dev/docs/
https://zhuanlan.zhihu.com/p/256252866
参考项目Github: https://github.com/AGoodStudy/skaHelmDemo
技术:helm + skaffold + maven + jib + springboot + redis
helm基础
参考文档:
https://helm.sh/zh/docs/
https://zhuanlan.zhihu.com/p/350328164
helm概念shelm是kubernetes生态系统中的一个软件包管理工具,类似ubuntu的apt,centos的yum或python的pip一样,专门负责管理kubernetes应用资源;使用helm可以对kubernetes应用进行统一打包、分发、安装、升级以及回退等操作。
Helm 安装 charts 到 Kubernetes 集群中,每次安装都会创建一个新的 release。你可以在 Helm 的 chart repositories 中寻找新的 chart。
解决的问题:
难管理,每个服务都有若干配置,缺乏更高层次的组织方式。
不容易将这些服务作为一个整体发布,部署人员需要理解都包含哪些服务、服务间的逻辑顺序,缺少依赖关系的管理。
不能高效的共享和重用。
没有应用级别的版本管理,现有的回滚是针对 deployment的,不支持整个应用。
不支持应用状态的验证,kubernetes的健康检查是针对单个容器的,我们需要应用级别的检查。
...
K8S搭建ELK
1、搭建K8S集群参考以前的文章
2、安装GlusterFS参考以前的文章
3、搭建ES+Kibana12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518 ...
K8S Pod
概念:Pod 扮演的是传统部署环境里“虚拟机”的角色。
如果你把 Pod 看成传统环境里的“机器”、把容器看作是运行在这个“机器”里的“用户程序”,那么很多关于 Pod 对象的设计就非常容易理解了。
比如,凡是调度、网络、存储,以及安全相关的属性,基本上是 Pod 级别的。
重要字段:NodeSelector:是一个供用户将 Pod 与 Node 进行绑定的字段
123456apiVersion: v1kind: Pod...spec: nodeSelector: disktype: ssd
这样的一个配置,意味着这个 Pod 永远只能运行在携带了“disktype: ssd”标签(Label)的节点上;否则,它将调度失败。
NodeName:一旦 Pod 的这个字段被赋值,Kubernetes 项目就会被认为这个 Pod 已经经过了调度,调度的结果就是赋值的节点名字。所以,这个字段一般由调度器负责设置,但用户也可以设置它来“骗过”调度器,当然这个做法一般是在测试或者调试的时候才会用到。
(比如有A、B两台node,如果是调度器来调度,两台机器均有可能被调度,手动设置到A ...
K8S Secret
一个 Secret 可以包含 Pod 访问数据库所需的用户凭证。 例如,由用户名和密码组成的数据库连接字符串
kubectl 管理 Secret12345678910111213141516171819202122# 创建echo -n 'admin' > ./username.txtecho -n '1f2d1e2e67df' > ./password.txtkubectl create secret generic db-user-pass \ --from-file=./username.txt \ --from-file=./password.txt# 或者kubectl create secret generic db-user-pass \ --from-literal=username=devuser \ --from-literal=password='S!B\*d$zDsb='# 查看 kubectl describe secrets db-user-passkubectl get sec ...
K8S ConfigMap
创建ConfigMap123456789101112131415161718192021222324252627282930313233343536373839404142kubectl create configmap <映射名称> <数据源>1、字面值创建kubectl create configmap testfirst --from-literal=testKey=testvalue --from-literal=testKey2=testvalue22、基于目录创建(目录下的所有properties文件都会引入,只要想要一个文件,就把路径精确到文件)kubectl create configmap game-config --from-file=configure-pod-container/configmap/如果不想使用文件名座位keykubectl create configmap game-config-3 --from-file=<我的键名>=<文件路径>3、从环境文件创建(和上一个方法区别是,会把文件中每一个值摊 ...
K8S Service
Kubernetes Pod 是转瞬即逝的。 Pod 实际上拥有 生命周期。 当一个工作 Node 挂掉后, 在 Node 上运行的 Pod 也会消亡。 ReplicaSet 会自动地通过创建新的 Pod 驱动集群回到目标状态,以保证应用程序正常运行,service定义了定义了 Pod 的逻辑集和访问 Pod 的协议,通过service访问服务就不用担心pod改状态变的情况。
Service Type的常用类型:
ClusterIP (默认) - 在集群的内部 IP 上公开 Service 。这种类型使得 Service 只能从集群内访问。
NodePort - 使用 NAT 在集群中每个选定 Node 的相同端口上公开 Service 。使用<NodeIP>:<NodePort> 从集群外部访问 Service。是 ClusterIP 的超集。
LoadBalancer - 在当前云中创建一个外部负载均衡器(如果支持的话),并为 Service 分配一个固定的外部IP。是 NodePort 的超集。
ExternalName - 通过返回带有该名称的 CNA ...
Kubeadm搭建K8S集群(V1.23.5)
一、环境准备1、Linux初始化(CentOS)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117# 1、关闭防火墙systemctl stop firewalldsystemctl disable firewalld# 2、关闭selinux# linux下的一个安全机制,主要是对文件系统访问做一个权限控制,# 这个权限控制会影响到kubernetes中的一个组件kuberlete的安装,# 因为这个组件的安装会访问本地的文件操作系统# 永久getenforce # 查看selinux状态sed -i 's/^ *SELINUX=enforcin ...
CentOS安装GlusterFS使用复制卷
安装并启用1234567891011121314151617181920212223242526272829# 先准备3个节点 并在hosts中配置好映射# 安装yum install centos-release-glusteryum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma# 启动systemctl start glusterd.servicesystemctl enable glusterd.service# master执行 gluster peer probe node1gluster peer probe node2# 查看状态gluster peer status# master 执行,创建3副本的卷gluster volume create es-volume replica 3 transport tcp master1:/root/data/elk_data/ node1:/root/data/elk_data/ node2:/root/data/elk_data/ for ...
AWS Learning Notes
How to choose an AWS Region
Compliance with data governance and legal requirements: data never leaves a region without your explict permission
Proximity to customers: reduced latency
Available services within a Region: new services and new features aren’t available in every Region
Pricing: pricing varies region to region and is transparent in the service pricing page
IAMIdentity and Acess Management (Global service)
Root account created by default , shouldn’t be used or shared
Users are people ...





