K3s 工具进阶完全指南
❝
本文转自 Escape,原文:https://www.escapelife.site/posts/754ba85c.html,版权归原作者所有。欢迎投稿,投稿请添加微信好友:cloud-native-yang
❝
深入理解官方文档,轻松学会使用 K3s 工具!
K3s
是一个轻量级的 Kubernetes
发行版,它针对边缘计算、物联网等场景进行了高度优化。
CNCF
认证的Kubernetes
发行版支持
X86_64
,ARM64
,ARMv7
平台单一进程包含
Kubernetes master
,kubelet
和containerd
1. K3s 工具介绍
❝
为你提供 k3s 的产品介绍
K3s
有以下增强功能:
打包为单个二进制文件
把
K8S
相关的组件,比如kube-api
/kube-manager
都打包到同一个二进制文件里面,这样的话,只需要启动这个文件就可以快速的启动对应的组件。
使用基于 sqlite3 的默认存储机制
同时支持使用
etcd3
、MySQL
和PostgreSQL
作为存储机制。
默认情况下是安全的
在
K3s
中有一个默认的证书管理机制 (默认一年有效期),也有一个可以轮转证书的功能 (就是在小于九十天之内重启K3s
的话,就会自动续一年)。
功能强大的
batteries-included
功能就是虽然有些服务本身这个二进制文件并没有提供,但是可以通过内置的服务,将配置文件放到指定的目录下面,就可以在启动的时候一并将该服务启动或替换默认组件。
所有
K8S control-plane
组件都封装在单个二进制文件和进程中因为封装在二进制文件中,所以启动的时候只有一个进程。好处在于只需要管理这个单一进程就可以了,同时也具备操作复杂集群的能力。
最大程度减轻了外部依赖性
即稍新一点的
Linux
内核就可以了 (需要kernel
和cgroup
挂载)。
之所以叫做 K3s
是因为希望安装的 K8S
在内存占用方面只是一半的大小,而一半大的东西就是一个 5
个字母的单词,简写为 K3s
。
生命周期
同时支持
3
个K8s
版本,支持的生命周期与K8s
相同可以参考 : Kubernetes 版本及版本偏差支持策略[1] 进行学习
更新周期
当
K8s
更新新版本后,一般K3s
在一周内同步更新可以通过 这个链接[2] 获取
latest
/stable
/testing
版本我们默认安装的是
stable
版本,可以运行通过命令进行查看
命名规范
v1.20.4+k3s1:
v1.20.4
为K8s
版本,k3s1
为补丁版本
# K3s软件包需要的依赖项
containerd # 容器运行时(可以使用docker替代)
Flannel # 网络
CoreDNS # DNS
CNI # CNI
Traefik # 默认的controller服务(apisix/ingress-controller)
iptables # 主机实用程序
service load balancer # 嵌入式服务负载均衡器
network policy controller # 嵌入式网络策略控制器# K3s适用于以下场景
CI
Development
ARM
嵌入 K8s
物联网-IoT
边缘计算-Edge
与此同时,Rancher
中国团队推出了一款针对 K3s
的效率提升工具:AutoK3s。只需要输入一行命令,即可快速创建 K3s
集群并添加指定数量的 master
节点和 worker
节点。
2. K3s 快速入门
❝
原理就是,将 K8S 的相关组件封装到 K3s 的二进制文件中去!
原理就是,将 K8S
的相关组件封装到 K3s
的二进制文件中去,然后启动这二进制文件就可以启动一个成熟的 K8S
集群。我们可以看到 K3s
和 K8S
的架构基本差不多,其中 k3s-server
对应这个 control-plane
,而 k3s-agent
对应着 node
节点。
可以看到 k3s
中使用的默认存储是 SQLite
(自带),且默认的网络使用的是 Flannel
(自带)。当服务端和客户端都启动之后,通过 Tunnel-Proxy
这个组件进行通信,通过这个通道去管理网络流量。在 agent
节点中,通过 kubelet
操作 contaninerd
来创建对应 Pod
。
K3s 架构
K8s 架构
国内的话,建议使用官方提供的 镜像地址[3],这样不但可以加速本地 K3s
的时候,而且方便部署和更新服务。这也是为什么建议国内使用 k3s-install.sh
部署服务的原因,因为其内部使用的地址都是从国内去获取的。
3. K3s 安装事项
安装指南
❝
理解 Server 节点的安装,以及注册 Agent 节点的步骤!
虽然可以通过下载二进制文件进行服务端和工作节点的运行 (./k3s server
),但是一旦我们退出进程,之前创建的节点也就立即销毁了,所以还是建议使用脚本进行安装。
# 主节点
$ ./k3s server# 工作节点
$ ./k3s agent K3s_URL=xxx K3s_TOKEN=xxx# 清除垃圾文件
$ rm -rf /etc/rancher /var/lib/rancher
镜像加速
# 添加配置
$ cat >> /etc/rancher/k3s/registries.yaml <<EOF
mirrors:"docker.io":endpoint:- "https://fogjl973.mirror.aliyuncs.com"- "https://registry-1.docker.io"
EOF# 重启服务
$ sudo systemctl restart k3s# 是否生效
$ sudo crictl info | grep -A 2 "endpoint"
K3s
提供了一个安装脚本,可以方便的在 systemd
或 openrc
的系统上将其作为服务安装。运行此安装后,K3s
服务将被配置为在节点重启后或进程崩溃或被杀死时自动重启。
安装内容
kubectl
、crictl
、ctr
k3s-killall.sh
、k3s-uninstall.sh
执行操作
将
kubeconfig
文件写入到/etc/rancher/k3s/k3s.yaml
里面由
K3s
安装的kubectl
工具将自动使用该文件的配置来运行其他机器可以通过复制这个配置文件并修改
server
地址来操作K3s
集群
主节点 - 192.168.100.100
# 安装脚本
# https://get.k3s.io
$ curl -sfL https://get.k3s.io | sh -# 建议使用这个安装脚本(国内化了)
$ curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn K3s_NODE_NAME=k3s1 \K3s_KUBECONFIG_OUTPUT=/home/escape/.kube/config \INSTALL_K3s_EXEC="--docker" sh -
# 查找stable分支版本信息
[INFO] Finding release for channel stable
[INFO] Using v1.23.6+k3s1 as release# 获取国内镜像版本地址
[INFO] Downloading hash https://rancher-mirror.rancher.cn/k3s/v1.23.6-k3s1/sha256sum-amd64.txt
[INFO] Downloading binary https://rancher-mirror.rancher.cn/k3s/v1.23.6-k3s1/k3s
[INFO] Verifying binary download# 安装k3s二进制工具并链接相关工具(内置)
[INFO] Installing k3s to /usr/local/bin/k3s
[INFO] Skipping installation of SELinux RPM
[INFO] Creating /usr/local/bin/kubectl symlink to k3s
[INFO] Creating /usr/local/bin/crictl symlink to k3s
[INFO] Skipping /usr/local/bin/ctr symlink to k3s, command exists in PATH at /usr/bin/ctr# 安装清除和卸载k3s生成的配置和工具
[INFO] Creating killall script /usr/local/bin/k3s-killall.sh
[INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh# 常见了两个systemd的配置
[INFO] env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO] systemd: Creating service file /etc/systemd/system/k3s.service
[INFO] systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.# 启动k3s服务
[INFO] systemd: Starting k3s
工作节点 - 192.168.100.101
# 工作节点上安装并将它们添加到集群
# https://docs.rancher.cn/docs/k3s/architecture/_index#注册-agent-节点
$ curl -sfL https://get.k3s.io | \K3s_URL=https://myserver:6443 \K3s_TOKEN=mynodetoken sh -# 建议使用这个安装命令(国内化了)
# K3s_URL: 会使K3s以worker模式运行
# K3s_TOKEN: 使用的值存储在你的服务器节点上
# K3s_NODE_NAME: 为每个节点提供一个有效且唯一的主机名
$ curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn K3s_NODE_NAME=k3s2 \K3s_KUBECONFIG_OUTPUT=/home/escape/.kube/config \K3s_URL=https://192.168.100.100:6443 \K3s_TOKEN=mynodetoken sh -# mynodetoken
$ sudo cat /var/lib/rancher/k3s/server/token
# 查找stable分支版本信息
[INFO] Finding release for channel stable
[INFO] Using v1.23.6+k3s1 as release# 获取国内镜像版本地址
[INFO] Downloading hash https://rancher-mirror.rancher.cn/k3s/v1.23.6-k3s1/sha256sum-amd64.txt
[INFO] Downloading binary https://rancher-mirror.rancher.cn/k3s/v1.23.6-k3s1/k3s
[INFO] Verifying binary download# 安装k3s二进制工具并链接相关工具(内置)
[INFO] Installing k3s to /usr/local/bin/k3s
[INFO] Creating /usr/local/bin/kubectl symlink to k3s
[INFO] Creating /usr/local/bin/crictl symlink to k3s
[INFO] Skipping /usr/local/bin/ctr symlink to k3s# 安装清除和卸载k3s生成的配置和工具
[INFO] Creating killall script /usr/local/bin/k3s-agent-killall.sh
[INFO] Creating uninstall script /usr/local/bin/k3s-agent-uninstall.sh# 常见了两个systemd的配置
[INFO] env: Creating environment file /etc/systemd/system/k3s-agent.service.env
[INFO] systemd: Creating service file /etc/systemd/system/k3s-agent.service
[INFO] systemd: Enabling k3s-agent unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s-agent.service → /etc/systemd/system/k3s-agent.service.# 启动k3s服务
[INFO] systemd: Starting k3s-agent
配置要求
❝
理解 Server 节点的安装,以及注册 Agent 节点的步骤!
先决条件
选择上,两个节点不能有相同的主机名
不修改主机名可以通过添加随机后缀或指定主机名
# 为每个节点添加随机后缀
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn K3s_URL=https://192.168.100.100:6443 \K3s_TOKEN=xxx sh -s - --with-node-id# 为每个节点指定主机名
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \K3s_NODE_NAME="k3s2" INSTALL_K3s_MIRROR=cn \K3s_URL=https://192.168.64.3:6443 K3s_TOKEN=xxx sh -# 为每个节点指定主机名
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn K3s_URL=https://192.168.64.3:6443 \K3s_TOKEN=xxx sh -s - --node-name k3s2
硬件信息
操作系统:可以在大多数现代
Linux
系统上运行磁盘设备:
K3s
的性能取决于数据库的性能 (建议使用SSD
硬盘)网络相关:
K3s Server
节点的入站规则,所有出站流量都是允许的
协议 | 端口 | 源 | 描述 |
---|---|---|---|
TCP | 6443 | K3s agent 节点 | Kubernetes API Server |
UDP | 8472 | K3s server 和 agent 节点 | 仅对 Flannel VXLAN 需要 |
TCP | 10250 | K3s server 和 agent 节点 | Kubelet metrics |
TCP | 2379-2380 | K3s server 节点 | 只有嵌入式 etcd 高可用才需要 |
安装选项
官方安装参数文档[4]
[安装选项示例演示](https://github.com/kingsd041/k3s-tutorial/blob/main/03-安装-要求及选项 /README.md "安装选项示例演示")
Environment Variable | Description |
---|---|
INSTALL_K3s_EXEC
|
用于在服务中启动 K3s 的后续子命令
|
K3s_CONFIG_FILE
|
指定配置文件的位置 |
K3s_TOKEN
|
用于将 server/agent 加入集群的共享 secret 值
|
K3s_TOKEN_FILE
|
用于将 server/agent 加入集群的共享 secret 文件
|
INSTALL_K3s_VERSION
|
指定下载 K3s 的版本
|
K3s_TOKEN_FILE
|
指定 cluster-secret /token 的文件目录
|
INSTALL_K3s_SKIP_START
|
将不会启动 K3s 服务
|
INSTALL_K3s_SKIP_DOWNLOAD
|
用于离线安装;设置之后不会下载远程工具 |
# 其实就把对应参数加到systemd配置文件里面去了
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \INSTALL_K3s_EXEC="--docker" sh -# 自动化部署(不用获取token值了)
# 主节点和工作节点使用我们指定的key来通信
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \K3s_TOKEN=rancher-k3s sh -
$ sudo cat /var/lib/rancher/k3s/server/token
其他说明
运行
agent
时还必须设置K3s_TOKEN
以
K3s_
开头的环境变量将被保留,供systemd/openrc
使用没有明确设置
exec
并设置K3s_URL
的话会将命令默认为工作节点
命令参数
❝
理解 Server 节点的安装,以及注册 Agent 节点的步骤!
在整个 K3s 文档中,你会看到一些选项可以作为命令标志和环境变量传递进来,那该如何使用标志和环境变量呢?
使用标志和环境变量
# 使用标志
$ curl -sfL https://get.k3s.io | K3s_KUBECONFIG_MODE="644" sh -s -
$ curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644# 环境变量
$ curl -sfL https://get.k3s.io | \INSTALL_K3s_EXEC="--flannel-backend none" sh -s -
$ curl -sfL https://get.k3s.io | \sh -s - server --flannel-backend none
K3s Server/Agent - 常用配置
# write-kubeconfig
# 将管理客户端的kubeconfig写入这个文件
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \K3s_KUBECONFIG_OUTPUT=/root/.kube/config \sh -
# 使用docker作为容器运行时
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \INSTALL_K3s_EXEC="--docker" sh -# 指定运行时工具
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \INSTALL_K3s_EXEC="--container-runtime-endpoint containerd" \sh -# 设置私有镜像仓库配置文件
# 默认配置文件: /etc/rancher/k3s/registries.yaml
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \INSTALL_K3s_EXEC="--private-registry xxx" \sh -
# 针对多网卡主机安装K3s集群
# 默认多网卡会使用默认网关的那个卡
$ rout -n# K3s server
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \INSTALL_K3s_EXEC="--node-ip=192.168.100.100" \sh -# K3s agent
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \K3s_URL=https://192.168.99.211:6443 K3s_TOKEN=xxx \INSTALL_K3s_EXEC="--node-ip=192.168.100.100" \sh -
# --tls-san
# 在TLS证书中添加其他主机名或IP作为主机备用名称
# 即在公网环境下允许通过公网IP访问控制、操作远程集群
# 或者部署多个Server并使用LB进行负责,就需要保留公网地址
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \INSTALL_K3s_EXEC="--tls-san 1.1.1.1" \sh -# 获取配置
$ kubectl get secret k3s-serving -n kube-system -o yaml# 然后本机复制公网主节点对应的yaml文件即可本地操作了
$ scp ci@1.1.1.1:/etc/rancher/k3s/k3s.yaml ~/.kube/config
# 修改启动的服务对应配置(调整节点的启动的最大Pod数量)
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \INSTALL_K3s_EXEC='--kubelet-arg=max-pods=200' \sh -# 修改启动的服务对应配置(使用ipvs作为服务调度工具)
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \INSTALL_K3s_EXEC='--kube-proxy-arg=proxy-mode=ipvs' \sh -# 修改启动的服务对应配置(调整服务启动的端口范围)
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \INSTALL_K3s_EXEC='--kube-apiserver-arg=service-node-port-range=40000-50000' \sh -# kubelet-arg --kubelet-arg
# kube-apiserver --kube-apiserver-arg
# kube-proxy-arg --kube-proxy-arg
# kube-proxy-arg --kube-proxy-arg=proxy-mode=ipvs
# --data-dir
# 修改K3s数据存储目录
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \INSTALL_K3s_EXEC='--data-dir=/opt/k3s-data' \sh -
# 禁用组件
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \INSTALL_K3s_EXEC='--disable traefik' \sh -# 自己加自己需要的服务
$ ls /var/lib/rancher/k3s/server/manifests
$ kubectl get pods -A | grep traefik
# 添加label和taint标识
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \INSTALL_K3s_EXEC='--node-label foo=bar,hello=world \--node-taint key1=value1:NoExecute'sh -# 查看一下
$ kubectl describe nodes
K3s Server/Agent - 数据库选项
# 指定数据源名称
# 标志位: --datastore-endpoint value
# 环境变量: K3s_DATASTORE_ENDPOINT
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \INSTALL_K3s_EXEC='--datastore-endpoint etcd' \sh -
# cron规范中的快照间隔时间
# --etcd-snapshot-schedule-cron value
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \INSTALL_K3s_EXEC='--etcd-snapshot-schedule-cron * */5 * * *' \sh -
网络选项
❝
理解 Server 节点的安装,以及注册 Agent 节点的步骤!
默认情况下,K3s
将以 flannel
作为 CNI
运行,使用 VXLAN
作为默认后端,CNI
和默认后端都可以通过参数修改。要启用加密,请使用下面的 IPSec
或 WireGuard
选项。
# 默认安装K3s之后的网络配置
$ sudo cat /var/lib/rancher/k3s/agent/etc/flannel/net-conf.json
{"Network": "10.42.0.0/16","EnableIPv6": false,"EnableIPv4": true,"IPv6Network": "::/0","Backend": {"Type": "vxlan"}
}
CLI Flag 和 Value | 描述 |
---|---|
--flannel-backend=vxlan
|
使用 VXLAN 后端 (默认)
|
--flannel-backend=host-gw
|
使用 host-gw 后端
|
--flannel-backend=ipsec
|
使用 IPSEC 后端;对网络流量进行加密
|
--flannel-backend=wireguard
|
使用 WireGuard 后端;对网络流量进行加密
|
配置 Flannel 选项
这样,我就可以在安装 K3s
或者之后修改对应配置文件,来修改 Flannel
默认的后端网络配置选项 (重启会覆盖不生效) 了。下面,我们演示下,如何修改为 host-gw
模式。
# 主节点
# flannel-backend使用host-gw
# 该模式会把对端主机的IP当做默认网管(多Server情况)
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \INSTALL_K3s_EXEC='--flannel-backend=host-gw' \sh -# 工作节点
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn K3s_URL=https://192.168.100.100:6443 \K3s_TOKEN=xxx sh -
# 默认的路由信息
$ route -n
0.0.0.0 172.16.64.1 0.0.0.0 UG 100 0 0 enp0s2
10.42.1.0 172.16.64.9 255.255.255.0 UG 0 0 0 enp0s2# 查看配置之后的网络配置
$ sudo cat /var/lib/rancher/k3s/agent/etc/flannel/net-conf.json
{"Network": "10.42.0.0/16","Backend": {"Type": "host-gw"}
}
启用 Directrouting 特性
Flannel 自身的特性:当主机在同一子网时,启用 direct routes
(如 host-gw
)。vxlan
只用于将数据包封装到不同子网的主机上,同子网的主机之间使用 host-gw
,默认值为 false
。
要添加我们就不能修改其对应的网络配置文件,因为重新安装或者重启都会把这个配置冲掉 (变成默认配置),所以需要折中下。我们自建一个网络配置文件,然后在启动的时候执行从哪个配置文件里面加载对应配置。
# k3s的master和agent
$ sudo cat /etc/flannel/net-conf.json
{"Network": "10.42.0.0/16","Backend": {"Type": "vxlan","Directrouting": true}
}# k3s master
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \INSTALL_K3s_EXEC='--flannel-backend=host-gw' \sh -
自定义 CNI
使用 --flannel-backend=none
(禁用) 运行 K3s
,然后在安装你选择的 CNI
。按照 Calico CNI 插件指南[5] 来修改 Calico
的 YAML
配置文件,在 container_settings
部分中允许 IP
转发。
# 加到Calico的YAML文件中
# 允许IP转发(这个是K3s的一个限制;需要开启)
"container_settings": {"allow_ip_forwarding": true
}- name: CALICO_IPV4POOL_CIDRvalue: "192.168.200.0/24"
# 通过在主机上运行以下命令,确保设置已被应用(true)
$ sudo cat /etc/cni/net.d/10-canal.conflist# calico
# 其中--cluster-cidr可不设置
$ curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | \INSTALL_K3s_MIRROR=cn \INSTALL_K3s_EXEC='--flannel-backend=none \--cluster-cidr=192.168.200.0/24"' \sh -# 启动网络服务
$ kubectl apply -f ./calico.yaml
外部数据库
❝
理解 Server 节点的安装,以及注册 Agent 节点的步骤!
使用外部数据库实现高可用安装
两个或多个
server
节点零个或多个
agent
节点外部数据存储 (
Etcd/MySQL/PostgRES
)固定的注册地址 (
LB
)K3s 工具进阶完全指南相关推荐
- 轻量级 Kubernetes 集群发行版 K3s 完全进阶指南
公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 深入理解官方文档,轻松学会使用 K3S 工具! K3s 是一个轻量级的 Kubernetes 发行版,它针对边缘计 ...
- 积木Sketch插件进阶开发指南
前段时间,美团外卖技术团队积木Sketch插件"意外走红".为了帮助更多的设计师小哥哥.小姐姐落地设计规范,提升产研效率,积木Sketch团队开始着手打造一个平台化的产品.本文介绍 ...
- 痞子衡嵌入式:恩智浦MCU安全加密启动一站式工具nxpSecBoot用户指南
痞子衡嵌入式:恩智浦MCU安全加密启动一站式工具nxpSecBoot用户指南 nxpSecBoot 1 软件概览 1.1 介绍 nxpSecBoot是一个专为NXP MCU安全加密启动而设计的工具,其 ...
- Http压测工具wrk使用指南【转】
用过了很多压测工具,却一直没找到中意的那款.最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好. 安装 wrk支持大多数类UNIX系统,不支持windows.需要操作系统支持 ...
- 截屏工具Snipaste使用指南
Snipaste 是一个简单但强大的贴图工具,同时也可以执行截屏.标注等功能. 开始截图 快捷键(默认为 F1) 鼠标左键 单击托盘图标 何为一次成功的截图 保存到剪贴板 ( Ctrl + C / E ...
- IDEA工具避坑指南(七):git@github.com: Permission denied|You must supply a key in OpenSSH public key format详解
错误描述 用IDEA通过版本控制器从GitHub拉取目项时,出现下述错误 错误一:IDEA clone项目时,控制台错误: Cloning into 'gitidea'... git@github ...
- 计算机快捷键桌布,桌面改造 篇三:编程娱乐两不误 | 伪程序猿的Windows双屏组建/效率工具/桌面美化指南...
桌面改造 篇三:编程娱乐两不误 | 伪程序猿的Windows双屏组建/效率工具/桌面美化指南 2020-07-10 11:41:39 153点赞 1107收藏 74评论 哈喽大家好,我是码呆茶!作为一 ...
- 可以用来分析文本数据的Python工具的完整指南
探索性数据分析是任何机器学习工作流程中最重要的部分之一,自然语言处理也是如此. 但是,应该选择哪些工具来有效地浏览和可视化文本数据? 在本文(Shahul Es最初在 Neptune博客 上发布 )中 ...
- IDEA工具避坑指南(五):如何统一编码为UTF-8 | Tomcat控制台乱码
前言 在使用IDEA工具之前,必须做的优化之一,统一编码格式:本文以UTF-8为例 注:UTF-8对中文比较友好,这个编码格式一个字符占用3个字节. 步骤 1.常规全局设置 1.点击File--Set ...
最新文章
- html css 背景图片
- “libc++_shared.so“ not found 解决
- vector的resize()和reserve()函数
- PHP中如何给日期加上一个月 加一周 加一天
- html5 接东西游戏,html5手机触屏接红包小游戏代码
- maven缺少jar包问题
- IE9真的支持CSS3和HTML5?
- Python3 爬虫学习笔记 C14【验证码对抗系列 — 点触验证码】
- 2018-2019-1 《信息安全系统设计基础》教学进程
- Android处理键盘事件的小例子
- python psutil 获取命令历史_python中系统信息获取psutil使用
- Nginx PHP Apache 隐藏版本号/禁止显示版本号
- javascript中map是否有序?
- 360显示服务器拒绝访问,Tecplot 360 2011安装方法 对于“目标文件夹拒绝访问”的解决...
- 微信定时向好友发信息(循环发信息)
- 论机器学习中数据的重要性
- Unity-黑暗之魂复刻-角色摄相机
- php资产管理,php固定资产管理系统
- CodeBlocks(20.03)下安装easyx
- IE8 以下版本的浏览器的盒子模型有什么不一样的地方?
热门文章
- 轻量级 Kubernetes 集群发行版 K3s 完全进阶指南