裸机器搭建k8s部署 1.28.10版本

news2025/1/9 6:17:33

问了搭建k8s集群踩了很多坑,问题主要出现在网络插件处,因此主要是master节点操作问题。重新走一下流程整理一下笔记。

目录

虚拟机准备

虚拟机

系统版本信息

修改镜像地址

配置静态ip

关闭防火前和交换分区

转发 IPv4 并让 iptables 看到桥接流量

​编辑

k8s集群安装

安装运行容器Containerd

配置 systemd cgroup 驱动

安装 kubeadm、kubelet 和 kubectl 

服务安装

初始化 (仅仅主机执行)

初始化执行成功结果

​编辑

根据提示执行

初始化完成后检查

装网络插件

问题排查


虚拟机准备

虚拟机

系统版本信息

[root@k8smaster ~]# hostnamectl
   Static hostname: k8smaster
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 58f72fdf6d904baab18787a82e3d7dce
           Boot ID: 38d7be129cb04282921c6d8e88d420dc
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-1160.71.1.el7.x86_64
      Architecture: x86-64

修改镜像地址

虚拟机器centos7无法识别yum 命令异常处理笔记_虚拟机找不到yum命令-CSDN博客

安装常用的命令工具

yum install -y net-tools  vim  wget

配置静态ip

systemctl restart network  # 重启生效

# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="node"
BROWSER_ONLY="no"
BOOTPROTO="static"  
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.110.143
NETMASK=255.255.255.0
GATEWAY=192.168.110.2
DNS1=8.8.8.8
DNS2=8.8.4.4
UUID="0539496e-433b-4973-9618-d721fb5592da"

3.修改用户名和hosts

hostnamectl set-hostname xxxxx  # 永久修改用户名

参考链接:

【Kubernetes】(K8S)彻底卸载详细教程_卸载kubernetes-CSDN博客

在 Linux 系统中安装并设置 kubectl | Kubernetes

安装 kubeadm | Kubernetes

关闭防火前和交换分区

1.确保每个节点上 MAC 地址和 product_uuid 的唯一性 

  • 你可以使用命令 ip link 或 ifconfig -a 来获取网络接口的 MAC 地址
  • 可以使用 sudo cat /sys/class/dmi/id/product_uuid 命令对 product_uuid 校验

一般来讲,硬件设备会拥有唯一的地址,但是有些虚拟机的地址可能会重复。 Kubernetes 使用这些值来唯一确定集群中的节点。 如果这些值在每个节点上不唯一,可能会导致安装失败。

2. 在所有节点上关闭防护墙与核心防护,并且关闭swap交换

  • 交换分区的配置。kubelet 的默认行为是在节点上检测到交换内存时无法启动。 kubelet 自 v1.22 起已开始支持交换分区。自 v1.28 起,仅针对 cgroup v2 支持交换分区; kubelet 的 NodeSwap 特性门控处于 Beta 阶段,但默认被禁用。
  • 如果 kubelet 未被正确配置使用交换分区,则你必须禁用交换分区。 例如,sudo swapoff -a 将暂时禁用交换分区。要使此更改在重启后保持不变,请确保在如 /etc/fstabsystemd.swap 等配置文件中禁用交换分区,具体取决于你的系统如何配置。

安装 kubeadm | Kubernetes

systemctl stop firewalld  # 关闭防火墙
systemctl disable firewalld #禁止开启启动

 
# 关闭交换分区
swapoff -a         #交换分区必须要关闭  重启失效
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭swap分区


以下指令适用于 Kubernetes 1.28。

# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

转发 IPv4 并让 iptables 看到桥接流量

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

# 应用 sysctl 参数而不重新启动
sudo sysctl --system

通过运行以下指令确认 br_netfilter 和 overlay 模块被加载:
 

lsmod | grep br_netfilter
lsmod | grep overlay

通过运行以下指令确认 net.bridge.bridge-nf-call-iptablesnet.bridge.bridge-nf-call-ip6tables 和 net.ipv4.ip_forward 系统变量在你的 sysctl 配置中被设置为 1:

sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward

k8s集群安装

如果没有说明是全部节点都执行

安装运行容器Containerd

安装容器时 不同的版本有不同的要求;查看官方文档大概意思是,1.24.版本以后有大的变动,移除了docker的集成支持。

容器运行时 | Kubernetes

参考: 轻量级容器管理工具Containerd的两种安装方式 - 只为心情愉悦 - 博客园

移除本机已安装的容器
yum remove containerd.io

yum install -y yum-utils

# 配置docker yum 源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装containerd
yum install -y containerd.io

安装成功后 

移除  默认配置
mv /etc/containerd/config.toml  /tmp
重置 containerd 配置,然后相应地设置上述配置参数。
containerd config default > /etc/containerd/config.toml

配置 systemd cgroup 驱动

结合 runc 使用 systemd cgroup 驱动,在 /etc/containerd/config.toml 中设置:

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

#重载沙箱(pause)镜像 
[plugins."io.containerd.grpc.v1.cri"]
  # sandbox_image = "registry.k8s.io/pause:3.2"  #注释
  sandbox_image = "registry.aliyuncs.com/k8sxio/pause:3.9"  # 替换为

 参考:k8s安装文档v1.28.10版本_kubeadm 1.28.10-CSDN博客

重启容器: systemctl restart containerd
查看容器状态:systemctl status containerd  

设置开启启动: systemctl enable containerd

注意:如果有报错需要先解决报错问题,否则后面还会有问题

安装 kubeadm、kubelet 和 kubectl 

服务安装

你需要在每台机器上安装以下的软件包:

  • kubeadm:用来初始化集群的指令。

  • kubelet:在集群中的每个节点上用来启动 Pod 和容器等。

  • kubectl:用来与集群通信的命令行工具。

采用yum的安装方式 指定镜像库,指定版本v1.28.15

# 这会覆盖 /etc/yum.repos.d/kubernetes.repo 中现存的所有配置
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
EOF
--------- 只配置一个即可,失败在尝试其他的
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[Kubernetes]
name=Kubernetes v1.28 (Stable) (rpm)
type=rpm-md
baseurl=https://download.opensuse.org/repositories/isv:/kubernetes:/core:/stable:/v1.28/rpm/
gpgcheck=1
gpgkey=https://download.opensuse.org/repositories/isv:/kubernetes:/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
enabled=1
EOF
-----------------------
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOF
                        
原文链接:https://blog.csdn.net/weixin_40136446/article/details/137007671


#安装命令  可能会失败,不管是阿里云源还是官方文档的源,可以多次尝试,三个yum 都成功过
yum install -y kubelet-1.28.15 kubeadm-1.28.15 kubectl-1.28.15

注意:yum install -y kubelet  kubeadm  kubectl   -- 会安装1.28的最新版本 1.28.15

#如果执行失败 添加 --disableexcludes=kubernetes  再次尝试
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

以上都失败 可以先yum update  后在执行安装
查看可用的版本
[root@k8smaster2 ~]# yum list kubelet --showduplicates |grep 1.28
kubelet.x86_64                   1.28.0-150500.1.1                    kubernetes
kubelet.x86_64                   1.28.1-150500.1.1                    kubernetes
kubelet.x86_64                   1.28.2-150500.1.1                    kubernetes
kubelet.x86_64                   1.28.3-150500.1.1                    kubernetes
kubelet.x86_64                   1.28.4-150500.1.1                    kubernetes
kubelet.x86_64                   1.28.5-150500.1.1                    kubernetes
kubelet.x86_64                   1.28.6-150500.1.1                    kubernetes
kubelet.x86_64                   1.28.7-150500.1.1                    kubernetes
kubelet.x86_64                   1.28.8-150500.1.1                    kubernetes
kubelet.x86_64                   1.28.9-150500.2.1                    kubernetes
kubelet.x86_64                   1.28.10-150500.1.1                   kubernetes
kubelet.x86_64                   1.28.11-150500.1.1                   kubernetes
kubelet.x86_64                   1.28.12-150500.1.1                   kubernetes
kubelet.x86_64                   1.28.13-150500.1.1                   kubernetes
kubelet.x86_64                   1.28.14-150500.2.1                   kubernetes
kubelet.x86_64                   1.28.15-150500.1.1                   kubernetes

服务名添加上x86_64在执行 后执行成功
yum install -y kubelet.x86_64
yum install -y kubeadm.x86_64
yum install -y kubectl.x86_64

#开机启动并启动
设置 开机启动systemctl enable kubelet 
启动服务 systemctl start kubelet  # 这一步服务是无法正常启动的

原文链接:https://blog.csdn.net/qq_36838700/article/details/141165373

初始化 (仅仅主机执行)

方式一:

执行: kubectl edit cm kubelet-config -n kube-system   

修改或新增 :   cgroupDriver: systemd

vim /etc/sysconfig/kubelet 
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"

kubeadm init --apiserver-advertise-address=192.168.110.135 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=1.28.15 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --cri-socket=unix:///run/containerd/containerd.sock

方式二:获取默认配置文件修改

修改完配置文件后 执行命令: kubeadm init --config kubeadm.yaml 

# 获取kubead默认配置文件 
kubeadm config print init-defaults --component-configs KubeletConfiguration > kubeadm.yaml


# 配置大部分不用修改  
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.110.135  # 修改为自己的主节点ip
  bindPort: 6443
nodeRegistration:
  criSocket: unix:///var/run/containerd/containerd.sock  # 可能需要修改前面容器使用containerd,这个里配置成这个
  imagePullPolicy: IfNotPresent
  name: k8smaster    ## 主机节点名称
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers  ## 替换为阿里云
kind: ClusterConfiguration
kubernetesVersion: 1.28.15   ## 版本号与自己的实际版本对应
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
  podSubnet: 10.244.0.0/16 
scheduler: {}
---
apiVersion: kubelet.config.k8s.io/v1beta1
authentication:
  anonymous:
    enabled: false
  webhook:
    cacheTTL: 0s
    enabled: true
  x509:
    clientCAFile: /etc/kubernetes/pki/ca.crt
authorization:
  mode: Webhook
  webhook:
    cacheAuthorizedTTL: 0s
    cacheUnauthorizedTTL: 0s
cgroupDriver: systemd   ##  修改为systemd 或新增
clusterDNS:
- 10.96.0.10
clusterDomain: cluster.local
containerRuntimeEndpoint: ""
cpuManagerReconcilePeriod: 0s
evictionPressureTransitionPeriod: 0s
fileCheckFrequency: 0s
healthzBindAddress: 127.0.0.1
healthzPort: 10248
httpCheckFrequency: 0s
imageMinimumGCAge: 0s
kind: KubeletConfiguration
logging:
  flushFrequency: 0
  options:
    json:
      infoBufferSize: "0"
  verbosity: 0
memorySwap: {}
nodeStatusReportFrequency: 0s
nodeStatusUpdateFrequency: 0s
rotateCertificates: true
runtimeRequestTimeout: 0s
shutdownGracePeriod: 0s
shutdownGracePeriodCriticalPods: 0s
staticPodPath: /etc/kubernetes/manifests
streamingConnectionIdleTimeout: 0s
syncFrequency: 0s
volumeStatsAggPeriod: 0s
如果修改的是配置文件,可以先执行这一步 然后在执行初始化命令
[root@k8smaster2 ~]# kubeadm config images pull --config kubeadm.yaml
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-apiserver:v1.28.15
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-controller-manager:v1.28.15
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-scheduler:v1.28.15
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-proxy:v1.28.15
[config/images] Pulled registry.aliyuncs.com/google_containers/pause:3.9
[config/images] Pulled registry.aliyuncs.com/google_containers/etcd:3.5.15-0
[config/images] Pulled registry.aliyuncs.com/google_containers/coredns:v1.10.1
[root@k8smaster2 ~]# 
初始化执行成功结果
根据提示执行

 原文链接:https://blog.csdn.net/qq_36838700/article/details/141165373

######按照提示继续######
## init完成后第一步:复制相关文件夹
To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

## 导出环境变量
Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf
  

如果假如集群的命令过期 可以通过下面的命令获取集群添加节点的命令

kubeadm token create --print-join-command

初始化完成后检查

查看服务运行状态 

systemctl status kubelet

[root@k8smaster2 ~]# systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
   Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/kubelet.service.d
           └─10-kubeadm.conf
   Active: active (running) since 三 2025-01-08 18:05:03 CST; 3min 15s ago
     Docs: https://kubernetes.io/docs/
 Main PID: 21616 (kubelet)
    Tasks: 11
   Memory: 34.9M
   CGroup: /system.slice/kubelet.service
           └─21616 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config...

1月 08 18:07:33 k8smaster2 kubelet[21616]: E0108 18:07:33.542971   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
1月 08 18:07:38 k8smaster2 kubelet[21616]: E0108 18:07:38.545528   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
1月 08 18:07:43 k8smaster2 kubelet[21616]: E0108 18:07:43.546429   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
1月 08 18:07:48 k8smaster2 kubelet[21616]: E0108 18:07:48.548064   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
1月 08 18:07:53 k8smaster2 kubelet[21616]: E0108 18:07:53.549266   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
1月 08 18:07:58 k8smaster2 kubelet[21616]: E0108 18:07:58.550236   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
1月 08 18:08:03 k8smaster2 kubelet[21616]: E0108 18:08:03.551508   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
1月 08 18:08:08 k8smaster2 kubelet[21616]: E0108 18:08:08.554728   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
1月 08 18:08:13 k8smaster2 kubelet[21616]: E0108 18:08:13.556942   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
1月 08 18:08:18 k8smaster2 kubelet[21616]: E0108 18:08:18.559070   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
Hint: Some lines were ellipsized, use -l to show in full.
[root@k8smaster2 ~]# 

kubectl get nodes

kubectl get pods -n kube-system

服务状态为not ready,

查看日志命令  kubectl describe po calico-node-2kr9c -n kube-system

装网络插件

# 拉取对应的镜像
vi images.sh
#!/bin/bash
images=(
  flannel:v0.25.5
  flannel-cni-plugin:v1.5.1-flannel1
)
for imageName in ${images[@]} ; do
    ctr -n k8s.io image pull registry.cn-shenzhen.aliyuncs.com/kube-image-dongdong/$imageName
done

chmod 755 images.sh
执行 images.sh 脚本后执行下面步骤

# 上传镜像
ctr -n k8s.io image tag registry.cn-shenzhen.aliyuncs.com/kube-image-dongdong/flannel-cni-plugin:v1.5.1-flannel1 docker.io/flannel/flannel-cni-plugin:v1.5.1-flannel1

ctr -n k8s.io image tag registry.cn-shenzhen.aliyuncs.com/kube-image-dongdong/flannel:v0.25.5  docker.io/flannel/flannel:v0.25.5

原文链接:https://blog.csdn.net/qq_36838700/article/details/141165373

完整部署一套k8s-v.1.28.0版本的集群-CSDN博客

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

kubectl apply -f  kube-flannel.yml

##  查看pods状态 发现还是在pending
[root@k8smaster2 ~]# kubectl get pods -A
NAMESPACE      NAME                                 READY   STATUS              RESTARTS   AGE
kube-flannel   kube-flannel-ds-6sdld                0/1     Init:ErrImagePull   0          75s
kube-system    coredns-66f779496c-5d6sr             0/1     Pending             0          22m
kube-system    coredns-66f779496c-lwdgc             0/1     Pending             0          22m
kube-system    etcd-k8smaster2                      1/1     Running             0          22m
kube-system    kube-apiserver-k8smaster2            1/1     Running             0          22m
kube-system    kube-controller-manager-k8smaster2   1/1     Running             0          22m
kube-system    kube-proxy-vtxcc                     1/1     Running             0          22m
kube-system    kube-scheduler-k8smaster2            1/1     Running             0          22m

问题排查

查看日志

kubectl describe po kube-flannel-ds-6sdld -n kube-flannel  

1. 镜像中找不到该版本(注意:前面image.sh脚本下载的是该组件,版本不一样)

  Failed     84s                    kubelet            Failed to pull image "docker.io/flannel/flannel-cni-plugin:v1.6.0-flannel1": failed to pull and unpack image "docker.io/flannel/flannel-cni-plugin:v1.6.0-flannel1": failed to resolve reference "docker.io/flannel/flannel-cni-plugin:v1.6.0-flannel1": failed to do request: Head "https://registry-1.docker.io/v2/flannel/flannel-cni-plugin/manifests/v1.6.0-flannel1": dial tcp 128.242.245.244:443: connect: connection refused
  Normal   BackOff    44s (x4 over 2m)       kubelet            Back-off pulling image "docker.io/flannel/flannel-cni-plugin:v1.6.0-flannel1"
  Warning  Failed     44s (x4 over 2m)       kubelet            Error: ImagePullBackOff
  Normal   Pulling    32s (x4 over 3m11s)    kubelet            Pulling image "docker.io/flannel/flannel-cni-plugin:v1.6.0-flannel1"
  Warning  Failed     10s (x4 over 2m50s)    kubelet            Error: ErrImagePull
  Warning  Failed     10s                    kubelet            Failed to pull image "docker.io/flannel/flannel-cni-plugin:v1.6.0-flannel1": failed to pull and unpack image "docker.io/flannel/flannel-cni-plugin:v1.6.0-flannel1": failed to resolve reference "docker.io/flannel/flannel-cni-plugin:v1.6.0-flannel1": failed to do request: Head "https://registry-1.docker.io/v2/flannel/flannel-cni-plugin/manifests/v1.6.0-flannel1": dial tcp 98.159.108.58:443: connect: connection refused

解决方法:

1. 修改kube-flannel.yml 中的版本,与images.sh 执行的版本相同

2.修改拉去镜像为本地拉取

 vim kube-flannel.yml

 

修改后先卸载 在安装

kubectl delete -f  kube-flannel.yml

kubectl apply -f  kube-flannel.yml

重新执行后结果正常

查看日志命令

journalctl -xeu kubelet

查看报错容器信息

kubectl describe po calico-node-2kr9c -n kube-system

发现pod的状态为ErrImagePull 或者 ImagePullBackOff,这两个状态都表示镜像拉取失败

其他参考文档:

kubernetes(1.28)配置flannel:kubelet无法拉取镜像(NotReady ImagePullBackOff)同时解决k8s配置harbor私人镜像仓库问题_flannel镜像拉取失败-CSDN博客

centos7升级内核版本到5.19.0 - sky_cheng - 博客园

Kubernetes[k8s] 使用containerd,安装1.27.3 - 1.28.0安装教程_kubernetes containerd 安装-CSDN博客

This system is not registered with an entitlement server. You can use subscription-manager to regist-CSDN博客

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2273616.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HCIE-day10-ISIS

ISIS ISIS&#xff08;Intermediate System-to-Intermediate System&#xff09;中间系统到中间系统&#xff0c;属于IGP&#xff08;内部网关协议&#xff09;&#xff1b;是一种链路状态协议&#xff0c;使用最短路径优先SPF算法进行路由计算&#xff0c;与ospf协议有很多相…

70.爬楼梯 python

爬楼梯 题目题目描述示例 1&#xff1a;示例 2&#xff1a;提示&#xff1a; 题解思路分析Python 实现代码空间优化代码解释提交结果 题目 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff…

优质内容在个人IP运营中的重要性:以开源AI智能名片商城小程序为应用实例的深度探讨

摘要&#xff1a;在数字化时代&#xff0c;个人品牌&#xff08;IP&#xff09;的塑造与传播已成为各行各业提升影响力、吸引用户关注、促进商业转化的关键策略。优质内容作为连接个人IP与目标受众的桥梁&#xff0c;其在个人IP运营中的重要性不言而喻。本文旨在深入探讨优质内…

有限元分析学习——Anasys Workbanch第一阶段笔记(8)水杯案例的对称与轴对称处理

目录 1 序言 2 对称处理 2.1 模型处理 2.2 网格划分、约束载荷及接触设置 2.3 计算结果 3 轴对称处理 3.1 对称与轴对称概念 3.2 轴对称问题的应用 3.2.1 创建分析案例 3.2.2 导入并处理模型 3.2.3 网格划分、约束载荷及接触设置 3.2.4 后处理计算结果 1 序言 本章…

网络安全-web渗透环境搭建-BWAPP(基础篇)

01--所需系统环境&#xff1a; 虚拟主机系统部署&#xff08;vmware&#xff0c;虚拟主机创建、虚拟主机网络配置&#xff08;桥接&#xff0c;便于网络中多个主机都能访问虚拟主机&#xff09;、虚拟软件功能&#xff0c;快照、克隆、镜像文件加载&#xff0c;ova文件制作&am…

Java 实现 Elasticsearch 查询当前索引全部数据

Java 实现 Elasticsearch 查询当前索引全部数据 需求背景通常情况Java 实现查询 Elasticsearch 全部数据写在最后 需求背景 通常情况下&#xff0c;Elasticsearch 为了提高查询效率&#xff0c;对于不指定分页查询条数的查询语句&#xff0c;默认会返回10条数据。那么这就会有…

算能AI计算服务器SE5设备树的二次修改实操

目录 1.大纲 2.实操 2.下载对应文件包 3.解包启动文件 4.修改对应的设备树 5.重启后 教程链接&#xff1a;https://github.com/sophgo/sophon-tools/tree/main/source/pmemory_edit 1.大纲 2.实操 2.1 选择串口&#xff0c;波特率115200&#xff0c;重启设备&#xff0…

Python的Matplotlib库应用(超详细教程)

目录 一、环境搭建 1.1 配置matplotlib库 1.2 配置seaborn库 1.3 配置Skimage库 二、二维图像 2.1 曲线&#xff08;直线&#xff09;可视化 2.2 曲线&#xff08;虚线&#xff09;可视化 2.3 直方图 2.4 阶梯图 三、三维图像 3.1 3D曲面图 3.2 3D散点图 3.3 3D散…

Flutter:封装一个自用的bottom_picker选择器

效果图&#xff1a;单列选择器 使用bottom_picker: ^2.9.0实现&#xff0c;单列选择器&#xff0c;官方文档 pubspec.yaml # 底部选择 bottom_picker: ^2.9.0picker_utils.dart AppTheme&#xff1a;自定义的颜色 TextWidget.body Text() <Widget>[].toRow Row()下边代…

牛客网刷题 ——C语言初阶(6指针)——BC106 上三角矩阵判定

1. 题目描述——BC106 上三角矩阵判定 牛客网OJ题链接 描述 KiKi想知道一个n阶方矩是否为上三角矩阵&#xff0c;请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵&#xff0c;主对角线为从矩阵的左上角至右下角的连线。 示例 输入&#xff1a; 3 1 2 3 0 4 5 0 0…

力扣刷题:数组OJ篇(下)

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 目录 1.轮转数组&#xff08;1&#xff09;题目描述…

《(限)战斗天赋VR》V02122024官方中文学习版

《(限)战斗天赋VR》官方中文版https://pan.xunlei.com/s/VODaeHDXSxw4BNDNl39dxJXnA1?pwdusm5# 一款具有挑战性的基于物理的roguelite剑术格斗游戏&#xff0c;你可以在一个超级无缝的程序地牢中创造自己的战斗风格&#xff0c;体验无与伦比的游戏体验。有80多种敌人变种、10…

《Spring Framework实战》3:概览

欢迎观看《Spring Framework实战》视频教程 Spring Framework 为基于现代 Java 的企业应用程序提供了全面的编程和配置模型 - 在任何类型的部署平台上。 Spring 的一个关键要素是应用程序级别的基础设施支持&#xff1a;Spring 专注于企业应用程序的 “管道”&#xff0c;以便…

基于SpringBoot+Vue动漫交流系统平台设计和实现

系统介绍&#xff1a; 免费的源码&#xff0c;我刚找到的&#xff0c;给大家推荐一下源码下载 动漫交流系统平台是一个专为动漫爱好者设计的在线社区平台&#xff0c;旨在为用户提供一个便捷的环境来分享动漫。这个系统包含了多种功能&#xff0c;如动漫分类、动漫视频、动漫…

微信小程序获取图片使用session(上篇)

概述&#xff1a; 我们开发微信小程序&#xff0c;从后台获取图片现实的时候&#xff0c;通常采用http get的方式&#xff0c;例如以下代码 <image class"user_logo" src"{{logoUrl}}"></image>变量logoUrl为ur图片l的请求地址 但是对于很多…

HTML5实现好看的中秋节网页源码

HTML5实现好看的中秋节网页源码 前言一、设计来源1.1 网站首页界面1.2 登录注册界面1.3 节日由来界面1.4 节日习俗界面1.5 节日文化界面1.6 节日美食界面1.7 节日故事界面1.8 节日民谣界面1.9 联系我们界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看…

Redis 数据库源码分析

Redis 数据库源码分析 我们都知道Redis是一个 <key,value> 的键值数据库&#xff0c;其实也就是一个 Map。如果让我来实现这样一个 Map&#xff0c;我肯定是用数组&#xff0c;当一个 key 来的时候&#xff0c;首先进行 hash 运算&#xff0c;接着对数据的 length 取余&…

【海南省】乡镇界arcgis格式shp数据乡镇名称和编码gis矢量数据

《海南省乡镇界GIS矢量数据详解》 GIS&#xff08;Geographic Information System&#xff09;是一种强大的地理信息系统&#xff0c;它结合了地图、数据库和计算机技术&#xff0c;用于管理和分析空间数据。在本篇中&#xff0c;我们将聚焦于一个特定的GIS数据集——“最新海…

JVM 核心知识点总结

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

嵌入式系统 (5.嵌入式Linux网络应用开发)

5.嵌入式 Linux 网络应用开发 5.1相关概念 客户端程序与服务端程序 在网络编程中,客户端程序与服务端程序是网络通信的两个基本角色。客户端发起请求,服务端响应请求并提供服务。 IP 地址与端口号 IP 地址用于标识网络设备的位置,而端口号标识运行在计算机上的具体进程…