初识Vue
第一次接触Vue,看文档还是有点蒙蔽的,直接快进到Quick Start
第一个Demo#
下载Vue:
12345npm create vue@latest # 添加vue的依赖--后面的选项全选nocd <your-project-name> #进入vue的工作目录npm install #估计也是安装依赖,反正我不操心npm run dev #启动项目--这个最重要了npm run build # 编译成应用程序,反正开发阶段不需要理解这个
刚刚安装好依赖估计是这样的:
不用看注释,这个是我尝试的东西。
然后 npm run dev 启动,就会出现这个图案
为了更好理解一下这个框架,我稍作一下修改
创建 ./src/apps.vue
12345678910111213<template> <h1>{{ message }}</h1> </template> <script> export default { data() ...
StatefulSet
–背景
当对于无状态应用时我们可以随意扩容删除
但对于有状态应用时我们就不能随意,因为他要依赖我们本地的文件和网络等
那么我们有状态应用就需要实现在容器的删除建立中,文件网络时不变的
Headless Service
用于定义网络标志(DNS domain)
服务名 ==> 域名 ==> ip
volumeClaimTemplate
将某些依赖挂载到这个卷上,实现持久化存储
如何创建一个sts#
cd /home/echin
mkdir sts
cd sts/
touch web.yaml
vim web.yaml
12345678910111213141516171819202122232425262728293031323334353637383940414243444546* ````` apiVersion: apps/v1 # 指定使用的 Kubernetes API 版本 kind: StatefulSet # 资源类型为 StatefulSet,用于管理有状态应用的 Pod 副本 metadat ...
Deployment
回顾什么是RS#在 Kubernetes 中,RS 是 ReplicaSet 的缩写,它是一种 API 对象,用于确保指定数量的 Pod 副本始终运行并处于可用状态。ReplicaSet 负责维护 Pod 副本的稳定运行,如果由于某些原因(如节点故障或 Pod 崩溃)导致 Pod 副本数量减少,ReplicaSet 将替换这些 Pod 以维持期望的副本数量。
ReplicaSet 通常与 Deployment 一起使用,Deployment 控制器使用 ReplicaSet 来管理 Pod 副本的声明周期。Deployment 负责声明 Pod 模板的期望状态,而 ReplicaSet 负责实现这个状态。
ReplicaSet 的主要特点包括:
副本数量保证:确保指定数量的 Pod 副本始终运行。
选择器(Selector):ReplicaSet 使用选择器来识别和管理它应该管理的 Pod。选择器是一个标签查询,用于匹配 Pod 的标签。
更新和替换:当 Pod 模板发生变化时,ReplicaSet 可以替换旧的 Pod 副本,以确保所有 Pod 都符合新的模板。
ReplicaS ...
Pod
用yml建立一个Pod#
选定一个位置并创建文件
123cd /home/echinmkdir pods/touch nginx-demo.yaml
撰写yml文件
1vim nginx-demo.yaml
yaml文件
不用背,直接让GPT生成吧,感觉自己写的总是有问题
12345678910111213141516171819202122232425262728293031323334当然可以。以下是一个简单的 Kubernetes Pod 的 YAML 配置示例,它定义了一个运行 Nginx Web 服务器的 Pod:apiVersion: v1 # 使用的 Kubernetes API 版本kind: Pod # 资源类型为 Podmetadata: name: nginx-pod # Pod 的名称 namespace: default # Pod 所在的命名空间,默认为 default labels: # 为 Pod 设置标签,可以用于选择器 app: nginxspec: # Pod 的详细规格定义 containers: # 容 ...
k8s图形化界面
连接k3s#
首先确保你有Lens和k3s,我这里操作的是本地的
cd / 到达根目录
cd /etc/rancher/k3s/ 到达这个目录,有个k3s.yaml的文件
cat k3s.yaml
获得以下信息:
12345678910111213141516171819202122apiVersion: versionclusters:- cluster: certificate-authority-data: xxxxxxxxxxxxxxxxxxxxxxxxxx server: https://ip:port name: defaultcontexts:- context: cluster: default user: default name: defaultcurrent-context: defaultkind: Configpreferences: {}users:- name: default user: client-certificate-data: xxxxxxxxxxxxxxxxxxxx ...
Termius远程连接aliyun
Termius远程连接ES云服务器#连接使用SSH的公钥密钥配对使用
首先你需要有一台云服务器和下载Termius.exe,并且登录云服务器和Termius
在云服务器中
公钥写在 /home/username/.ssh/authorized_keys 下
如果首先创建了用户,需要自己创建.ssh目录
我是直接用root登录,因此直接使用 /root/.ssh/authorized_keys了
1234cd .. #移动到根目录cd root cd .ssh/nano authorized_keys
创立密钥对(Termius)
打开Termius,然后按照下面步骤打开
Label 相当于他的名字
Passphase 相当于他的口令,这个口令是用来加密你的密钥的,输入Label,PassPhase后生成会有一个
Private Key 私钥,这个非常重要,不能乱放
Public Key 公钥,公共的要交给服务器的
输入公钥
如果你一开始服务器就是用SSH登录的,这个文件中应该会有一行公钥,类似于这样的公钥
1ssh-rsa AAAAB3xxxxxxxxxxxxxxx ...
k8s集群架构与组件
集群架构#总架构图:
Controll plane(主节点) -> Node(从节点) + 一堆附加组件
每一个大框可以看作一个服务器,也就是一个节点;因此这张图上有三个服务器,可以看出k8s的需求资源庞大
大致流程:
客户端 -> api-server(其中有命令行-http服务-k8s接口服务) -> pods
对就是这么简单
api-server 是交换api的核心,这个是最重要的
组件#
Controll Plane(Master)
Node(节点)
附加的一些节点
这个真的是我看过的最详细的一张图了:
Controll Plane (Master):
api-server(核心)
api-server 提供的是接口服务,基于 REST 风格开放k8s接口的服务
所有的操作都是围绕 api-server 展开的, api-server 维护了各种功能api
api-server 提供了 Master 到 Node 的交互
[!IMPORTANT]
对象的创建,删除,修改都是通过Kubernetes API,也就是Api-s ...
k8s核心概念
什么是k8s#k8s 是面向资源的,一切皆资源,我们可以通过json,yaml(一般用yaml)等方式来描述资源(Pod,Service,Node)
资源和对象映射到JAVA中,资源相当于Java中的类,而对象就是类形成的实例
pod 是最小的调度单位,k8s 最终的资源呈现都是以pod为形态展现的。
pod 相当于底层的一个单位。
kubernetes , 是容器编排引擎,是为了让容器部署更加方便,可以管理云平台中多主机上的容器化应用,正常之前的DevOps(Docker Compose)是可以实现在单主机上的应用
传统部署 vs 虚拟化部署vs 容器化部署#
传统部署
人工频繁:人们需要很繁琐地去部署,维护
并发问题:当应用A和应用B同时修改某个文件的时候,就会出现并发问题
网络带宽的资源缺少问题:应用A和应用B同时占用同一个带宽,网络拥挤
CPU,磁盘的资源争抢问题:同上
虚拟化部署
将服务器虚拟化,在一个物理服务器上划分为许许多多的虚拟机
但是会出现不必要资源占用的情况,即启动一个虚拟机需要的资源太多了,但是如果一个虚拟机上只安装了一两个应用就会方向整个操作系统有 ...
高中的奇思妙想
这个博客记录了我高一时候的奇思妙想
有点怀念了
单调栈
期末考试终于考完了,泥电的考试实在是折磨人,离散+高数+大物
算起来我好像复习了五天的离散,两天的高数,一个晚上的大物
我真特么厉害…….
现在继续回归写算法吧,github都搁置了好几天了,唉
单调栈#什么是单调栈,就是单调的栈,要么递增,要么递减,好了没了
然后,单调栈解决的问题是什么:
通常解决“通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。”
为什么要用单调栈:
因为他快,用空间换时间,跟动态规划差不多,不过这个比动态规划更加容易理解反正。
下面需要明白两个性质:
单调栈中 stack[i]=index 其中 index 是目标数组中的索引
什么时候单调递增,什么时候单调递减
好 ,下面就用下面这道题来理解一下这个性质。
其中,我们把这个stack 比作 go 中的 slice
然后整个形状可以变成这样
单调递增栈:
这里的slice从左往右数不是单调递增的,为什么还会叫单调递增栈呢?
因为它出栈入栈的比较过程中是单调递增的,到时候就会理解了
大
小
从这里进入
单调递减栈:
同上(为什么叫单调 ...