当前位置: 首页 > news >正文

购物手机网站建设/推广引流方法有哪些?

购物手机网站建设,推广引流方法有哪些?,北京网站建设报价,网站制作样板前言 这篇文写的有点子啰嗦,甚至为了控制篇幅我还分出了其他好几篇文章,只在本文中保留了我认为必须存在。而之所以篇幅这么长,一方面是我在相关领域完全新手,啥啥都不会;而另一方面是我所参考的资料都过于精简&#…

前言

这篇文写的有点子啰嗦,甚至为了控制篇幅我还分出了其他好几篇文章,只在本文中保留了我认为必须存在。而之所以篇幅这么长,一方面是我在相关领域完全新手,啥啥都不会;而另一方面是我所参考的资料都过于精简,以至于遇到点问题,我就这是啥啊这是的大惊小怪;还有就是我偶发性的莫名其妙的头铁,以至于本应在前置解决的问题,但因为参考资料语焉不详,我选择性略过,已至于后期在bug里沉沦(写文顺序经过调整,如果看到不这样就会报啥错类似的话,那就是我在这里已经踩过坑了)。不过好在经过时间的洗礼,我也总算是取得了阶段性的胜利!

前置准备工作

SSH命令

SSH相关-CSDN博客

vi文本编辑器

vi文本编辑器基础知识-CSDN博客

linux 命令

Linux/Unix命令-CSDN博客

tmux 命令

tmux 是一个开源的终端复用器,用于在一个窗口中访问多个独立的终端会话。它允许用户在多个虚拟终端、窗口和窗格之间分割屏幕,并且可以轻松地在它们之间切换。tmux 还支持会话的持久化,这意味着即使关闭终端或重启系统,你的工作会话也可以被保存和恢复。

tmux 命令-CSDN博客

安装docker

更新现有的包列表:

apt update
apt-get update

这一步有可能会如图

 报错:

Err:1 https://mirrors.tuna.tsinghua.edu.cn/debian bullseye InReleaseCannot initiate the connection to mirrors.tuna.tsinghua.edu.cn:443 (2402:f000:1:400::2). - connect (101: Network is unreachable) Could not connect to mirrors.tuna.tsinghua.edu.cn:443 (101.6.15.130), connection timed out
Err:2 https://mirrors.tuna.tsinghua.edu.cn/debian bullseye-updates InReleaseCannot initiate the connection to mirrors.tuna.tsinghua.edu.cn:443 (2402:f000:1:400::2). - connect (101: Network is unreachable)
Err:3 https://mirrors.tuna.tsinghua.edu.cn/debian bullseye-backports InReleaseCannot initiate the connection to mirrors.tuna.tsinghua.edu.cn:443 (2402:f000:1:400::2). - connect (101: Network is unreachable)
Err:4 https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security InReleaseCannot initiate the connection to mirrors.tuna.tsinghua.edu.cn:443 (2402:f000:1:400::2). - connect (101: Network is unreachable)

遇到这个错误先ping一下查看网络情况,是否可用

好样的,ping不通,先解决网络问题再继续往下吧

网络问题修复好,先重启下网络服务 

systemctl restart networking.service

查看下网络路由表 ,就可以继续往下安装了

route -n

安装必要软件包

apt install apt-transport-https ca-certificates gnupg2 lsb-release
apt-get install apt-transport-https ca-certificates gnupg2 lsb-release

这一步我的错误在这里:

 gnupg : Depends: gpgv (< 2.2.27-2+deb11u2.1~) but 2.2.40-1.1 is to be installed
E: Unable to correct problems, you have held broken packages.

所以就直接卸载掉了不兼容的 gpgv,安装gnupg2。卸载语句:

apt-get remove gpgv

 添加Docker的GPG密钥

curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpgchmod a+r /etc/apt/keyrings/docker.gpgecho \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian \"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \tee /etc/apt/sources.list.d/docker.list > /dev/null

最后安装

apt-get updateapt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

启动Docker服务

systemctl start docker

设置Docker服务开机自启动

systemctl enable docker

验证Docker安装

docker --version# Docker version 27.0.3, build 7d4bcd8

修改docker管理系统cgroup的方式为systemd

docker、Containerd的cgroup和k8s一致才能正常安装启动k8s

vi /etc/docker/daemon.json# 编辑文件,增加内容--确保文件格式正确,必要时可以使用JSON工具格式化
{"exec-opts": ["native.cgroupdriver=systemd"],"registry-mirrors": ["https://asia-northeast1-docker.pkg.dev"]
}# 重启docker
systemctl restart docker# 或
systemctl daemon-reload && systemctl restart docker

参考:

docker-ce | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

k8s+Docker部署方法

Containerd配置

安装docker时,已安装containerd.io

生成默认配置

containerd config default > /etc/containerd/config.toml

修改CgroupDriver为systemd 

vi /etc/containerd/config.toml# [...]
# [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
#   [...]
# SystemdCgroup = true

换国内镜像源

# 编辑containerd配置文件
vi /etc/containerd/config.toml# 编辑内容--换国内源
[plugins."io.containerd.grpc.v1.cri"]...sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.8"# 没有换源可能导致systemctl status kubelet.service输出 
# couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp [::1]:8080: connect: connection refused这类错误
#用journalctl -u kubelet 进一步检查输出:【RunPodSandbox from runtime service failed" err="rpc error: code = Unknown desc = failed to get sandbox image】
# 沙盒镜像获取失败,此时需要换成国内源

重启containerd

# 重启 
systemctl restart containerd# 设置开机启动
systemctl enable containerd --now # 查看
systemctl status containerd

安装k8s相关

安装kubeadm

在 Debian 12 和 Ubuntu 22.04 之前的版本中,/etc/apt/keyrings默认情况下不存在;您可以创建该目录(我的系统不需要)

mkdir -p -m 755 /etc/apt/keyrings# mkdir: 这是创建新目录的命令。# -p: 这个选项告诉 mkdir 如果目录的上级目录不存在的话,应该一并创建它们。这样,即使目标目录的路径中包含了不存在的目录,命令也不会报错。
-m: 这个选项后面跟随的参数用来设置新创建目录的权限。
755: 这是一个八进制数,用来设置文件或目录的权限。在这种情况下,它表示目录所有者具有读、写和执行权限(7),组用户和其他用户具有读和执行权限(5)。#这个命令通常在安装软件包或添加新的软件源之前使用,以确保有正确的权限设置,APT 可以访问这些密钥环。

 下载用于 Kubernetes 软件包仓库的公共签名密钥

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

添加 Kubernetes apt 仓库 

echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | tee /etc/apt/sources.list.d/kubernetes.list

更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl,并锁定其版本: 

apt-get updateapt-get install -y kubelet kubeadm kubectlapt-mark hold kubelet kubeadm kubectl# apt-mark hold 命令用于将指定的软件包标记为“hold”,这意味着这些软件包将不会被自动更新。这对于你想要固定在当前版本的软件包非常有用,比如在 Kubernetes 集群中,你可能想要保持 kubelet、kubeadm 和 kubectl 的版本一致,以避免自动更新可能导致的兼容性问题。

查看kubeadm config init和join的默认配置

kubeadm config print init-defaultskubeadm config print join-defaults

 生成 kubeadm-config,并修改配置参数

# 生成默认配置
kubeadm config print init-defaults > kubeadm-config.yaml# 查看编辑kubeadm-config.yaml
vi kubeadm-config.yaml# 增加或修改cgroup配置
---
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: systemd
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs# 重启
systemctl daemon-reload && systemctl restart kubelet# 验证配置
kubelet --version

kubeadm-config配置

查看系统支持的cgroup版本 

grep cgroup /proc/filesystems# nodev	cgroup
# cgroup2

关闭交换空间 

# 检查交换空间状态
swapon --show# 如果启用了交换空间,你可以使用以下命令临时关闭
swapoff -a# /etc/fstab 中的交换空间条目
vi /etc/fstab# 注释掉类似下面这句话
#UUID=xxxx-xxxx-xxxx-xxxx none swap sw 0 0# 禁用 systemd 的交换空间管理器
systemctl mask swap.target# 检查交换空间状态
swapon --show# kubeadm init前关闭交换空间,不需要往下执行-------------------------------------------------# 如果kubeadm初始化失败,systemctl status kubelet.service输出【command failed" err="failed to run Kubelet: running with swap on is not supported, please"】进行下面步骤
# 重启
systemctl daemon-reload
systemctl restart kubelet.service# 检查kubelet.service
systemctl status kubelet.service

开放必要端口 

iptables -A INPUT -p tcp -m multiport --dports 6443,2379,2380,10250 -j ACCEPT# 查看
iptables -L

初始化集群

# 清空kubeadm集群(如果有init失败,需要先清空)
kubeadm reset
rm -rf /var/lib/kubernetes# 拉取镜像(在这里失败,解决方法是将kubeadm-config.yaml文件中的镜像地址改为本地阿里云地址)
kubeadm config images pull --config kubeadm-config.yaml# 初始化kubeadm集群
kubeadm init --config kubeadm-config.yaml

查看kublet文件(看不看都行)

# 编辑
vi /var/lib/kubelet/config.yaml# 查看
cat /usr/lib/systemd/system/kubelet.service[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=https://kubernetes.io/docs/
Wants=network-online.target
After=network-online.target[Service]
ExecStart=/usr/bin/kubelet --config=/var/lib/kubelet/config.yaml
Restart=always
StartLimitInterval=0
RestartSec=10[Install]
WantedBy=multi-user.target

初始化成功:

Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:kubeadm join 192.168.xx.xxx:6443 --token p8u7wj.188l6nd0lw0bbp2r \--discovery-token-ca-cert-hash sha256:bf79f2cfc51dae1662dc91a89d034d71759f536addfadedfa8a3102c70c99d65 \--control-plane Then you can join any number of worker nodes by running the following on each as root:kubeadm join 192.168.xx.xxx:6443 --token p8u7wj.188l6nd0lw0bbp2r \--discovery-token-ca-cert-hash sha256:bf79f2cfc51dae1662dc91a89d034d71759f536addfadedfa8a3102c70c99d65 

查看用户是否为root用户

id -u
# 0whoami
# root

root用户直接输入命令:

# 手动设置(例如,使用 export 命令),它们不会自动传播到新的会话。
export KUBECONFIG=/etc/kubernetes/admin.conf

k8s 集群初始化正常,同电脑再开远程窗口通过与初始化正常的链接方式(ssh ip root)链接却访问不到集群的原因:

export KUBECONFIG=/etc/kubernetes/admin.conf

当新窗口echo $KUBECONFIG 输出为空,kubectl config view输出没有相应更新内容而初始化成功窗口输出正常时的原因可能是【如果第一个 SSH 会话可以成功访问 Kubernetes 集群,而在新开启的 SSH 会话中环境变量丢失,即使这两个会话都是以 root 用户身份访问相同的 IP 地址,可能的原因包括】:

  1. 环境变量作用域: 环境变量可能只在原始会话中设置,并没有被导出到所有子会话。在 Bash 中,如果环境变量是在当前会话中设置的(而不是在 .bashrc.profile 中),它将不会影响新开启的会话。

  2. SSH 会话配置: SSH 连接可能没有配置为自动加载用户的环境变量。通常,SSH 会话会加载用户的 shell 配置文件,如 .bashrc.bash_profile,如果这些文件中没有正确设置环境变量,它们就不会被加载。

  3. 手动设置的环境变量: 如果环境变量是在原始 SSH 会话中手动设置的(例如,使用 export 命令),它们不会自动传播到新的会话。

  4. 不同的 shell: 如果新旧 SSH 会话使用的 shell 类型不同(例如,从 Bash 切换到 zsh 或其他),环境变量的配置方式可能不同。

  5. 配置文件未被加载: 新 SSH 会话可能没有加载包含环境变量设置的配置文件。

  6. 权限或策略限制: 某些系统策略或权限设置可能限制了环境变量的传播。

  7. SSH Daemon 配置: SSH 服务器的配置可能影响环境变量的传递。

  8. 使用 sudosu: 如果你是通过 sudosu 切换到 root 用户,环境变量可能不会被正确继承。

配置 k8s 网络插件

按照初始化完成后的提示安装网络插件,这里选用的是calico

# 使用 wget 命令从提供的 URL 下载 calico.yaml 文件。wget 是一个用于从网络上下载文件的命令行工具。
wget https://docs.projectcalico.org/manifests/calico.yaml # 使用 sed 命令编辑下载的 calico.yaml 文件。
#sed 是一个流编辑器,-i 选项表示直接在原文件上进行编辑。这里的编辑操作是将文件中所有的 192.168.0.0/16 替换为 10.244.0.0/16。
sed -i "s#192\.168\.0\.0/16#10\.244\.0\.0/16#" calico.yaml# 使用 kubectl 命令将编辑后的 calico.yaml 文件应用到 Kubernetes 集群中。
# kubectl 是 Kubernetes 的命令行工具,apply 命令用于应用一个配置文件,-f 选项表示指定要应用的配置文件。
kubectl apply -f calico.yaml# 这段代码使得在下载 calico.yaml 文件后,用户可以方便地对其进行网络配置的修改,然后将其应用到 Kubernetes 集群中。通过这种方式,可以简化部署 Calico 网络插件的过程,并且提高了部署的效率和准确性。

K8S单机部署节点处理

单机版的k8s安装后, 无法部署服务。因为默认master不能部署pod,有污点, 需要去掉污点或者新增一个node,新增node节点客观条件不是很允许,所以这里直接去除污点。

# 查看节点,有输出说明有节点kubectl get node -o yaml | grep taint -A 5# 输出
# taints:# - effect: NoSchedule# key: node-role.kubernetes.io/control-plane# 删除污点,[control-]看上面输出的key路径 kubectl taint nodes --all node-role.kubernetes.io/control-plane-# 查看节点,无输出,污点删除成功kubectl get node -o yaml | grep taint -A 5

安装部署Rancher

创建应用pv

# 创建pv.yaml
vi pv.yaml# 编辑pv.yaml文件
# 详细内容见下方链接# 应用配置
kubectl apply -f pv.yaml# 验证 PV 是否创建成功
kubectl get pv

pv解释以及配置:pv.yaml

安装helm

# 使用脚本安装
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh# 或者直接执行安装(我是直接执行安装失败了,所以才采用上面的方式安装)
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash# 添加 Rancher 的 Helm Chart 仓库:(非生产环境,所以使用最新版)
helm repo add rancher-latest https://releases.rancher.com/server-charts/latest

安装 ingress

Rancher UI 和 API 通过 Ingress 公开。换言之,安装 Rancher 的 Kubernetes 集群必须包含一个 Ingress Controller。

使用 Helm安装 (安装失败,忽略,看下一个)
# 创建 Ingress Controller 的命名空间:
kubectl create namespace ingress-nginx# 为 Nginx Ingress Controller 添加 Helm Chart 仓库
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update# 使用 Helm 安装 Nginx Ingress Controller-->安装失败
helm upgrade --install ingress-nginx ingress-nginx \--namespace ingress-nginx \--set controller.replicaCount=2 \--set controller.service.type=LoadBalancer \--set controller.service.externalTrafficPolicy=Local \--set controller.service.externalIPs=192.168.xx.xxx# 换一种方式安装
helm repo list #列出当前配置在 Helm 客户端中的所有 Helm 仓库
helm search repo ingress-nginx #用于在已添加到本地 Helm 客户端的 Helm 仓库中搜索特定的关键字
# 输出ingress-nginx/ingress-nginx	4.11.1       	1.11.1     	Ingress controller for Kubernetes using NGINX a...
helm pull ingress-nginx/ingress-nginx #从指定的 Helm 仓库下载一个特定的 chart 包到本地
tar -xf ingress-nginx-4.11.1.tgz #提取指定的tar包的文件名
tree ingress-nginx -L 1 #输出显示ingress-nginx 目录下的所有第一级项(文件和目录)
# 输出
ingress-nginx
|-- Chart.yaml
|-- OWNERS
|-- README.md
|-- README.md.gotmpl
|-- changelog
|-- ci
|-- templates
|-- tests
`-- values.yaml# 修改values.yaml(在values.yaml目录下编辑)
cd ingress-nginx
vi values.yaml# install(在Chart.yaml目录下安装)
helm install ingress-nginx -n ingress-nginx .# 检查 Ingress Controller Pod 是否成功部署:
kubectl get pods -n ingress-nginx# 验证 Ingress Controller 服务
kubectl get svc -n ingress-nginx
使用 YAML 清单安装
# 下载官网的deploy.yaml配置文件
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.11.1/deploy/static/provider/cloud/deploy.yaml# 镜像拉取(使用docker,自己找个国内镜像网站,拉取版本看deploy.yaml配置)
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/ingress-nginx/controller:v1.11.1docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.1# 给镜像重命名(可省略,亲测就算重命名,不改原始镜像源,仍然ErrImagePull,所以此步可不要)
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/ingress-nginx/controller:v1.11.1  registry.k8s.io/ingress-nginx/controller:v1.11.1docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.1  registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.1# 编辑下载的deploy.yaml配置文件
vi deploy.yaml# 安装
kubectl apply -f deploy.yaml# 检查 Ingress Controller Pod 是否成功部署:
kubectl get pods -n ingress-nginx# 验证 Ingress Controller 服务
kubectl get svc -n ingress-nginx

我的deploy.yaml配置

安装默认的ingress class

安装一个默认的ingress class很有必要,我在安装Rancher完成后,自定义域名死活访问不到,一查就是缺少一个默认的ingressClass导致的,原因如下:

# rancher安装完成后,查看。写在此处是为了说明安装一个默认的ingress class的必要
kubectl get ingress  -A
# NAMESPACE       NAME      CLASS    HOSTS             ADDRESS   PORTS     AGE
# cattle-system   rancher   <none>   rancher.xxx.com             80, 443   18h

生成编辑文件

# 生成class文件
vi ingress-class.yaml# 编辑文件
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:labels:app.kubernetes.io/component: controllername: nginx-ingressannotations:ingressclass.kubernetes.io/is-default-class: "true"
spec:controller: k8s.io/ingress-nginx

安装命令

kubectl apply -f ingress-class.yaml

删除ingress配置(如果有需要的话)

# 删除 deploy.yaml 文件中定义的所有资源
kubectl delete -f deploy.yaml# 清理命名空间
kubectl delete namespace <namespace>

安装 cert-manager

# 添加 Jetstack Helm 仓库
helm repo add jetstack https://charts.jetstack.io# 更新本地 Helm Chart 仓库缓存
helm repo update# 安装 cert-manager Helm Chart
helm install cert-manager jetstack/cert-manager \--namespace cert-manager \--create-namespace \--set installCRDs=true# 验证
kubectl get pods --namespace cert-manager# NAME                                       READY   STATUS    RESTARTS   AGE
# cert-manager-5c6866597-zw7kh               1/1     Running   0          2m
# cert-manager-cainjector-577f6d9fd7-tr77l   1/1     Running   0          2m
# cert-manager-webhook-787858fcdb-nlzsq      1/1     Running   0          2m

✘&Helm安装rancher

这里先说明一下,我一开始在本地搭建k8s集群,集群的版本是1.30.0版本,使用helm安装Rancher的时候说不兼容,于是直接采用docker安装Rancher,然后导入1.30.0版本集群(集群导入成功!)但是本着来都来了,用都用了,而且docker安装的Rancher一是自带一个k8s集群倒显得我上面的工作有点多余,二是--privileged令我不大开心。于是,我将k8s集群的版本换成1.28.0后又由helm安装了一遍Rancher。这样Rancher就只需要管理我本地的集群就可以啦!这就是标题旁边又是叉又是勾的原因。

不兼容(Error: INSTALLATION FAILED: chart requires kubeVersion: < 1.29.0-0 which is incompatible with Kubernetes v1.30.0)

# 为 Rancher 创建命名空间
kubectl create namespace cattle-system# 创建
helm install rancher rancher-latest/rancher \--namespace cattle-system \--set hostname=rancher.my.org \--set bootstrapPassword=admin

删除cattle-system命名空间

# 列出所有 Helm releases
helm list --all-namespaces# 卸载 Rancher:
helm uninstall rancher -n cattle-system# 清理 Kubernetes 资源(可选)
kubectl get pvc -n cattle-system
kubectl delete pvc <pvc-name> -n cattle-system# 检查网络相关资源:
kubectl get ingress,services,lb -n cattle-system
kubectl delete ingress <ingress-name> -n cattle-system
kubectl delete service <service-name> -n cattle-system# 正常删除失败
kubectl delete namespace cattle-system# 正常删除失败,命名空间Terminating,执行以下命令
kubectl  get ns  | grep cattle-system # 查看状态
kubectl get namespace cattle-system -o json   | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/"   | kubectl replace --raw /api/v1/namespaces/cattle-system/finalize -f -# 检查遗留的 Secrets:
kubectl get secrets -n cattle-system
kubectl delete secret <secret-name> -n cattle-system# 查看命名空间状态
kubectl  get ns  | grep cattle-system

kubectl create namespace cattle-system报错: 【Error from server (InternalError): Internal error occurred: failed calling webhook "rancher.cattle.io.namespaces.create-non-kubesystem": failed to call webhook: Post "https://rancher-webhook.cattle-system.svc:443/v1/webhook/validation/namespaces?timeout=10s": service "rancher-webhook" not found】

# 查看rancher.cattle.io
kubectl get MutatingWebhookConfiguration
# NAME                             WEBHOOKS   AGE
# ...
# rancher.cattle.io                7          65m# 查看rancher.cattle.io
kubectl get ValidatingWebhookConfiguration
# NAME                               WEBHOOKS   AGE
...
rancher.cattle.io                  18         66m
...# 删除rancher.cattle.io
kubectl delete MutatingWebhookConfiguration rancher.cattle.io# 删除rancher.cattle.io
kubectl delete ValidatingWebhookConfiguration rancher.cattle.io# 再次创建命名空间成功
kubectl create namespace cattle-system

kubectl get pods -n cattle-system输出:rancher-756b4d88d5-6dstl 0/1 CrashLoopBackOff 5 (17s ago) 4m18s

# 获取错误 Pod 的日志
kubectl logs rancher-756b4d88d5-6dstl -n cattle-system
#输出错误信息:[FATAL] clusters.management.cattle.io is forbidden: User "system:serviceaccount:cattle-system:rancher" cannot list resource "clusters" in API group "management.cattle.io" at the cluster scope# 创建文件,绑定角色
rancher-cluster-role-binding.yaml# 文件内容
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: rancher-cluster-binding
subjects:
- kind: ServiceAccountname: ranchernamespace: cattle-system
roleRef:kind: ClusterRolename: cluster-adminapiGroup: rbac.authorization.k8s.io# 应用YAML文件
kubectl apply -f rancher-cluster-role-binding.yaml

helm upgrade 命令更新现有安装(未尝试过,慎重,我一般是卸载重新安装

# 查看命令
helm get values rancher -n cattle-system# helm upgrade 命令更新现有安装
helm upgrade rancher rancher-latest/rancher \--namespace cattle-system \--set hostname=rancher.my.org \--set bootstrapPassword=admin

使用自定义证书安装 

helm install rancher rancher-latest/rancher \
--namespace cattle-system \
--set hostname=rancher.lxq.com \
--set bootstrapPassword=admin \
--set ingress.tls.source=secret \
--set privateCA=true

本次在搭建Rancher的本地环境时修改了hosts 文件,手动映射了域名和 IP 地址。这样做可以使用自定义的域名但坏处是如果外部机器想要访问Rancher也需要对域名和ip进行映射。(域名买不起,免费域名也有限制,ngix反向代理啥的,看了看没看懂,所以选择了最简单,最傻瓜的一种)

vi /etc/hosts 
[...]
192.168.xxx.xxx  rancher.xxx.com

外部访问机器使用了clashX Pro做了代理,因此只修改其配置文件即可,没用代理,修改本机hosts文件也行。(我本次搭建的目的纯纯是为了练手,加上一点点的好奇心,重点不在这里。所以生产环境不要这样哦,不过生产环境肯定也有域名了。这里写这么详细,是因为别人一搭就好了而我在这里徘徊良久......)

# 增加
hosts:"rancher.xxx.com": 192.168.xx.xxx

修改本地hosts文件及外部访问机器本地hosts文件后,rancher UI网站仍然不能访问 

 k8s集群helm安装rancher

Rancher高可用部署

Docker 安装Rancher

# 拉取 Rancher 镜像:
docker pull rancher/rancher:latest# 运行 Rancher 容器--端口被占用
docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:latest# 运行 Rancher 容器
docker run -d --privileged --restart=unless-stopped -p 9088:80 -p 9443:443 rancher/rancher:latest# 登录Rancher
# 打开https://<ip>:9443/dashboard/auth/login,注意一定要是https
# 按照引导登录
# docker ps 查看containerId
# docker logs <containerId> 2>&1 | grep "Bootstrap Password:"生成密码
# 进入引导页,选择随机生成密码:lvRZwoXLldi4Ymsn(自定义密码长度较长,先使用随机密码)

参考 

Kubeadm init 错误-API 服务器未运行

安装Kubernetes(k8s)保姆级教程---无坑版

运维 - 实践篇(五)- 基础 K8S 单机环境搭建

https://code.webterren.com/COAL-Terren/k8s-deploy/src/branch/main/local.md

全网最简单的ingress-nginx安装部署Kubernetes 笔记(10)— Ingress、Ingress Controller、IngressClass 的产生缘由、YAML 描述及使用

如何删除Terminating状态的命名空间?

相关文章:

K8S及Rancher部署

前言 这篇文写的有点子啰嗦&#xff0c;甚至为了控制篇幅我还分出了其他好几篇文章&#xff0c;只在本文中保留了我认为必须存在。而之所以篇幅这么长&#xff0c;一方面是我在相关领域完全新手&#xff0c;啥啥都不会&#xff1b;而另一方面是我所参考的资料都过于精简&#…...

Qt Creator使用git管理代码

1.在GitHub中新建仓库&#xff0c;设置好仓库名后&#xff0c;其它的设置默认即可。 2.打开git bash&#xff0c;输入以下命令&#xff1a; git config --global user.name "xxxxx" #设置你的GitHub用户名 git config --global user.email "xxxxxxxxx.…...

pandas教程:pandas读取csv文件并指定字段数据类型

文章目录 pandas指定数据类型处理数据类型错误parse_dates参数pandas数据类型处理示例pandas指定数据类型 在读取csv文件时,我们可以使用dtype参数来指定每个列的数据类型。这个参数接受一个字典类型的值,其中键是列名,值是数据类型。数据类型可以是Pandas类型或NumPy类型,…...

c#中使用数据验证器

前言 在很多情况下&#xff0c;用户的输入不一定满足我们的设计要求&#xff0c;需要验证输入是否正确&#xff0c;传统的方案是拿到控件数据进行逻辑判定验证后&#xff0c;给用户弹窗提示。这种方法有点职责延后的感觉&#xff0c;数据视图层应该很好的处理用户的输入。使用…...

Java真人版猫爪老鼠活动报名平台系统

&#x1f43e;“真人版猫爪老鼠活动报名平台系统”——趣味追逐&#xff0c;等你来战&#xff01;&#x1f42d; &#x1f431;【萌宠变主角&#xff0c;现实版趣味游戏】 厌倦了电子屏幕的虚拟游戏&#xff1f;来试试“真人版猫爪老鼠活动”吧&#xff01;在这个平台上&…...

Git原理与用法系统总结

目录 Reference前言版本控制系统Git的诞生配置Git配置用户名和邮件配置颜色配置.gitignore文件 Git的基础用法初始化仓库克隆现有的仓库添加暂存文件提交变动到仓库比较变动查看日志Git回退Git重置暂存区 Git版本管理重新提交取消暂存撤销对文件的修改 Git分支Git分支的优势Git…...

连载|浅谈红队中的权限维持(六)-Linux 主机后门与Linux 隐藏文件

本文来源无问社区&#xff0c;更多实战内容&#xff0c;渗透思路可前往查看http://www.wwlib.cn/index.php/artread/artid/11584.html 0x01 Linux 主机后门 1、添加用户 一句话添加用户 useradd test;echo -e "123456n123456n" |passwd test 或者使用 openssl …...

tomato-靶机渗透

tomato-靶机 一、安装靶机环境 下载双击.ova文件&#xff0c;写文件名路径导入 打开虚拟机用NAT模式 编辑–>虚拟网络编辑器查看IP段 二、信息收集 1.御剑端口扫描查找该虚拟机的IP 访问网站 扫目录 dirb http://192.168.30.130 收集到目录 /server-status /antibot_im…...

git的配置使用

第三周 Tursday 早 git日志的安装使用 [rootweb ~]# yum -y install git.x86_64 //安装软件包 [rootweb ~]# rpm -ql git //查看git的包 ​ [rootweb ~]# mkdir /yy000 //创建新目录 [rootweb ~]# cd /yy000/ [rootweb yy000]# git init //将当前目录做为仓库…...

【1.0】drf初识

【1.0】drf初识 【一】前后端开发模式 【1】前后端混合开发 【示例】flask混合、django混合【案例】bbs项目 模板&#xff1a;dtl语法&#xff08;django template language)模板语法 {{}} /{% %}后端渲染 qs对象–遍历循环到模板中–使用模板语法渲染渲染完成后 得到纯粹的…...

SparkSQL---编程模型的操作,数据加载与落地及自定义函数的使用

一、SparkSQL编程模型的创建与转化 1、DataFrame的构建 people.txt数据&#xff1a; 1 zhangsan 20 2 lisi 29 3 wangwu 25 4 zhaoliu 30 5 tianqi 35 6 kobe 40 people.json数据&#xff1a;在SparkSQL—简介及RDD V.S DataFrame V.S Dataset编程模型详解里 1、从Spark数据…...

文件解析漏洞--IIS--Vulhub

文件解析漏洞 一、IIS解析漏洞 用windowserver2003安装IIS测试 1.1 IIS6.X 方法一&#xff1a;目录解析 在网站下建立文件夹的名字为.asp/.asa的文件夹&#xff0c;其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。 1.txt文件里是asp文件的语法查看当前时间 方…...

你知道缓存的这个问题到底把多少程序员坑惨了吗?

在现代系统中&#xff0c;缓存可以极大地提升性能&#xff0c;减少数据库的压力。 然而&#xff0c;一旦缓存和数据库的数据不一致&#xff0c;就会引发各种诡异的问题。 我们来看看几种常见的解决缓存与数据库不一致的方案&#xff0c;每种方案都有各自的优缺点 先更新缓存&…...

飞创直线模组桁架机械手优势及应用领域

随着工业自动化和智能制造的发展&#xff0c;直线模组桁架机械手极大地减轻了人类的体力劳动负担&#xff0c;在危险性、重复性高的作业环境中展现出了非凡的替代能力&#xff0c;引领着工业生产向自动化、智能化方向迈进。 一、飞创直线模组桁架机械手优势 飞创直线模组桁架…...

TongHttpServer 简介

1. 概述 随着网络技术的飞速发展,高并发大用户场景越来越普遍,单一应用服务节点已经不能满足并发需求,为了提高整个系统可靠性,扩展性,吞吐率,通常将多个应用服务器通过硬负载/软负载组成集群,负载均衡器根据不同负载算法将请求分发到各个应用服务器节点。 Tong…...

回溯法---组合总和

题目&#xff1a; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限…...

将Android Library项目发布到JitPack仓库

将项目代码导入Github 1.将本地项目目录初始化为 Git 仓库。 默认情况下&#xff0c;初始分支称为 main; 如果使用 Git 2.28.0 或更高版本&#xff0c;则可以使用 -b 设置默认分支的名称。 git init -b main 如果使用 Git 2.27.1 或更低版本&#xff0c;则可以使用 git symbo…...

JAVAWeb实战(后端篇)

因为前后端代码内容过多&#xff0c;这篇只写后端的代码&#xff0c;前端的在另一篇写 项目实战一&#xff1a; 1.创建数据库,表等数据 创建数据库 create database schedule_system 创建表&#xff0c;并添加内容 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------…...

【vs】实用调试技巧——学会写优秀的代码!

&#x1f984;个人主页:小米里的大麦-CSDN博客 &#x1f38f;所属专栏:https://blog.csdn.net/huangcancan666/category_12718530.html ⚙️操作环境:Visual Studio 2022 目录 一、前言 二、什么是BUG&#xff1f; 三、调试是什么&#xff1f;有多重要&#xff1f; 一名优秀…...

数组声明方式

数组声明方式 一、 一维数组 元素数据类型[] 数组名; // 推荐元素数据类型 数组名[]; 二、 二维数组 元素数据类型[][] 数组名称; // 推荐元素数据类型 数组名称[][];元素数据类型[] 数组名称[]; 注&#xff1a; 对于第三种方式元素数据类型[] 数组名称[];&#xff0c;可…...

Docker中Docker网络-理解Docker0与自定义网络的使用示例

场景 CentOS7中Docker的安装与配置&#xff1a; CentOS7中Docker的安装与配置_centos docker sock-CSDN博客 在上面安装好Docker之后。 关于对Docker中默认docker0以及自定义网络的使用进行学习。 注&#xff1a; 博客&#xff1a;霸道流氓气质-CSDN博客 实现 理解dock…...

领域驱动大型结构之SYSTEM METAPHOR(系统隐喻)

在领域驱动设计&#xff08;Domain-Driven Design, DDD&#xff09;中&#xff0c;"System Metaphor" 是一种用于帮助开发团队和业务人员在理解和沟通系统时使用的概念模型。虽然 "System Metaphor" 并不是 DDD 的核心概念&#xff0c;但它在敏捷开发方法&…...

web前端开发一、VScode环境搭建

1、VScode安装live server插件&#xff0c;写完代码后&#xff0c;保存就会在浏览器自动更新&#xff0c;不需要再去浏览器点击刷新了 2、创建html文件 3、在文件中输入感叹号 &#xff01; 4、选择第一个&#xff0c;然后回车&#xff0c;就会自动输入html的标准程序 5、…...

DiAD代码use_checkpoint

目录 1、梯度检查点理解2、 torch.utils.checkpoint.checkpoint函数 1、梯度检查点理解 梯度检查点&#xff08;Gradient Checkpointing&#xff09;是一种深度学习优化技术&#xff0c;它的目的是减少在神经网络训练过程中的内存占用。在训练深度学习模型时&#xff0c;我们需…...

nginx出现Refused to apply inline style because it violates

Content Security Policy的错误。根据错误提示&#xff0c;nginx拒绝应用内联样式&#xff0c;因为它违反了内容安全策略&#xff08;Content Security Policy&#xff09;。内容安全策略是一种浏览器机制&#xff0c;用于防止潜在的安全漏洞&#xff0c;通过限制从外部来源加载…...

【中项第三版】系统集成项目管理工程师 | 第 11 章 规划过程组⑥ | 11.15 - 11.17

前言 第11章对应的内容选择题和案例分析都会进行考查&#xff0c;这一章节属于10大管理的内容&#xff0c;学习要以教材为准。本章上午题分值预计在15分。 目录 11.15 规划资源管理 11.15.1 主要输入 11.15.2 主要工具与技术 11.15.3 主要输出 11.16 估算活动资源 11.1…...

基础警务互联网app

智慧公安以大数据、云计算、人工智能、物联网和移动互联网技术为支撑&#xff0c;以“打、防、管、控”为目的&#xff0c;综合研判为核心&#xff0c;共享信息数据资源&#xff0c;融合业务功能&#xff0c;构建公安智慧大数据平台&#xff0c;实现公安信息数字化、网络化和智…...

为了方便写CURD代码,我在UTools写了个插件SqlConvert来生成代码!

-1. 前言 为了方便摸鱼&#xff0c;我之前写过一个通过sql生成代码的工具&#xff0c;但是服务器到期了&#xff0c;也就懒得重新部署了。 技术框架是 SpringBoot MybatisPlus Velocity Vue ElementUI Sql-ParseeSql-Parser-ui 0. Utools应用安装 官网地址: https://u.too…...

在国产芯片上实现YOLOv5/v8图像AI识别-【2.2】RK3588上C++开发环境准备及测试更多内容见视频

本专栏主要是提供一种国产化图像识别的解决方案&#xff0c;专栏中实现了YOLOv5/v8在国产化芯片上的使用部署&#xff0c;并可以实现网页端实时查看。根据自己的具体需求可以直接产品化部署使用。 B站配套视频&#xff1a;https://www.bilibili.com/video/BV1or421T74f 板子…...

2024数据资产入表财务实操手册

关注公众号《方案驿站》&#xff0c;并私信&#xff1a;2024数据资产入表财务实操手册&#xff0c;可获取本文pdf文件。...