首页
📈统计
📬留言
💘关于
更多
💞友链
📺直播
🎠壁纸
Search
1
docker部署chromium
5 阅读
2
prometheus+alertmanager告警
2 阅读
3
minio部署以及使用挂载
2 阅读
4
typecho背景透明设置
2 阅读
5
httpd文件服务器
1 阅读
🎑Linux
centos
ubuntu
deepin
debian
🎉Typecho
🎻小程序
🍕生活
🍞其他
☸k8s
🤖监控配置
登录
Search
标签搜索
shell
脚本
文档
doc
存储
typecho
chromium
lazy-balancer
Typecho
累计撰写
57
篇文章
累计收到
37
条评论
首页
栏目
🎑Linux
centos
ubuntu
deepin
debian
🎉Typecho
🎻小程序
🍕生活
🍞其他
☸k8s
🤖监控配置
页面
📈统计
📬留言
💘关于
💞友链
📺直播
🎠壁纸
搜索到
57
篇与
的结果
2026-03-02
kk部署k8s集群
查看支持的k8s版本./kk version --show-supported-k8s安装 KubeKey下载完成后当前目录下将生成 KubeKey 二进制文件 kkcurl -sSL https://get-kk.kubesphere.io | sh - # 国内 wget https://packages.emal.cc/package/KubeKey/kubekey-v3.1.10-linux-amd64.tar.gz wget https://packages.emal.cc/package/KubeKey/kk创建 manifest 文件注意若只需要使用 kk 打包 KubeSphere 镜像至离线环境中,可直接使用邮件中收到的 manifest 文件构建离线包。无需另外创建或编辑 manifest 文件。若需要使用 kk 部署 Kubernetes 以及镜像仓库,可参考以下步骤如果您访问 DockerHub 受限,执行以下命令将 Kubernetes 镜像地址替换为阿里云仓库export KKZONE=cn创建 manifest 文件。# 如需使用 kk 离线部署镜像仓库,添加 --with-registry 打包镜像仓库的安装文件 ./kk create manifest --with-kubernetes v1.26.12 --with-registry --filename manifest-sample-v1.26.12.yaml # 该命令将创建一个 manifest-sample.yaml 文件编辑 manifest 文件若需要使用 kk 部署 Kubernetes 以及镜像仓库,将从邮件获取到的 KubeSphere 镜像列表添加到新创建的 manifest 文件中即可打开 manifest 文件vi manifest-sample.yaml复制 kk-manifest.yaml 或 kk-manifest-mirror.yaml(若访问 DockerHub 受限) 中的镜像列表,添加到新创建的 manifest-sample.yaml 文件中注意以下 manifest 文件中的镜像列表仅为示例,建议通过 https://get-images.kubesphere.io/ 获取最新的镜像列表。apiVersion: kubekey.kubesphere.io/v1alpha2 kind: Manifest metadata: name: sample spec: arches: - amd64 operatingSystems: [] kubernetesDistributions: - type: kubernetes version: v1.26.12 components: helm: version: v3.14.3 cni: version: v1.2.0 etcd: version: v3.5.13 containerRuntimes: - type: docker version: 24.0.9 - type: containerd version: 1.7.13 calicoctl: version: v3.27.4 crictl: version: v1.29.0 docker-registry: version: "2" harbor: version: v2.10.1 docker-compose: version: v2.26.1 images: - registry.cn-beijing.aliyuncs.com/kubesphereio/pause:3.9 - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-apiserver:v1.26.12 - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controller-manager:v1.26.12 - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-scheduler:v1.26.12 - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-proxy:v1.26.12 - registry.cn-beijing.aliyuncs.com/kubesphereio/coredns:1.9.3 - registry.cn-beijing.aliyuncs.com/kubesphereio/k8s-dns-node-cache:1.22.20 - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-controllers:v3.27.4 - registry.cn-beijing.aliyuncs.com/kubesphereio/cni:v3.27.4 - registry.cn-beijing.aliyuncs.com/kubesphereio/node:v3.27.4 - registry.cn-beijing.aliyuncs.com/kubesphereio/pod2daemon-flexvol:v3.27.4 - registry.cn-beijing.aliyuncs.com/kubesphereio/typha:v3.27.4 - registry.cn-beijing.aliyuncs.com/kubesphereio/flannel:v0.21.3 - registry.cn-beijing.aliyuncs.com/kubesphereio/flannel-cni-plugin:v1.1.2 - registry.cn-beijing.aliyuncs.com/kubesphereio/cilium:v1.15.3 - registry.cn-beijing.aliyuncs.com/kubesphereio/operator-generic:v1.15.3 - registry.cn-beijing.aliyuncs.com/kubesphereio/hybridnet:v0.8.6 - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-ovn:v1.10.10 - registry.cn-beijing.aliyuncs.com/kubesphereio/multus-cni:v3.8 - registry.cn-beijing.aliyuncs.com/kubesphereio/provisioner-localpv:3.3.0 - registry.cn-beijing.aliyuncs.com/kubesphereio/linux-utils:3.3.0 - registry.cn-beijing.aliyuncs.com/kubesphereio/haproxy:2.9.6-alpine - registry.cn-beijing.aliyuncs.com/kubesphereio/kube-vip:v0.7.2 - registry.cn-beijing.aliyuncs.com/kubesphereio/kata-deploy:stable - registry.cn-beijing.aliyuncs.com/kubesphereio/node-feature-discovery:v0.10.0 registry: auths: {}制作命令执行以下命令构建包含 ks-core 及各扩展组件镜像的离线安装包./kk artifact export -m manifest-sample.yaml -o kubesphere.tar.gz执行成功后,将显示如下信息:Pipeline[ArtifactExportPipeline] execute successfully下载 KubeSphere Core Helm Chart安装 helmcurl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash下载 KubeSphere Core Helm Chart此处为示例版本,请访问 https://get-images.kubesphere.io 或 KubeSphere GitHub 仓库查看最新 chart 版本。VERSION=1.1.3 # Chart 版本 helm fetch https://charts.kubesphere.io/main/ks-core-${VERSION}.tgz离线部署1、准备工作将联网主机 node1 上的三个文件同步至离线环境的 master 节点kkkubesphere.tar.gzks-core-1.1.3.tgz2、创建配置文件创建离线集群配置文件./kk create config --with-kubernetes v1.26.12修改配置文件vi config-sample.yaml说明按照离线环境的实际配置修改节点信息。指定 registry 仓库的部署节点,用于 KubeKey 部署自建 Harbor 仓库。registry 里可以指定 type 类型为 harbor,否则默认安装 docker registry。对于 Kubernetes v1.24+,建议将 containerManager 设置为 containerd。apiVersion: kubekey.kubesphere.io/v1alpha2 kind: Cluster metadata: name: sample spec: hosts: - {name: master, address: 192.168.0.3, internalAddress: 192.168.0.3, user: root, password: "<REPLACE_WITH_YOUR_ACTUAL_PASSWORD>"} - {name: node2, address: 192.168.0.4, internalAddress: 192.168.0.4, user: root, password: "<REPLACE_WITH_YOUR_ACTUAL_PASSWORD>"} roleGroups: etcd: - master control-plane: - master worker: - node2 # 如需使用 kk 自动部署镜像仓库,请设置该主机组 (建议仓库与集群分离部署,减少相互影响) # 如果需要部署 harbor 并且 containerManager 为 containerd 时,由于部署 harbor 依赖 docker,建议单独节点部署 harbor registry: - node2 controlPlaneEndpoint: ## Internal loadbalancer for apiservers # internalLoadbalancer: haproxy domain: lb.kubesphere.local address: "" port: 6443 kubernetes: version: v1.26.12 containerManager: containerd network: plugin: calico kubePodsCIDR: 10.233.64.0/18 kubeServiceCIDR: 10.233.0.0/18 ## multus support. https://github.com/k8snetworkplumbingwg/multus-cni multusCNI: enabled: false registry: # 如需使用 kk 部署 harbor, 可将该参数设置为 harbor,不设置该参数且需使用 kk 创建容器镜像仓库,将默认使用 docker registry。 # type: harbor # 如使用 kk 部署的 harbor 或其他需要登录的仓库,需设置对应仓库的 auths,如使用 kk 创建默认的 docker registry 仓库,则无需配置 auths 参数。 auths: "dockerhub.kubekey.local": # 部署 harbor 时需指定 harbor 帐号密码 # username: admin # password: Harbor12345 skipTLSVerify: true # 设置集群部署时使用的私有仓库地址。如果您已有可用的镜像仓库,请替换为您的实际镜像仓库地址。 # 如果离线包中为原始 dockerhub 镜像(即 manifest 文件中的镜像地址为 docker.io/***),可以将该参数设置为 dockerhub.kubekey.local/kubesphereio, 表示将镜像全部推送至名为 kubesphereio 的 harbor 项目中。 privateRegistry: "dockerhub.kubekey.local" # 如果构建离线包时 Kubernetes 镜像使用的是阿里云仓库镜像,需配置该参数。如果使用 dockerhub 镜像,则无需配置此参数。 namespaceOverride: "kubesphereio" registryMirrors: [] insecureRegistries: [] addons: []安装harbor./kk init registry -f config-sample.yaml -a kubesphere.tar.gz创建harbor项目tee create_project_harbor.sh <<-'EOF' #!/usr/bin/env bash # Copyright 2018 The KubeSphere Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. url="http://dockerhub.kubekey.local" # 或修改为实际镜像仓库地址 user="admin" passwd="Harbor12345" harbor_projects=( ks kubesphere kubesphereio coredns calico flannel cilium hybridnetdev kubeovn openebs library plndr jenkins argoproj dexidp openpolicyagent curlimages grafana kubeedge nginxinc prom kiwigrid minio opensearchproject istio jaegertracing timberio prometheus-operator jimmidyson elastic thanosio brancz prometheus ) for project in "${harbor_projects[@]}"; do echo "creating $project" curl -u "${user}:${passwd}" -X POST -H "Content-Type: application/json" "${url}/api/v2.0/projects" -d "{ \"project_name\": \"${project}\", \"public\": true}" -k # 注意在 curl 命令末尾加上 -k done EOFchmod +x create_project_harbor.sh ./create_project_harbor.sh安装kubernetes集群安装必要软件包yum -y install socat ipvsadm conntrack chrony./kk create cluster -f config-sample.yaml -a kubesphere.tar.gz --with-local-storage指定 --with-local-storage 参数会默认部署 openebs localpv,如需对接其他存储,可在 Kubernetes 集群部署完成后自行安装。如果显示如下信息,则表明 Kubernetes 集群创建成功。Pipeline[CreateclusterPipeline] execute successfully Installation is complete.删除集群./kk delete cluster -f config-sample.yaml官方文档地址:kubekey
2026年03月02日
0 阅读
0 评论
0 点赞
2026-02-28
typecho一键部署
部署操作# 执行脚本 wget https://packages.emal.cc/package/softinstall/produce/typecho/install_typecho.sh [root@VM-0-8-tencentos install]# bash install_typecho.sh 1.部署typecho 2.更新typecho访问地址 请选择: 访问typecho
2026年02月28日
1 阅读
0 评论
0 点赞
2026-02-25
筛选
测试总数BUG总数已修复BUG未修复BUG数转需求已排期自动化测试研发回归测试告警通知自动化设置内容测试 <font color='red'>问题等级:</font> 测试环境: 账户权限: 测试模块: <font color='red'>测试结果:</font> 测试问题: 附件详情: 研发 问题等级: 测试环境: 账户权限: 测试模块: 测试结果: <font color='red'>修复状态: </font> 测试问题: 回归测试 问题等级: 测试环境: 账户权限: <font color='red'>回归测试:</font> 测试模块: 测试问题:
2026年02月25日
0 阅读
0 评论
0 点赞
2026-02-13
typecho 后台插件
{anote icon="fa-download" href="https://package.prd.emal.cc/package/softinstall/produce/typecho/Fresh.tar.gz" type="secondary" content="点击下载插件"/}操作下载完插件后解压tar.gz文件,将里面的admin文件替换typecho根目录,将里面的doc/Menu.php 替换到网站根目录var/Widget 文件夹内,清理浏览器缓存,大功告成!完成后如下后台页面
2026年02月13日
0 阅读
0 评论
0 点赞
2026-02-11
rsync-inotify
{anote icon="fa-download" href="https://packages.emal.cc/package/softinstall/doc/sh/rsync-inotify.sh" type="info" content="点击下载脚本"/}数据同步#!/usr/bin/env bash # 颜色定义 readonly COLOR_RED='\033[1;31m' readonly COLOR_GREEN='\033[1;32m' readonly COLOR_YELLOW='\033[1;33m' readonly COLOR_BLUE='\033[1;34m' readonly COLOR_MAGENTA='\033[1;35m' readonly COLOR_CYAN='\033[1;36m' readonly COLOR_RESET='\033[0m' # 日志函数 log_error() { echo -e "${COLOR_RED}[ERROR] $1${COLOR_RESET}" >&2; } log_warn() { echo -e "${COLOR_YELLOW}[WARN] $1${COLOR_RESET}"; } log_info() { echo -e "${COLOR_BLUE}[INFO] $1${COLOR_RESET}"; } log_success() { echo -e "${COLOR_GREEN}[SUCCESS] $1${COLOR_RESET}"; } check_directory() { local dir="$1" local create_if_not_exist="$2" # "true" 或 "false" # 如果目录为空,返回失败 if [[ -z "$dir" ]]; then return 1 fi # 检查目录是否存在 if [[ ! -d "$dir" ]]; then if [[ "$create_if_not_exist" == "true" ]]; then # 尝试创建目录 if mkdir -p "$dir" 2>/dev/null; then log_info "创建目录: $dir" return 0 else log_error "无法创建目录: $dir" return 1 fi else log_error "目录不存在: $dir" return 1 fi fi # 检查目录是否可写 if [[ ! -w "$dir" ]]; then log_error "目录不可写: $dir" return 1 fi return 0 } zdh(){ while true;do read -r -p "目的地主机IP: " IPADDRS if [[ "$IPADDRS" =~ ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]]; then break else log_error "请输入正确IP地址!" fi done while true;do read -r -p "目的地主机ssh端口: " SSHPORTS if [[ "$SSHPORTS" =~ ^[0-9]+$ ]] && (( SSHPORTS >= 1 && SSHPORTS <= 65535 )); then break else log_error "请输入正确端口!" fi done while true;do read -r -p "${IPADDRS} 机器是否已配置免密登录? y/n: " SSHKEYGEN if [ "${SSHKEYGEN}" == "y" ];then if ssh -o BatchMode=yes -o ConnectTimeout="3" -o StrictHostKeyChecking=no -p "${SSHPORTS}" "${IPADDRS}" "echo 'SSH免密登录测试成功'" 2>/dev/null; then log_success "SSH免密登录已配置" break else log_warn "SSH免密登录未配置" log_info "ssh免密配置脚本下载: wget https://packages.emal.cc/package/softinstall/doc/sh/update_keygen.sh" log_info '请在备份主机生成公钥和私钥,命令: ssh-keygen -t rsa -b 4096 -o -a 100 -C "comment"' fi elif [ "${SSHKEYGEN}" == "n" ];then log_warn "请先配置免密登录!" log_info "ssh免密配置脚本下载: wget https://packages.emal.cc/package/softinstall/doc/sh/update_keygen.sh" log_info '请在备份主机生成公钥和私钥,命令: ssh-keygen -t rsa -b 4096 -o -a 100 -C "comment"' exit 0 else log_error "请输入正确的值 y/n" fi done while true; do read -r -p "备份主机目录: " SRCDATA # 检查目录是否存在 if check_directory "$SRCDATA" "false"; then # 检查目录是否为空 if [[ -z "$(ls -A "$SRCDATA" 2>/dev/null)" ]]; then log_warn "目录为空: $SRCDATA" read -r -p "是否继续使用空目录? [y/n]: " confirm if [[ ! "${confirm,,}" =~ ^(y|yes)$ ]]; then continue fi fi break else log_error "请重新输入有效的目录路径" fi done while true; do read -r -p "目的地主机目录: " DESTDATA # 尝试在远程主机上创建目录 log_info "检查远程主机目录..." if [[ "${SSHKEYGEN,,}" =~ ^(y|yes)$ ]]; then if ssh -p "$SSHPORTS" "$IPADDRS" \ "mkdir -p '$DESTDATA' && test -w '$DESTDATA'" 2>/dev/null; then log_success "远程目录可用: $DESTDATA" break else log_error "无法访问或创建远程目录: $DESTDATA" fi else # 如果不支持免密登录,只做基本验证 if [[ -n "$DESTDATA" ]]; then log_warn "由于未配置SSH免密登录,无法验证远程目录,请确保目录存在且可写" break else log_error "目录不能为空" fi fi done while true; do read -r -p "备份主机日志存放目录: " LOGSDIR if [ ! -f ${LOGSDIR} ];then touch ${LOGSDIR} > /dev/null 2>&1 if [ $? -eq 0 ];then log_success "${LOGSDIR} 日志文件已创建!" break else log_error "请正确得输入文件名称,不要输入不存在得路径!" fi else log_info "${LOGSDIR} 日志文件已创建!" read -r -p "是否使用已存在文件做为日志文件? y/n: " YESS if [ "${YESS}" == "y" ];then log_info "日志文件路径: ${LOGSDIR}" break elif [ "${YESS}" == "n" ];then continue else continue fi fi done } sd(){ # demo=1时,跳过下载软件包 demo=1 if [ "${demo}" == "1" ];then echo "相关软件包下载完成" else yum -y install rsync inotify-tools > /dev/null 2>&1 if [ $? -eq 0 ];then echo "相关软件包下载完成" else echo "相关软件包下载失败" exit 1 fi fi count=0 while [ $count -lt 1 ]; do HOSTIP=$(hostname -I |awk '{print $1}') sleep 2 echo "#####################################################" >> ${LOGSDIR} echo $(date '+%c') >> ${LOGSDIR} inotifywait -r -e modify,create,delete,move ${SRCDATA} >> ${LOGSDIR} & rsync -avz -e "ssh -p ${SSHPORTS}" ${SRCDATA} --exclude='/data/docker' --exclude='docker/' --exclude='**/containers/**' --exclude='*.log' --exclude='*-json.log' root@${IPADDRS}:${DESTDATA}/ >> ${LOGSDIR} & echo " " >> ${LOGSDIR} # 查看日志大小 dus=$(ls -lh ${LOGSDIR} |awk '{print $5}'|grep G|awk -F'M' '{print $1}') b=2 # 判断日志如果大于2个G,那么就删除日志 dateus=$(awk -v num1=${dus} -v num2=${b} 'BEGIN{print(num1>num2)?"0":"1"}') echo ${dateus} if [ ${dateus} -eq 0 ];then echo "" > ${LOGSDIR} else exit 0 fi count=$((count + 1)) done > /dev/null 2>&1 } main(){ zdh sd } main
2026年02月11日
0 阅读
0 评论
0 点赞
2026-02-04
crictl导入导出镜像
::(捂嘴笑) ::(滑稽)查看 containerd 镜像# 查看 k8s.io 命名空间的镜像 ctr -n=k8s.io images ls # 查看所有命名空间的镜像 ctr namespaces ls ctr -n=k8s.io images ls | grep tekton导出镜像# 导出单个镜像 ctr -n=k8s.io images export tekton.tar harbor.rdse.cloud.cnpc/cnpcrd/tekton:entrypoint-v0.43.2 # 导出并压缩 ctr -n=k8s.io images export - | gzip > tekton.tar.gz harbor.rdse.cloud.cnpc/cnpcrd/tekton:entrypoint-v0.43.2导入镜像# 导入镜像 ctr -n=k8s.io images import tekton.tar # 导入压缩的镜像 gunzip -c tekton.tar.gz | ctr -n=k8s.io images import -
2026年02月04日
0 阅读
0 评论
0 点赞
1
...
3
4
5
...
10