麒麟v10+信創x86處理器離線搭建k8s集群完整過程

前言

最近為某客戶搭建內網的信創環境下的x8s集群,走了一些彎路,客戶提供的環境完全與互聯網分離,通過yum、apt這些直接拉依賴就別想了,用的操作系統和cpu都是國產版本,好在仍然是x86的,不是其他架構,這里把完整搭建過程記錄一下

準備工作

  1. 準備搭建k8s集群主機
  2. 一臺可連接互聯網的麒麟v10系統虛機,單核cpu 1g內存的配置就行,這個如果客戶方能給開出來最好,沒有的話,去https://eco.kylinos.cn/注冊下載麒麟操作系統的鏡像,安裝virtualbox搭建一個麒麟v10虛擬機,記著網絡這塊選雙網卡nat+hostonly,否則沒法同時連外網+ssh
  3. k8s版本這里選擇了1.23.6

安裝包下載

docker安裝包

?從Index of linux/static/stable/x86_64/https://download.docker.com/linux/static/stable/x86_64/Index of linux/static/stable/x86_64/?下載,建議選擇23、24版本,不建議18ce,有兼容問題

harbor安裝包

?(如果客戶方提供了內網的鏡像倉庫,這一步跳過),harbor需要兩個文件,分別是:docker-compose(https://github.com/docker/compose/releases),harbor離線包(https://github.com/goharbor/harbor/releases),2.5.1版本就行

k8s的rpm安裝包

登錄那臺能連互聯網的麒麟v10系統的虛擬機

增加如下yum repo:

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

下載k8s安裝包:

yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6 kubernetes-cni-0.8.7 --downloadonly --downloaddir /opt/rpm

這里安裝包版本選擇1.23.6,不使用默認高版本的k8s,因為1.24之后k8s的引擎不再使用docker,而是containerd

下載后的安裝包除了幾個kub*之外,應該還會有其他依賴包

flanneld安裝包

flannel是k8s的網絡通信組件,必須安裝

在https://github.com/flannel-io/flannel/releases/下載,這里選擇的是v0.21.0,注意要下載的文件有3個:

flanneld-amd64

flanneld-v0.21.0-amd64.docker

kube-flannel.yml

安裝環境分配

模擬環境分配:

主機名ip角色
qlk8s-master

192.168.15.21

k8s主節點
qlk8s-worker1192.168.15.22k8s work節點
qlk8s-worker2192.168.15.23k8s work節點
qlk8s-worker3192.168.15.24k8s work節點,harbor鏡像服務器

注意:很多情況下,每臺機器除了自身內網ip外還會有一個浮動ip,也就是供外部訪問的ip,下面所有操作不做特別說明的情況下默認都是自身內網ip

配置主機名

所有主機修改主機名和hosts文件

hostnamectl set-hostname qlk8s-master

修改/etc/hosts文件,增加每臺主機的配置如:

192.168.15.21 qlk8s-master
192.168.15.22 qlk8s-worker1
192.168.15.23 qlk8s-worker2
192.168.15.24 qlk8s-worker3

所有主機基礎配置

掛載云硬盤

(如果有)請先掛載附帶的云硬盤到/data目錄

關閉防火墻

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

關閉swap

swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab

內核ip調整

modprobe br_netfilter
touch /etc/sysctl.d/k8s.conf
vi  /etc/sysctl.d/k8s.conf
# 增加內容:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1#執行
sysctl -p /etc/sysctl.d/k8s.conf

組件安裝

安裝docker

1.上傳docker安裝包文件到每臺主機
2.解壓docker文件
tar -xf docker-24.0.1.tgz
3.復制到bin
sudo cp docker/* /usr/bin/
#查詢bin功能正常
docker -v
4.創建目錄

docker需要更多的硬盤空間保證運行,最好不要放在系統盤,如果額外掛載的云硬盤,比如在/data目錄,提前做好關聯

mkdir /data/docker
ln -s /data/docekr /var/lib/docker
5.創建服務
vi /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always[Install]
WantedBy=multi-user.target
6.增加配置文件
mkdir /etc/docker/vi /etc/docker/daemon.json#寫入
{"insecure-registries": [],"registry-mirrors": [],"debug": false,"experimental": false,"exec-opts": ["native.cgroupdriver=systemd"]
}
7.啟動服務
systemctl daemon-reload
systemctl enable --now docker
systemctl start docker

安裝harbor

(如果客戶方提供了內網的鏡像倉庫,這一步跳過)

1.登錄規劃好的harbor服務器主機,并上傳2個安裝包
2.安裝docker-compose

docker-compose的文件只有一個二進制文件,直接重命名文件為docker-compose,復制到/usr/local/bin,并使用chmod a+x?/usr/local/bin/docker-compose 賦予權限

3.解壓harbor
tar -xvf  harbor-online-installer-v2.5.1.tgz
4.修改harbor.yml文件
cp harbor.yml.tmpl harbor.yml

修改hostname內容為harbor.qlk8s.com

注釋掉https有關的配置項

修改data_volume,指定為/data/harbor,(或本機的存儲硬盤目錄),否則harbor會把鏡像數據放在系統盤下

5.啟動harbor
./install.sh

完成后使用命令驗證:

docker-compose ps
6.驗證

外部先配置hosts,如:192.168.15.24?harbor.qlk8s.com

瀏覽器訪問http://harbor.qlk8s.com,默認用戶名密碼admin Harbor12345,注意必須使用域名訪問,否則會出現跨域錯誤

在harbor的web端創建目錄images,注意類型為公開

7.docker修改
  1. 登錄所有主機,修改/etc/hosts,增加192.168.15.24?
  2. 修改docker配置并重啟
    vi /etc/docker/daemon.json#寫入
    {"insecure-registries": [harbor.qlk8s.com],"registry-mirrors": [harbor.qlk8s.com],"debug": false,"experimental": false,"exec-opts": ["native.cgroupdriver=systemd"]
    }#重啟
    systemctl restart docker
8.docker客戶端驗證
docker login harbor.qlk8s.com
#輸入用戶名密碼

?安裝k8s基礎服務

1.登錄待安裝k8s的所有主機,將從麒麟外網虛擬機上yum下載的文件統一上傳,并放在一個/opt/k8srpm目錄下
2.安裝rpm
cd /opt/k8srpm
rpm -ivh *.rpm

安裝過程中如果錯誤,找不到依賴,可以單獨執行rpm -ivh試試,把同時依賴的文件放在一起執行,如:rpm -ivh?kubelet-1.23.6-0.x86_64.rpm?kubernetes-cni-0.8.7-0.x86_64

3.配置服務
systemctl enable kubelet
echo "source <(kubectl completion bash)" >> ~/.bash_profile
source ~/.bash_profile
systemctl start kubelet

安裝flannel

安裝網絡flannel插件,flannel是k8s的通信組件必須安裝。

把flanneld-amd64和kube-flannel.yml上傳到每臺機器上,做如下操作

sudo mkdir /opt/bin
sudo cp flanneld-amd64 /opt/bin/flanneld
sudo chmod +x /opt/bin/flanneld

鏡像下載

k8s本身的服務都是以鏡像方式提供,都在外網的docker.io倉庫,可以指定阿里云等倉庫,但是如果不能連接互聯網,就必須提前下載

1.獲取鏡像列表

執行如下,命令,獲取依賴的全部鏡像列表

kubeadm config images list
2.獲取鏡像列表

找一臺連接互聯網并安裝了docker的主機,找到上面所有鏡像的可下載地址,進行下載,并打包為一個k8simage.tar

docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.6
docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.23.6
docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.23.6
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.23.6
docker pull registry.aliyuncs.com/google_containers/pause:3.6
docker pull registry.aliyuncs.com/google_containers/etcd:3.5.1-0docker save -o k8simages.tar registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.6 registry.aliyuncs.com/google_containers/kube-controller-manager:v1.23.6 registry.aliyuncs.com/google_containers/kube-scheduler:v1.23.6 registry.aliyuncs.com/google_containers/kube-proxy:v1.23.6 registry.aliyuncs.com/google_containers/pause:3.6 registry.aliyuncs.com/google_containers/etcd:3.5.1-0

獲取flannel相關鏡像,flannel也需要相關鏡像,必須一塊獲取

flannel包含兩個插件,一個是flanneld自身,另一個是plugin,flanneld自身的鏡像已經包含在下載鏈接了,flanneld-v0.21.0-amd64.docker就是,另一個plugin必須下載

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/flannel/flannel-cni-plugin:v1.1.2docker save -o flannel-cni-plugin.v1.1.2.tar swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/flannel/flannel-cni-plugin:v1.1.2
3.鏡像導入

這一步要把剛才下載的鏡像導入到待部署環境的鏡像倉庫和docker

先把剛才導出的k8simages.tar、flannel-cni-plugin.v1.1.2.tar、flanneld-v0.21.0-amd64.docker,3個文件上傳到部署環境的任意一臺主機

導入文件

docker load -i k8simages.tar
docker load -i flannel-cni-plugin.v1.1.2.tar
docker load -i flanneld-v0.21.0-amd64.docker

修改鏡像名稱

docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.6 harbor.qlk8s.com/images/kube-apiserver:v1.23.6
docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.23.6 harbor.qlk8s.com/images/kube-controller-manager:v1.23.6
docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.23.6 harbor.qlk8s.com/images/kube-scheduler:v1.23.6
docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.23.6 harbor.qlk8s.com/images/kube-proxy:v1.23.6
docker tag registry.aliyuncs.com/google_containers/etcd:3.5.1-0 harbor.qlk8s.com/images/etcd3.5.1-0
docker tag registry.aliyuncs.com/google_containers/etcd:3.5.1-0 harbor.qlk8s.com/images/etcd:3.5.1-0
docker tag registry.aliyuncs.com/google_containers/coredns:v1.8.6 harbor.qlk8s.com/images/coredns:v1.8.6
docker tag registry.aliyuncs.com/google_containers/pause:3.6 harbor.qlk8s.com/images/pause:3.6
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/flannel/flannel-cni-plugin:v1.1.2 harbor.qlk8s.com/images/flannel-cni-plugin:v1.1.2
docker tag quay.io/coreos/flannel:v0.21.0-amd64 harbor.qlk8s.com/images/flannel/flannel:v0.21.0

上傳鏡像到鏡像倉庫

docker push harbor.qlk8s.com/images/coredns:v1.9.3
docker push harbor.qlk8s.com/images/kube-apiserver:v1.23.6
docker push harbor.qlk8s.com/images/kube-controller-manager:v1.23.6
docker push harbor.qlk8s.com/images/kube-scheduler:v1.23.6
docker push harbor.qlk8s.com/images/kube-proxy:v1.23.6
docker push harbor.qlk8s.com/images/etcd:3.5.1-0
docker push harbor.qlk8s.com/images/pause:3.6
docker push harbor.qlk8s.com/images/flannel-cni-plugin:v1.1.2
docker push harbor.qlk8s.com/images/flannel/flannel:v0.21.0

flannel的鏡像要單獨處理一下,避免運行的時候找不到

登錄每臺待部署的主機

docker pull harbor.qlk8s.com/images/flannel-cni-plugin:v1.1.2
docker tag harbor.qlk8s.com/images/flannel-cni-plugin:v1.1.2 docker.io/flannel/flannel-cni-plugin:v1.1.2
docker pull harbor.qlk8s.com/images/flannel/flannel:v0.21.0
docker tag harbor.qlk8s.com/images/flannel/flannel:v0.21.0 docker.io/flannel/flannel:v0.21.0

master節點搭建

下面開始針對k8s每個節點的搭建

導出并修改配置文件

登錄規劃為節點的master主機,執行如下命令,導出配置文件

kubeadm config print init-defaults > kubeadm-init.yaml

修改kubeadm-init.yaml的幾個參數:

advertiseAddress改為master節點本機ip地址

kubernetesVersion改為1.23.6

imageRespository改為harbor.qlk8s.com/images

執行初始化
kubeadm init --config kubeadm-init.yaml --v=5

注意觀察這一步輸出的日志,如果成功,最下方會有一個類似如下命令的輸出:

kubeadm join x.x.x.x:6443 --token kbkagt.5ylgk5ylzfemzpq7 \--discovery-token-ca-cert-hash sha256:293cb244a8df56a6eb2db9c4c92bcb3af6558e5a522fd79790c80361d8910572 \

記著把這一段kubeadm init輸出的命令保存,后面需要用到

如果這一步失敗,后面需要重做的話,先執行

kubeadm reset -f
權限配置
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/configmkdir /run/flannel
cd /run/flannel
touch subnet.env
vi subnet.env#寫入
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true#重啟服務
systemctl restart kubelet.service
配置flannel組件和網絡

執行如下命令

kubectl apply -f kube-flannel.yml

修改文件/etc/kubernetes/manifests/kube-controller-manager.yaml

其中的spec.containers.command下加入

- --allocate-node-cidrs=true
- --cluster-cidr=10.244.0.0/16

執行生效

kubectl taint nodes --all node-role.kubernetes.io/master-
systemctl restart kubelet.service
完成master配置

使用命令kubectl get pod -A

查看結果,待所有pod為running狀態則為執行成功

如果有pod為pending狀態,注意用kubectl get nodes命令看一下,可能當前master為NotReady狀態了,這時候用journalctl -xefu kubelet看看日志,看看是不是有flannel的鏡像沒有拉下來,如果有的話看看前面的鏡像下載導入部分的操作是否完成

worker節點搭建

登錄每一臺worker節點主機

執行剛才在master完成kubeadm init后取得的join命令

使用命令kubectl get nodes

當節點為ready后代表正常

可以使用label命令修改節點role

kubectl label node qlk8s-master kubernetes.io/role=master --overwrite

到此為止,加入每一臺主機后操作后,k8s集群的基本搭建完成

ingress-nginx安裝

ingress-nginx是k8s的對外服務提供,這里一塊安裝上

選擇版本

版本使用v1.4.0版本,因為ingress與k8s的版本有對應關系,v1.4.0與1.23是可以兼容的

下載配置文件

https://github.com/kubernetes/ingress-nginx/blob/controller-v1.4.0/deploy/static/provider/cloud/deploy.yaml

鏡像下載并導出
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.4.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v20220916-gd32f8c343@sha256:39c5b2e3310dc4264d638ad28d9d1d96c4cbb2b2dcfb52368fe4e3c63f61e10fdocker save -o ingress-nginx.tar registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.4.0 registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v20220916-gd32f8c343@sha256:39c5b2e3310dc4264d638ad28d9d1d96c4cbb2b2dcfb52368fe4e3c63f61e10f
導入鏡像

登錄master主機,先上傳鏡像

docker load -i ingress-nginx.tar

修改并上傳到鏡像倉庫

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.4.0 harbor.qlk8s.com/images/ingress-nginx/controller:v1.4.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v20220916-gd32f8c343@sha256:39c5b2e3310dc4264d638ad28d9d1d96c4cbb2b2dcfb52368fe4e3c63f61e10f harbor.qlk8s.com/images/ingress-nginx/kube-webhook-certgen:v20220916-gd32f8c34docker push harbor.qlk8s.com/images/ingress-nginx/controller:v1.4.0
docker push harbor.qlk8s.com/images/ingress-nginx/kube-webhook-certgen:v20220916-gd32f8c34
修改配置文件

上傳deply.yml文件到master節點

文件中搜索image,修改所有鏡像地址,改成前面配置的harbor.qlk8s.com/images前綴倉庫

把文件中spec:下的4給內容注釋掉

type: LoadBalancerexternalTrafficPolicy:LocalipFamilyPolicy:SingleStackipFamilies:-IPv4

Deployment的ports下面,http和https,下面各增加一個hostPort:端口號,端口號自己定,作為暴露在外的訪問地址

執行安裝

運行如下命令即可

kubectl apply -f deploy.yaml

通過kubectl get all -n ingress-nginx,查看所有狀態正常即為安裝成功

dashboard安裝

作為安裝成功后的一個例子,裝一個dashboard監控看看效果,這里使用2.5.1版

下載文件

下載配置文件https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml

下載鏡像
docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/kubernetesui/dashboard:v2.5.1
docker pull registry.aliyuncs.com/google_containers/metrics-scraper:v1.0.7docker save -o dashboard.tar swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/kubernetesui/dashboard:v2.5.1 registry.aliyuncs.com/google_containers/metrics-scraper:v1.0.7
上傳鏡像到部署環境
docker load -i dashboard.tar
docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/kubernetesui/dashboard:v2.5.1 harbor.qlk8s.com/images/dashboard:v2.5.1
docker tag registry.aliyuncs.com/google_containers/metrics-scraper:v1.0.7 harbor.qlk8s.com/images/metrics-scraper:v1.0.7docker push harbor.qlk8s.com/images/dashboard:v2.5.1
docker push harbor.qlk8s.com/images/metrics-scraper:v1.0.7
修改配置文件

修改recommended.yml里面有關image的內容,改成鏡像倉庫的實際地址

部署dashboard

執行命令

kubectl apply -f recommended.yaml

用kubectl get pod -A 查看pod都running即為成功

授權創建用戶

kubectl create serviceaccount dashboard-admin -nkube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
配置ingress規則

生產證書

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout kube-dashboard.key -out kube-dashboard.crt -subj "/CN=dashboard.qlk8s.com/O=k8s.dashboard.local"kubectl create secret tls dashboard-tls --key kube-dashboard.key --cert kube-dashboard.crt -n kubernetes-dashboard

vi ingress-dashboard.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: dashboard-ingressnamespace: kubernetes-dashboardannotations:nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:ingressClassName: "nginx"tls:- hosts:- dashboard.qlk8s.comsecretName: dashboard-tlsrules:- host: dashboard.qlk8s.comhttp:paths:- path: /pathType: Prefixbackend:   service:name: kubernetes-dashboardport:number: 443

執行策略

kubectl apply -f ingress-dashboard.yaml
訪問

使用kubectl get pod -ningress-nginx,找到ingress controller的pod

使用 kubectl describe pod <pod名稱> -ningress-nginx,找出ingress所在的節點

配置訪問端的hosts,ingress所在主機ip(如果在外網使用浮動ip訪問,應當配置浮動ip)?dashboard.qlk8s.com

訪問測試https://dashboard.qlk8s.com:<端口號>,端口號為之前指定過的hostPort

登錄的是需要使用token,通過如下方式獲取

kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

在界面輸入token,訪問測試成功即完成全部安裝過程

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/85662.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/85662.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/85662.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Pycharm的使用技巧總結

目錄 一、高效便捷的快捷鍵 二、界面漢化處理 1.設置 2.插件 3.漢化插件安裝 三、修改字體大小、顏色 1.選擇文件-設置 2.選擇編輯器-配色方案-python 3.修改注釋行顏色 4.修改編輯器字體顏色 一、高效便捷的快捷鍵 序號快捷鍵功能場景效果1Ctrl /快速注釋/取消注釋…

安全編碼規范與標準:對比與分析及應用案例

在軟件開發領域&#xff0c;尤其是涉及安全關鍵系統的開發中&#xff0c;遵循編碼規范和標準是確保軟件質量和安全性的重要手段。除了CERT C、CERT Java和MISRA外&#xff0c;還有其他多個與安全相關的編碼規范和標準&#xff0c;以下是一些主要標準的對比說明&#xff1a; 一…

FFmpeg學習筆記

1. 播放器的架構 2. 播放器的渲染流程 3. ffmpeg下載與安裝 3.0 查看PC是否已經安裝了ffmpeg ffmpeg 3.1 下載 wget https://ffmpeg.org/releases/ffmpeg-7.0.tar.gz 3.2 解壓 tar zxvf ffmpeg-7.0.tar.gz && cd ./ffmpeg-7.0 3.3 查看配置文件 ./configure …

大寬帶怎么做

我有10個G的寬帶資源&#xff0c;怎樣運行P2P才能將收益巨大化&#xff0c;主要有以下幾種方式&#xff1a; 1.多設備匯聚模式&#xff1a;使用多臺支持千兆網絡的服務器或專用PCDN設備&#xff08;如N1盒子&#xff09;&#xff0c;將10條寬帶分別接入不同設備&#xff0c;通過…

pytorch基本運算-導數和f-string

引言 在前序對機器學習的探究過程中&#xff0c;我們已經深刻體會到人工智能到處都有微分求導運算&#xff0c;相關文章鏈接包括且不限于&#xff1a; BP神經網絡 邏輯回歸 對于pytorch張量&#xff0c;求導運算必不可少&#xff0c;所以本次就專門來學習一下。 f-string的用…

dvwa4——File Inclusion

LOW: 先隨便點開一個文件&#xff0c;可以觀察到url欄變成這樣&#xff0c;說明?page是dvwa當前關卡用來加載文件的參數 http://10.24.8.35/DVWA/vulnerabilities/fi/?pagefile1.php 我們查看源碼 &#xff0c;沒有什么過濾&#xff0c;直接嘗試訪問其他文件 在url欄的pag…

經典面試題:一文了解常見的緩存問題

在面試過程中&#xff0c;面試官的桌子上擺放著很多高頻的面試題&#xff0c;能否順利回答決定了你面試通過的概率。其中緩存問題就是其中的一份&#xff0c;可以說掌握緩存問題及解決方法是面試前必須準備的內容。那么緩存有什么典型的問題&#xff0c;出現的原因是什么&#…

生產環境中安裝和配置 Nginx 以部署 Flask 應用的詳細指南

在生產環境中部署 Flask 應用時&#xff0c;Nginx 常被用作反向代理服務器&#xff0c;與 WSGI 服務器&#xff08;如 Gunicorn&#xff09;協同工作。Nginx 可以處理靜態文件、提供 SSL/TLS 加密、實現負載均衡等功能。本文將詳細介紹如何在 Ubuntu/Debian 系統上安裝 Nginx&a…

鴻蒙進階——Mindspore Lite AI框架源碼解讀之模型加載詳解(一)

文章大綱 引言一、模型加載概述二、核心數據結構三、模型加載核心流程 引言 Mindspore 是一款華為開發開源的AI推理框架&#xff0c;而Mindspore Lite則是華為為了適配在移動終端設備上運行專門定制的版本&#xff0c;使得我們可以在OpenHarmony快速實現模型加載和推理等功能&…

AI煉丹日志-24 - MCP 自動操作 提高模型上下文能力 Cursor + Sequential Thinking Server Memory

點一下關注吧&#xff01;&#xff01;&#xff01;非常感謝&#xff01;&#xff01;持續更新&#xff01;&#xff01;&#xff01; Java篇&#xff1a; MyBatis 更新完畢目前開始更新 Spring&#xff0c;一起深入淺出&#xff01; 大數據篇 300&#xff1a; Hadoop&…

【仿muduo庫實現并發服務器】實現時間輪定時器

實現時間輪定時器 1.時間輪定時器原理2.項目中實現目的3.實現功能3.1構造定時任務類3.2構造時間輪定時器每秒鐘往后移動添加定時任務刷新定時任務取消定時任務 4.完整代碼 1.時間輪定時器原理 時間輪定時器的原理類似于時鐘&#xff0c;比如現在12點&#xff0c;定一個3點的鬧…

Windows10下搭建sftp服務器(附:詳細搭建過程、CMD連接測試、連接失敗問題分析解決等)

最終連接sftp效果 搭建sftp服務器 1、這里附上作者已找好的 freeSSHd安裝包 ,使用它進行搭建sftp服務器。 2、打開freeSSHd安裝包,進行安裝 (1)、選擇完全安裝 (2)、安裝完成后,對提示窗口選擇關閉 (3)、安裝完成后,提示是否安裝私有密鑰。我們選擇"是" (4)、安…

推薦幾個不錯的AI入門學習視頻

引言&#xff1a;昨天推薦了幾本AI入門書&#xff08;AI入門書&#xff09;&#xff0c;反響還不錯。今天&#xff0c;我再推薦幾個不錯的AI學習視頻&#xff0c;希望對大家有幫助。 網上關于AI的學習視頻特別多。有收費的&#xff0c;也有免費的。我今天只推薦免費的。 我們按…

點擊啟動「高效模式」:大騰智能 CAD 重構研發設計生產力

在制造業數字化轉型浪潮中&#xff0c;設計工具的革新正成為企業突破效率瓶頸的關鍵。傳統CAD軟件因本地硬件依賴、協作壁壘高筑、復雜場景響應遲緩等問題&#xff0c;長期困擾設計團隊。 大騰智能CAD依托華為云底座、自研幾何引擎及AI技術深度融合&#xff0c;為制造行業各細…

cursor如何開啟自動運行模式

在Cursor中&#xff0c;開啟自動運行模式即啟用“Yolo Mode”&#xff0c;具體操作如下&#xff1a; 按下Ctrl Shift J&#xff08;Windows/Linux&#xff09;或Cmd Shift J&#xff08;Mac&#xff09;打開Cursor設置。導航到“Features”&#xff08;功能&#xff09;選…

Windows10-ltsc-2019 使用 PowerShell 安裝安裝TranslucentTB教程(不通過微軟商店安裝)

Windows10-ltsc-2019 使用 PowerShell 安裝安裝TranslucentTB教程&#xff08;不通過微軟商店安裝&#xff09; 下載 v2020.4&#xff08;最后一個兼容 1809 的版本&#xff09;&#xff1a; TranslucentTB安裝包(下載不了上面有安裝包)安裝依賴項&#xff08;如未安裝&#x…

分布式拜占庭容錯算法——實現工作量證明(PoW)算法詳解

Java 實現工作量證明&#xff08;PoW&#xff09;算法詳解 一、PoW 核心原理 #mermaid-svg-AAj0Pvst1PVcVy5v {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-AAj0Pvst1PVcVy5v .error-icon{fill:#552222;}#mermaid…

黑馬Java面試筆記之框架篇(Spring、SpringMvc、Springboot)

一. 單例bean Spring框架中的單例bean是線程安全的嗎&#xff1f; Spring框架中的bean是單例的&#xff0c;可以在注解Scope()進行設置 singleton&#xff1a;bean在每一個Spring IOC容器中只有一個實例。prototype&#xff1a;一個bean的定義可以有多個實例 總結 二. AOP AOP稱…

electron下載文件

const http require(http); const https require(https); const fs require(fs); const { URL } require(url); const path require(path);// 下載文件函數 function downloadFile(url, savePath) {return new Promise((resolve, reject) > {try {console.log(開始下載…

快速掌握 GO 之 RabbitMQ 結合 gin+gorm 案例

更多個人筆記見&#xff1a; &#xff08;注意點擊“繼續”&#xff0c;而不是“發現新項目”&#xff09; github個人筆記倉庫 https://github.com/ZHLOVEYY/IT_note gitee 個人筆記倉庫 https://gitee.com/harryhack/it_note 個人學習&#xff0c;學習過程中還會不斷補充&…