[TOC] Pod 优先级和服务质量之间的相互作用 集群中为了保障核心服务正常运行,有时候会舍弃掉不那么核心的服务。在通过Kubernetes实现的时候发现有两个手段: 设置pod的服务质量。Guaranteed, Burstable, BestEffort 设置pod的优先级 可是当这两个发生冲突的时候,优先考虑谁呢?比如现在这种情况: 在资源不够用的情况下,一个高优先级,但是Qos属于Burstable或BestEffort的pod会抢占,低优先级但Qos属于Guaranteed的pod吗? 挠头不? 进过查找资料,发现官方给出的答案是这样的: 其实这里是要分情况来看,简单来说是两个环节:pod调度环节 和 节点压力驱逐环节 pod调度环节 这里有最核心的一句话。 The scheduler's preemption logic does not consider QoS when choosing preemption targets. 调度器的抢占逻辑在选择抢占目标时不考虑 QoS。只看pod的优先级,所以无论Guaranteed, Burstable, BestEffort,只要你的优先级最低,并且能腾出空间给新的pod运行,那很可能就是你了。 节点压力驱逐环节 而对于节点压力驱逐环节可能会繁琐一点 As a result, kubelet ranks and evicts pods in the following order: BestEffort or Burstable pods where the usage exceeds requests. These pods are evicted based on their Priority and then by how much their usage level exceeds the request. Guaranteed pods and Burstable pods where the usage is less than requests are evicted last, based on their Priority. 第一条:usage exceeds requests ...
kubernetes常见问题
[TOC] Rancher平台使用问题记录 平台问题 详细说明 备注 rancher与k8s 异常断连 1.在查看大量日志时出现过该问题 2.一些官方组织的交流群中建议优化 k8s系统参数,增加ip port range k8s grpc-lb无效 方案有4种: 1、grpc-client + k8s headless 2、envoy (grpc proxy) 3、server mesh (istio/linkerd) 4、 rancher平台部署 节点亲和性 pod亲和性/反亲和性 删除deployment,对应service未删除 headless服务部署 节点选择/在页面打污点 k3s部署 指定reserve预留资源 agent 无法设置reserve? https://docs.rancher.cn/docs/k3s/installation/install-options/server-config/_index/#agent-%E7%BD%91%E7%BB%9C https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/ zoomkeeper更新pod始终有一个没有update rollingUpdatePartition: 0 即可 https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions Kafka部署extralaccess longhorn storage 在etcd恢复中是否可用? Kubernetes在在删除namespace后的恢复问题? 1.通过etcd恢复所有的资源配置 2.配置所有的storageclass创建pv的回收策略为:retain 开发人员使用需求汇总 需求内容 详细说明 时间 备注 pod对cpu/memery资源可见性限制 pod支持绑定宿主机CPU核 api-gateway nuclio pod 统一对外开放访问 有状态数据库服务更新手动确认 更新要求: 1.先只更新一个pod 2.手动确认第一个pod运行正常之后再更新其他pod 3.pod确认时间几分钟到数小时不等,无法使用readness进行确认 https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#partitions k3s 在混用docker/containerd之后,重启docker导致的pod hostport模式中iptables路由混乱问题测试验证 hostport添加分析 ...
趴趴语法
[TOC]
趴趴语法01-课程概述
[TOC] 1.课程概述 语法: Grammar, rules, patterns 1.1 语法的几要素 词法:morphology 句法:syntax 语用学:pragmatics 语义学:sematics 1.2 学习方法 语法规则 借助母语,对比参考,first language 术语 development:语言历史,拉丁语/希腊语等。对比中文的文言文 variation:地区不同,British English,American English,Canada English,aave 2.名词 noun 名词内容: 人 物体 地点 抽象概念:快乐, 2.1名词 常见名词后缀, suffix er: teach –> teacher or: educate –> educator ist: art –> artist ion: educate –> education action ment: improve –> improvement movement ness: happy –> happiness loneliness ce: important –> importance differance 名词分类: 普通名词:common concrete/ abstract countable/ uncountable 专有名词:proper,首字母一定大写,无论位置。 名称,具体的人,地点 月份,星期 节日 countable uncountable 裸奔 I have milk. a/an/ s I have a cat. some/any some/ any cats. some/any milk. 一些 a few cats. a little milk. 许多 a lot of cats. a lot of milk. 许多 many cats. much milk. Common Proper person Alex city Paris book One Day holiday Christmas uncountable nouns 度量方式: 量词 ...
k3s 安装
[TOC] k3s 简介 K3s 是一个轻量级的 Kubernetes 发行版,它针对边缘计算、物联网等场景进行了高度优化。由于运行 K3s 所需的资源相对较少,所以 K3s 也适用于开发和测试场景。 部署起来非常简单,所有服务打包为单个二进制文件,同时启动程序自动处理了众多TLS认证的内容,存储也是用轻量级数据库或者内置etcd等。 k3s安装 第一个master # first master curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \ K3S_TOKEN='262c73d1ac2e7a8179c861a8a47640f8' \ INSTALL_K3S_EXEC="server --cluster-init" \ INSTALL_K3S_MIRROR=cn \ INSTALL_K3S_VERSION=v1.20.4+k3s1 sh -s - # check systemctl status k3s.service kubectl get nodes 第二个master 只需要在第一个master的基础上,指定第一个master的IP K3S_URL="https://${first_master_ip}:6443" ,同时去掉初始化选项 --cluster-init 即可。如下: # other master first_master_ip=172.26.186.176 curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \ K3S_TOKEN='262c73d1ac2e7a8179c861a8a47640f8' \ K3S_URL="https://${first_master_ip}:6443" \ INSTALL_K3S_EXEC="server" \ INSTALL_K3S_MIRROR=cn \ INSTALL_K3S_VERSION=v1.20.4+k3s1 sh -s - # check systemctl status k3s.service kubectl get nodes node节点 计算节点再去掉 INSTALL_K3S_EXEC 参数,直接去加入集群即可 ...
Pritunl安装使用
[TOC] Pritunl 安装 Pritunl 是一款VPN server,可以方便的搭建和管理,下面介绍一下如何在ubuntu中安装pritunl。 mongodb安装 Pritunl 默认使用mongodb保存数据。安装过程就不详细介绍了,直接上代码 # mongodb 4 curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add - echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list sudo apt install mongodb-org sudo systemctl start mongod.service sudo systemctl status mongod # mongodb 5 sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list << EOF deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/5.0 multiverse EOF wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add - sudo apt update # WireGuard server support sudo apt -y install wireguard wireguard-tools sudo ufw disable sudo apt -y install mongodb-org sudo systemctl enable mongod sudo systemctl start mongod pritunl apt安装过程 ...
容器核心技术
[TOC] 1.容器的重要特征 随着互联网和软件技术的发展,容器技术越来越为大家所熟知和使用,那么容器技术到底好在哪里呢? 主要是他有如下四个重要特征: 隔离性:基于Linux kernel提供的 namespace资源隔离方案。 安全性:资源隔离,资源访问自然受到了严格的限制,因此同时也把安全问题解决了 便捷性:相对于虚拟机技术,容器技术启动速度非常快 可配额:基于Linux 的Cgroups 即:Control Groups,可以对一个或一组资源控制和监控 docker优势 资源利用率高 启动快 运行环境一致 便于持续交付和部署 便于迁移 便于维护和扩展 docker劣势 2 Linux namespace Linux Namespace是Linux提供的一种内核级别环境隔离的方法。提供了对UTS、IPC、mount、PID、network、User等的隔离机制。 分类 系统调用参数 相关内核版本 隔离内容 Mount namespaces CLONE_NEWNS Linux 2.4.19 挂载点(文件系统) UTS namespaces CLONE_NEWUTS Linux 2.6.19 主机名与域名,影响uname(hostname, domainname) IPC namespaces CLONE_NEWIPC Linux 2.6.19 信号量、消息队列和共享内存, inter-process communication,有全局id PID namespaces CLONE_NEWPID Linux 2.6.24 进程编号 Network namespaces CLONE_NEWNET Linux 2.6.29 网络设备、网络栈、端口等等 User namespaces CLONE_NEWUSER Linux 3.8 用户和用户组 三个系统调用 调用 作用 clone() 实现线程的系统调用,用来创建一个新的进程,并可以通过设计上述参数达到隔离。 创建时传入 flags参数,可选值有 CLONE_NEWIPC, CLONE_NEWNET, CLONE_NEWNS, CLONE_NEWPID, CLONE_NEWUTS, CLONE_NEWUSER, 分别对应上面六种namespace。 unshare() 使某进程脱离某个namespace setns() 把某进程加入到某个namespace 常用操作 ...
Windows10 Cordova环境搭建打包Android安装包
[TOC] 之前写了Vue项目打包成Android和iOS安装包,不过那是基于Linux的环境。最近疫情紧张,都在家里远程办公,,于是整理了Windows10下Cordova环境搭建以及打包Android安装包。 Cordova环境依赖: win10系统 Node环境 Java环境 AndroidStudio Ant Gradle 安装node环境: 1.使用node官网网址下载node包,最好使用稳定版本。https://nodejs.org/ 2.一路安装next,然后在CMD中使用命令查看node版本 node -v npm -v Java环境配置: jdk8下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Windows 10 就下载 jdk-8u241-windows-x64.exe这个文件。 记住安装地址,我是安装在D盘下 第一步:在桌面上依次 右键单击计算机—属性—高级系统设置—环境变量。 第二步:新建一个名为JAVA_HOME的系统变量,第二栏的值即为你自己jdk的安装路径,这里的是我的,自己的依照自己的情况来。 第三步:新建一个名为CLASSPATH的系统变量,在第二栏一字不差地输入 %JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar。看下一个图。 第四步:找到一个叫PATH的系统变量,双击其编辑,在最后加上下图中圈出的语句,然后确定。 第五步:使用CMD检查,使用javac命令,配置成功则出现以下 安装安卓SDK: 第一步:推荐安装AndroidStudio,会自动配置SDK以及SDK-tools等相关的,可以在编辑器里选择要下载使用的SDK版本,安装好后,仿照配置Java环境的方式配置ANDROID_HOME。 安装AS: 安装SDK: SDK Tools: 如果你无法访问Google,那么恭喜你,估计你很难完整的下载到SDK。下面告诉你如何解决: 修改DNS,进入网站http://ping.chinaz.com/,进行 dl.google.com ping检查,选择大陆响应时间最短的IP地址,用这个IP添加到host里面,hosts文件地址:C:\WINDOWS\System32\drivers\etc\hosts 203.208.41.41 dl.google.com 第二步:配置其他安卓环境变量,也是在Path中进行配置 ANDROID_HOME C:\Users\alex\AppData\Local\Android\Sdk %ANDROID_HOME%\build-tools\29.0.3 %ANDROID_HOME%\platform-tools %ANDROID_HOME%\tools 注意:在配置build-tools的时候,版本号不要搞错了。随着你安装时间的不同,这个版本号会不一样。 第三步:终端中输入adb,出现下图表示成功 安装Ant 第一步:https://ant.apache.org/bindownload.cgi 进行安装,选择1.10.*版本的,该版本对应的JDK8。 解压目录: ...
Vue项目打包成Android和iOS安装包
[TOC] 准备环境配置 准备环境需要安装Android Sdk , jdk , Gradle 安装Android Sdk Android Sdk 可以通过安装 android-studio, 然后再编辑器里面选择安装SDK即可。 也可以通过sdk-tools来安装,这种方式无需界面,对于远程Linux的操作非常方便。下面介绍这种方式: 下载sdk-tolls: https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip 解压到指定目录 cd /home/alex/android-sdk unzip sdk-tools-linux-4333796.zip 编辑 ~/.profile 配置环境变量 export ANDROID_HOME=/home/alex/android-sdk export PATH=$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$PATH sdkmanager –list即可查看所有已经安装的和未安装的packages,如下: Installed packages: Path | Version | Description | Location ------- | ------- | ------- | ------- build-tools;24.0.3 | 24.0.3 | Android SDK Build-Tools 24.0.3 | build-tools/24.0.3/ build-tools;25.0.3 | 25.0.3 | Android SDK Build-Tools 25.0.3 | build-tools/25.0.3/ emulator | 26.1.3 | Android Emulator | emulator/ extras;android;m2repository | 47.0.0 | Android Support Repository | extras/android/m2repository/ extras;google;m2repository | 57 | Google Repository | extras/google/m2repository/ extras;m2reposi...ut-solver;1.0.2 | 1 | Solver for ConstraintLayout 1.0.2 | extras/m2reposi...t-solver/1.0.2/ extras;m2reposi...nt-layout;1.0.2 | 1 | ConstraintLayout for Android 1... | extras/m2reposi...t-layout/1.0.2/ patcher;v4 | 1 | SDK Patch Applier v4 | patcher/v4/ platform-tools | 26.0.0 | Android SDK Platform-Tools 26 | platform-tools/ platforms;android-24 | 2 | Android SDK Platform 24 | platforms/android-24/ platforms;android-25 | 3 | Android SDK Platform 25 | platforms/android-25/ tools | 26.0.2 | Android SDK Tools | tools/ Available Packages: Path | Version | Description ------- | ------- | ------- add-ons;addon-g..._apis-google-15 | 3 | Google APIs add-ons;addon-g..._apis-google-16 | 4 | Google APIs add-ons;addon-g..._apis-google-17 | 4 | Google APIs add-ons;addon-g..._apis-google-18 | 4 | Google APIs add-ons;addon-g..._apis-google-19 | 20 | Google APIs add-ons;addon-g..._apis-google-21 | 1 | Google APIs add-ons;addon-g..._apis-google-22 | 1 | Google APIs add-ons;addon-g..._apis-google-23 | 1 | Google APIs add-ons;addon-g..._apis-google-24 | 1 | Google APIs add-ons;addon-g...e_gdk-google-19 | 11 | Glass Development Kit Preview build-tools;19.1.0 | 19.1.0 | Android SDK Build-Tools 19.1 build-tools;20.0.0 | 20.0.0 | Android SDK Build-Tools 20 build-tools;21.1.2 | 21.1.2 | Android SDK Build-Tools 21.1.2 build-tools;22.0.1 | 22.0.1 | Android SDK Build-Tools 22.0.1 build-tools;23.0.1 | 23.0.1 | Android SDK Build-Tools 23.0.1 build-tools;23.0.2 | 23.0.2 | Android SDK Build-Tools 23.0.2 build-tools;23.0.3 | 23.0.3 | Android SDK Build-Tools 23.0.3 build-tools;24.0.0 | 24.0.0 | Android SDK Build-Tools 24 build-tools;24.0.1 | 24.0.1 | Android SDK Build-Tools 24.0.1 build-tools;24.0.2 | 24.0.2 | Android SDK Build-Tools 24.0.2 build-tools;24.0.3 | 24.0.3 | Android SDK Build-Tools 24.0.3 build-tools;25.0.0 | 25.0.0 | Android SDK Build-Tools 25 build-tools;25.0.1 | 25.0.1 | Android SDK Build-Tools 25.0.1 build-tools;25.0.2 | 25.0.2 | Android SDK Build-Tools 25.0.2 build-tools;25.0.3 | 25.0.3 | Android SDK Build-Tools 25.0.3 build-tools;26.0.0 | 26.0.0 | Android SDK Build-Tools 26 build-tools;26.0.1 | 26.0.1 | Android SDK Build-Tools 26.0.1 cmake;3.6.4111459 | 3.6.4111459 | CMake 3.6.4111459 docs | 1 | Documentation for Android SDK emulator | 26.1.3 | Android Emulator extras;android;gapid;1 | 1.0.3 | GPU Debugging tools extras;android;gapid;3 | 3.1.0 | GPU Debugging tools extras;android;m2repository | 47.0.0 | Android Support Repository extras;google;auto | 1.1 | Android Auto Desktop Head Unit... extras;google;g...e_play_services | 43 | Google Play services 下载地址 http://www.android-studio.org/ 解压到/usr/local/目录下 运行 到android-studio文件夹下的bin ./studio.sh 配置Android SDK环境变量,vim ~/.profile中加入下面代码 export ANDROID_HOME=$HOME/Android/Sdk (不存在请单独安装Android Sdk) export PATH=${PATH}:${ANDROID_HOME}/tools export PATH=${PATH}:${ANDROID_HOME}/platform-tools sdkmanager –install ...
ubuntu18 命令行设置wireless 连接WiFi热点
[TOC] nmcli 查看可用WiFi $ nmcli dev wifi IN-USE SSID MODE CHAN RATE SIGNAL BARS SECURITY HiWiFi_5489B6 Infra 3 130 Mbit/s 70 ▂▄▆_ WPA1 WPA2 PING Infra 11 195 Mbit/s 54 ▂▄__ WPA2 H3C Infra 1 270 Mbit/s 44 ▂▄__ WPA1 WPA2 rfkill # rfkill list 0: bluedroid_pm: Bluetooth Soft blocked: yes Hard blocked: no 1: phy0: Wireless LAN Soft blocked: no Hard blocked: no 2: brcmfmac-wifi: Wireless LAN Soft blocked: no Hard blocked: no # rfkill block 1 # rfkill block 2 # rfkill list 0: bluedroid_pm: Bluetooth Soft blocked: yes Hard blocked: no 1: phy0: Wireless LAN Soft blocked: yes Hard blocked: no 2: brcmfmac-wifi: Wireless LAN Soft blocked: yes Hard blocked: no # rfkill unblock 1 # rfkill unblock 2 iw .扫描可用的WiFi # 不加less可能会产生太多输出 iw dev wlan0 scan |less # 或者 iwlist wlan0 scanning ifconfig # ifconfig wlan0 wlan0: flags=4098<BROADCAST,MULTICAST> mtu 1500 ether 00:04:4b:8c:55:d4 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 70 bytes 7620 (7.6 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 # ifconfig wlan0 down ip link set wlan0 down # ifconfig wlan0 up # ip link set wlan0 up wpa ...