【云原生】Kubeadm部署k8s

目錄

一、部署步驟

二、部署kubernetes

2.1、所有節點關閉防火墻 核心防護 iptables規則 swap交換

2.2、修改主機名并添加主機映射

2.3、調整內核參數

三、安裝Docker

3.1、所有節點安裝docker

3.2、所有接點添加鏡像加速器

3.3、開啟docker、并設置開機自啟、查看狀態

四、安裝kubeadm,kubelet和kubectl

4.1、定義kubernetes源

4.2、安裝kubeadm,kubelet和kubectl

4.3、開機自啟kubelet

五、部署K8S集群

5.1、查看初始化需要的鏡像

5.2、初始化kubeadm

5.3、設定kubectl

5.4、所有節點部署網絡插件

5.5、在 node 節點上執行 kubeadm join 命令加入群集并查看狀態

5.6、測試pod創建資源

5.7、暴露端口提供服務

5.8、測試訪問

5.9、擴展3個副本

六、部署 Dashboard

6.1、上傳 相關yaml?文件到 /opt/k8s 目錄中

6.2、創建service account并綁定默認cluster-admin管理員集群角色

七、安裝Harbor私有倉庫

7.1、修改主機名,添加主機名和ip的映射

7.2、安裝Docker20版本

7.2.1 添加鏡像加速器

7.2.2 開啟docker并設為開機自啟

7.3、安裝harbor

7.3.1 準備docker-compose安裝包

7.3.2 準備harbor私有倉庫的安裝包

7.3.3?生成證書、私鑰

7.3.4 啟動Harbor

7.3.5 瀏覽器訪問

7.3.6?在一個node節點上登錄harbor

7.3.7 登錄Harbar上傳鏡像

7.4、安裝ipvsadm

7.4.1?修改調度策略,再去訪問

7.5、瀏覽器訪問

7.6、內核參數優化方案


一、部署步驟

  1. 在所有節點上安裝Docker和kubeadm
  2. 部署Kubernetes Master
  3. 部署容器網絡插件
  4. 部署 Kubernetes Node,將節點加入Kubernetes集群中
  5. 部署 Dashboard Web 頁面,可視化查看Kubernetes資源
  6. 部署 Harbor 私有倉庫,存放鏡像資源

二、部署kubernetes

實驗環境

服務器IP地址主要組件
master192.168.10.100docker / kubeadm / kubelet / kubectl / flannel
node01192.168.10.101docker/kubeadm/kubelet/kubectl/flannel
node02192.168.10.102docker/kubeadm/kubelet/kubectl/flanne
harbor192.168.10.103docker、docker-compose、harbor-offline-v1.2.2

2.1、所有節點關閉防火墻 核心防護 iptables規則 swap交換

以下圖片只展示一個,過程都一樣

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
swapoff -a      ##交換分區必須要關閉
sed -ri 's/.*swap.*/#&/' /etc/fstab      ##永久關閉swap分區,&符號在sed命令中代表上次匹配的結果
for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done   ##加載模塊

2.2、修改主機名并添加主機映射

hostnamectl set-hostname master01
bash
hostnamectl set-hostname node01
bash
hostnamectl set-hostname node02
bashecho "192.168.10.100 master01" >> /etc/hosts
echo "192.168.10.101 node01" >> /etc/hosts
echo "192.168.10.102 node02" >> /etc/hosts
echo "192.168.10.103 hub.hg.com" >> /etc/hosts
cat /etc/hosts

2.3、調整內核參數

cat > /etc/sysctl.d/kubernetes.conf << EOF
#開啟網橋模式,可將網橋的流量傳遞給iptables鏈
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
#關閉ipv6協議
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOF//生效參數
sysctl --system 

三、安裝Docker

3.1、所有節點安裝docker

[root@master01 ~]#yum install -y yum-utils device-mapper-persistent-data lvm2 
[root@master01 ~]#yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
[root@master01 ~]#yum install -y docker-ce docker-ce-cli containerd.io
[root@master01 ~]#mkdir /etc/docker/
[root@master01 ~]#cat > /etc/docker/daemon.json <<EOF{"registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"}}
EOF
[root@master01 ~]#systemctl daemon-reload 
[root@master01 ~]#systemctl restart docker.service 
[root@master01 ~]#systemctl enable docker.service 

3.2、所有接點添加鏡像加速器

cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"}
}
EOF
#使用Systemd管理的Cgroup來進行資源控制與管理,因為相對Cgroupfs而言,Systemd限制CPU、內存等資源更加簡單和成熟穩定。
#日志使用json-file格式類型存儲,大小為100M,保存在/var/log/containers目錄下,方便ELK等日志系統收集和管理日志。

3.3、開啟docker、并設置開機自啟、查看狀態

systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service
systemctl status docker.servicedocker info | grep "Cgroup Driver"
Cgroup Driver: systemd    ##結果

四、安裝kubeadm,kubelet和kubectl

所有節點安裝

4.1、定義kubernetes源

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=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

4.2、安裝kubeadm,kubelet和kubectl

yum install -y kubelet-1.20.11 kubeadm-1.20.11 kubectl-1.20.11

4.3、開機自啟kubelet

systemctl enable kubelet.service

五、部署K8S集群

5.1、查看初始化需要的鏡像

[root@master01 ~]#kubeadm config images list
[root@master01 opt]#unzip v1.20.11.zip -d /opt/k8s/
[root@master01 opt]#cd /opt/k8s/v1.20.11/
[root@master01 v1.20.11]#for i in $(ls *.tar); do docker load -i $i; done
#復制鏡像和腳本到 node 節點,并在 node 節點上執行腳本加載鏡像文件
[root@master01 v1.20.11]#scp -r /opt/k8s/ root@192.168.10.132:/opt/
[root@master01 v1.20.11]#scp -r /opt/k8s/ root@192.168.10.133:/opt/
[root@node01 v1.20.11]# for i in $(ls *.tar); do docker load -i $i; done
[root@node02 v1.20.11]# for i in $(ls *.tar); do docker load -i $i; done

5.2、初始化kubeadm

kubeadm config print init-defaults > /opt/kubeadm-config.yamlvim kubeadm-config.yamladvertiseAddress: 192.168.10.100               ## 12行
kubernetesVersion: v1.20.11                    ## 34行
podSubnet: 10.244.0.0/16                       ## 37行
serviceSubnet: 10.96.0.0/16                    ## 38行
---                                            ## 40行
apiVersion: kubeproxy.config.k8s.io/v1alpha1   ## 41行
kind: KubeProxyConfiguration                   ## 42行
mode: ipvs                                     ## 43行kubeadm init --config=kubeadm-config.yaml --upload-certs | tee kubeadm-init.log
#--experimental-upload-certs 參數可以在后續執行加入節點時自動分發證書文件,K8S V1.16版本開始替換為 --upload-certs
#tee kubeadm-init.log 用以輸出日志  
//查看 kubeadm-init 日志
less kubeadm-init.log//kubernetes配置文件目錄
ls /etc/kubernetes///存放ca等證書和密碼的目錄
ls /etc/kubernetes/pki

5.3、設定kubectl

kubectl需經由API server認證及授權后方能執行相應的管理操作,kubeadm 部署的集群為其生成了一個具有管理員權限的認證配置文件 /etc/kubernetes/admin.conf,它可由 kubectl 通過默認的 “$HOME/.kube/config” 的路徑進行加載。

[root@master01 opt]#mkdir -p $HOME/.kube
[root@master01 opt]#cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master01 opt]#chown $(id -u):$(id -g) $HOME/.kube/config
[root@master01 opt]#kubectl get node
[root@master01 opt]#kubectl get cs
#如果 kubectl get cs 發現集群不健康,更改以下兩個文件
[root@master01 opt]#vim /etc/kubernetes/manifests/kube-scheduler.yaml 
[root@master01 opt]#vim /etc/kubernetes/manifests/kube-controller-manager.yaml 
把httpGet:字段下的hosts由127.0.0.1變成192.168.10.100(有兩處)
#- --port=0					# 搜索port=0,把這一行注釋掉
host: 192.168.10.100        ##修改地址
[root@master01 opt]#systemctl restart kubelet.service 
[root@master01 opt]#kubectl get cs
[root@master01 opt]#kubectl get node

[root@master01 opt]#vim /etc/kubernetes/manifests/kube-scheduler.yaml- --bind-address=192.168.10.100     ## 第16行
#    - --port=0                      ## 第19行
host: 192.168.10.100                 ## 第25行
host: 192.168.10.100                 ## 第39行

[root@master01 opt]#vim /etc/kubernetes/manifests/kube-scheduler.yaml- --bind-address=192.168.10.100     ## 第17行
#    - --port=0                      ## 第26行
host: 192.168.10.100                 ## 第37行
host: 192.168.10.100                 ## 第51行

5.4、所有節點部署網絡插件

cd /opt
unzip kuadmin.zip     ##上傳所需要的壓縮包
解壓
unzip kuadmin.zip
scp flannel-cni-v1.2.0.tar flannel-v0.22.2.tar node01:/opt/   ##拷貝到node01
scp flannel-cni-v1.2.0.tar flannel-v0.22.2.tar node01:/opt/   ##拷貝到node02

[root@master01 opt]#docker load -i flannel-cni-v1.2.0.tar
[root@master01 opt]#docker load -i flannel-v0.22.2.tar
[root@master01 opt]#docker images

[root@master01 opt]#kubectl apply -f kube-flannel.yml
[root@master01 opt]#kubectl get node

5.5、在 node 節點上執行 kubeadm join 命令加入群集并查看狀態

將node節點加進來,

[root@master01 opt]#ls
[root@master01 opt]#cat kubeadm-init.log##node01和node02上面添加
kubeadm join 192.168.10.100:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:3800375b6db6fe668a7812e883ff1dc7ecc405c5ead58d289a6f015b594d1205##master01查看
[root@master01 opt]#kubectl get node
[root@master01 opt]#kubectl get cs
[root@master01 opt]#kubectl get pods -n kube-system
[root@master01 opt]#kubectl get pod -n kube-flannel
[root@master01 opt]#kubectl get pod -n kube-flannel -owide

由于機器的原因,換了三臺,和之前位置相似?

5.6、測試pod創建資源

kubectl create deployment nginx --image=nginx   ##拉取nginx
[root@master01 opt]#kubectl get pod             ##看是否拉取到
[root@master01 opt]#kubectl get pod -owide      ##查看詳細信息[root@master01 opt]#curl 10.244.2.2             ##只能對內訪問,不能訪問

5.7、暴露端口提供服務

[root@master01 opt]#kubectl expose deployment nginx --port=80 --type=NodePort
[root@master01 opt]#kubectl get svc

5.8、測試訪問

192.168.10.103:31606
192.168.10.104:31606

5.9、擴展3個副本

[root@master01 opt]#kubectl scale deployment nginx --replicas=3
[root@master01 opt]#kubectl get pods -o wide

六、部署 Dashboard

6.1、上傳 相關yaml?文件到 /opt/k8s 目錄中

在 master01 節點上操作

在 master01 節點上操作
#上傳 recommended.yaml 文件到 /opt/k8s 目錄中
cd /opt/k8s
vim recommended.yaml
#默認Dashboard只能集群內部訪問,修改Service為NodePort類型,暴露到外部:
kind: Service
apiVersion: v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard
spec:ports:- port: 443targetPort: 8443nodePort: 30001     #添加type: NodePort          #添加selector:k8s-app: kubernetes-dashboard##上傳dashboard.tar metrics-scraper.tar到/opt目錄下##遠程從master拷貝到node節點的/opt下
[root@master01 opt]#scp dashboard.tar metrics-scraper.tar node01:/opt/##master節點執行下面語句
kubectl apply -f recommended.yaml#使用輸出的token登錄Dashboard
https://NodeIP:30001

6.2、創建service account并綁定默認cluster-admin管理員集群角色

#創建service account并綁定默認cluster-admin管理員集群角色
kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

6.3、登錄Dashboard

#使用輸出的token登錄Dashboard
https://NodeIP:30001

無論哪個node的IP地址、因為服務都是運行在node上的

https://192.168.10.104:30001

?

七、安裝Harbor私有倉庫

7.1、修改主機名,添加主機名和ip的映射

#修改主機名
hostnamectl set-hostname hub.hg.com#所有節點加上主機名映射
echo "192.168.10.103 master01" >> /etc/hosts
echo "192.168.10.104 node01" >> /etc/hosts
echo "192.168.10.105 node02" >> /etc/hosts
echo "192.168.10.106 hub.hg.com" >> /etc/hosts
cat /etc/hosts

7.2、安裝Docker20版本

yum install -y yum-utils device-mapper-persistent-data lvm2 
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
yum install -y docker-ce-20.10.18 docker-ce-cli-20.10.18 containerd.iomkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"insecure-registries": ["https://hub.hg.com"]
}
EOFsystemctl start docker
systemctl enable docker

7.2.1 添加鏡像加速器

所有節點都需要修改

vim /etc/docker/daemon.json{"registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"insecure-registries": ["https://hub.hg.com"]
}

7.2.2 開啟docker并設為開機自啟

##首先加載一下,因為前面把每個節點都配置了鏡像加速器
systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service
systemctl status docker.service
##此處就顯示一個界面,其他節點的不展示了

7.3、安裝harbor

7.3.1 準備docker-compose安裝包

[root@hub ~]#cd /usr/local/bin/       
##上傳docker-compose         ##直接將docker-compose上傳到/usr/local/bin/ 
docker-compose
[root@hub bin]#chmod +x docker-compose     ##添加執行權限

7.3.2 準備harbor私有倉庫的安裝包

官網下載地址:http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz
##首先進入/opt,然后將下載好的harbor壓縮包上傳到/opt
##進行解壓
[root@hub opt]#tar xf harbor-offline-installer-v1.2.2.tgz
##將harbor配置文件進行備份
[root@hub harbor]#cp harbor.cfg{,.bak}
##對harbor.cfg配置文件進行修改
[root@hub harbor]#vim harbor.cfg
hostname = reg.hg.com                  ##第5行
ui_url_protocol = https                ##第9行
db_password = root123                  ##第12行
ssl_cert_key = /data/cert/server.key   ##第25行
harbor_admin_password = Harbor12345    ##第59行

7.3.3?生成證書、私鑰

生成證書

make -p /data/cert
cd /data/cert

#生成私鑰

openssl genrsa -des3 -out server.key 2048
##密碼:123456
-------------------------------------------------------------------------------------------
openssl          #這是一個強大的加密庫和工具集,用于處理SSL/TLS協議和相關的加密操作。
genrsa           #openssl的子命令,用于生成 RSA 私鑰。
-des3           #openssl 使用 DES3算法來加密生成的私鑰。
-out server.key  #這個選項指定了輸出文件的名稱,即生成的私鑰將被保存在名為server.key的文件中。
2048             #這個數字指定了RSA密鑰的長度(以位為單位)。

#生成證書簽名請求文件

openssl req -new -key server.key -out server.csr
=========================================================================================
req #用于處理與證書簽名請求(CSR)和私鑰相關的任務。
-new #這個選項指示OpenSSL創建一個新的證書簽名請求。
-key server.key #指定用于生成CSR的私鑰文件的路徑
-out server.csr #指定生成的CSR文件的輸出路徑。
=========================================================================================
-----------------------------------------------------------------------------------------
輸入私鑰密碼:123456
輸入國家名:CN
輸入省名:BJ
輸入市名:BJ
輸入組織名:HG
輸入機構名:HG
輸入域名:hub.hg.com
輸入管理員郵箱:admin@hg.com
其它全部直接回車
-----------------------------------------------------------------------------------------
#備份私鑰
cp server.key server.key.org#清除私鑰密碼
openssl rsa -in server.key.org -out server.key
輸入私鑰密碼:123456#簽名證書
openssl x509 -req -days 1000 -in server.csr -signkey server.key -out server.crtchmod +x /data/cert/*cd /opt/harbor/
./install.sh

備份私鑰

cp server.key server.key.org

清除私鑰密碼

openssl rsa -in server.key.org -out server.key

簽名證書

openssl x509 -req -days 1000 -in server.csr -signkey server.key -out server.crt
===========================================================================================
openssl x509          #這是OpenSSL的一個子命令,用于處理X.509證書。
-req                  #指示OpenSSL從一個CSR文件中讀取請求信息。
-days 1000            #設置證書的有效期為1000天。這意味著證書將在 1000 天后過期。
-in server.csr        #指定CSR文件的輸入路徑
-signkey server.key   #使用指定的私鑰(server.key)對CSR進行簽名,生成證書。
-out server.crt       #指定輸出的證書文件路徑。在這個例子中,證書文件將被保存為server.crt
===========================================================================================chmod +x /data/cert/*

7.3.4 啟動Harbor

[root@hub cert]#cd  /opt/harbor/
[root@hub harbor]#./install.sh 
#執行命令 ./install.sh 以 pull 鏡像并啟動容器#運行./install.sh時,這個腳本會執行一系列的步驟來配置和啟動Harbor服務。這些步驟可能包括:
#檢查和準備安裝環境(如檢查必要的依賴項、配置文件等)。
#生成或驗證 Harbor 的配置文件(通常是 harbor.yml)。
#創建必要的數據目錄和文件。
#初始化數據庫(如果使用了數據庫存儲)。
#啟動 Harbor 的各個組件(如 core、registry、portal、jobservice 等)

7.3.5 瀏覽器訪問

添加主機映射
在本地使用火狐瀏覽器訪問:https://hub.hg.com
點擊高級--->添加例外---->確認安全例外用戶密碼登錄,默認為:用戶名:admin
密碼:Harbor12345

7.3.6?在一個node節點上登錄harbor

docker login -u admin -p Harbor12345 https://hub.hg.com

7.3.7 登錄Harbar上傳鏡像

在node01節點操作

?##上傳鏡像
docker tag nginx:latest hub.hg.com/library/nginx:v1
docker push hub.hg.com/library/nginx:v1

在master節點上刪除之前創建的nginx資源

kubectl delete deployment nginx
kubectl create deployment nginx-deployment --image=hub.hg.com/library/nginx:v1 --port=80 --replicas=3
kubectl expose deployment nginx-deployment --port=30000 --target-port=80
kubectl get svc,pods
kubectl get svc,pods -owide

訪問驗證

curl 10.244.1.7

7.4、安裝ipvsadm

[root@master01 k8s]#yum -y install ipvsadm.x86_64
[root@master01 k8s]#ipvsadm -Ln
[root@master01 k8s]#curl 10.96.30.170:30000

7.4.1?修改調度策略,再去訪問

kubectl edit svc nginx-deployment
25   type: NodePort                        #把調度策略改成NodePort[root@master01 k8s]#kubectl get svc
NAME               TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)           AGE
kubernetes         ClusterIP   10.96.0.1       <none>        443/TCP           2d3h
nginx              NodePort    10.96.169.156   <none>        80:31606/TCP      2d3h
nginx-deployment   NodePort    10.96.30.170    <none>        30000:31973/TCP   10h
[root@master01 k8s]#

7.5、瀏覽器訪問

瀏覽器訪問:http://192.168.10.103:31973/
http://192.168.10.104:31973/
http://192.168.10.105:31973/

#將cluster-admin角色權限授予用戶system:anonymous
kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous

7.6、內核參數優化方案

cat > /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0									#禁止使用 swap 空間,只有當系統內存不足(OOM)時才允許使用它
vm.overcommit_memory=1							#不檢查物理內存是否夠用
vm.panic_on_oom=0								#開啟 OOM
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963							#指定最大文件句柄數
fs.nr_open=52706963								#僅4.4以上版本支持
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF

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

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

相關文章

ESP32學習筆記:WS2812B驅動

WS2812B是一款貼片RGB燈。由于采用了單總線通訊&#xff0c;所以需要特別關注下它的通訊時序。 調試細節&#xff1a; 本來以為會是一個比較簡單的調試&#xff0c;結果還是花了很長時間才調試完成。 首先是關于ESP32的納秒級延時確定&#xff0c;當時按照空指令始終調試不出來…

Linux中的計劃任務(crontab)詳解

&#x1f407;明明跟你說過&#xff1a;個人主頁 &#x1f3c5;個人專欄&#xff1a;《Linux &#xff1a;從菜鳥到飛鳥的逆襲》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目錄 一、前言 1、Linux的起源與發展 2、什么是計劃任務&#xf…

超詳細的前后端實戰項目(Spring系列加上vue3)(一步步實現+源碼)前端篇(一)

最近想著一步步搭建一個前后端項目&#xff0c;將每一步詳細的做出來。&#xff08;如果有不足或者建議&#xff0c;也希望大佬們指出哦&#xff09; 前端初始化 1.根據vue腳手架創建vue項目 這里可以用很多方法創建vue項目&#xff0c;大家看著創建吧&#xff0c;只要能創建…

k8s 部署mqtt簡介

在Kubernetes&#xff08;K8s&#xff09;中部署MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;服務通常涉及以下幾個步驟&#xff1a; 選擇MQTT Broker MQTT Broker是MQTT消息傳遞的中間件。流行的MQTT Broker包括Mosquitto, HiveMQ, EMQ X等。你需要選擇一…

機器學習面試問題總結 | 貝葉斯網絡

本文給大家帶來的百面算法工程師是機器學習中貝葉斯網路面試總結&#xff0c;文章內總結了常見的提問問題&#xff0c;旨在為廣大學子模擬出更貼合實際的面試問答場景。在這篇文章中&#xff0c;我們還將介紹一些常見的面試問題&#xff0c;并提供參考的回答及其理論基礎&#…

K8S Secret管理之SealedSecrets

1 關于K8S Secret 我們通常將應用程序使用的密碼、API密鑰保存在K8S Secret中&#xff0c;然后應用去引用。對于這些敏感信息&#xff0c;安全性是至關重要的&#xff0c;而傳統的存儲方式可能會導致密鑰在存儲、傳輸或使用過程中受到威脅&#xff0c;例如在git中明文存儲密碼…

FreeRTOS_事件組_學習筆記

事件組 原文鏈接 事件組是一個整數&#xff0c;其中的高8位留給內核&#xff0c;只能用其他位來表示時間 每一位代表一個事件&#xff0c;且每個時間的含義由程序員決定 1為發生&#xff0c;0為未發生 一個/多個任務或ISR都能讀寫這些位 可以等待某一位&#xff0c;也可以等待…

如何理解合約中的引用類型(3)——Mapping

映射&#xff08;mapping&#xff09; 聲明形式&#xff1a;mapping(key type > value type)keytype可以是除枚舉外的幾乎任何基本類型&#xff0c;包括bytes和string&#xff0c;不包括用戶自定義的復雜類型-合約&#xff0c;枚舉&#xff0c;結構&#xff0c;映射value t…

簡單美觀易上手的 Docker Compose 可視化管理器 Dockge

本文首發于只抄博客&#xff0c;歡迎點擊原文鏈接了解更多內容。 前言 Dockge 是 Uptime Kuma 作者的新作品&#xff0c;因此 UI 風格與 Uptime Kuma 基本一致&#xff0c;如果你正在使用 Uptime Kuma 的話&#xff0c;那么 Dockge 的 UI 設計應該也不會讓你失望。Dockge 主打…

智慧校園為高校帶來哪些價值

在21世紀的教育圖景中&#xff0c;"智慧"不再僅僅是一個科技名詞&#xff0c;它已成為衡量教育現代化水平的重要標志。智慧校園&#xff0c;這一融合了物聯網、大數據、云計算等先進技術的教育新形態&#xff0c;正逐步成為高校轉型升級的關鍵驅動力。本文將從多個維…

note-網絡是怎樣連接的2 協議棧和網卡

助記提要 協議棧的結構協議棧創建連接的實際過程協議棧發送數據包的2個判斷依據TCP確認數據收到的原理斷開連接的過程路由表和ARPMAC地址的分配MAC模塊的工作通過電信號讀取數據的原理網卡和協議棧接收包的過程ICMPUDP協議的適用場景 2章 用電信號傳輸TCP/IP數據 探索協議棧和…

BUUCTF靶場 [reverse]easyre、reverse1、reverse2

工具&#xff1a; DIE&#xff1a;下載&#xff1a;https://download.csdn.net/download/m0_73981089/89334360 IDA&#xff1a;下載&#xff1a;https://hex-rays.com/ida-free/ 新手小白勇闖逆向區&#xff01;&#xff01;&#xff01; [reverse]easyre 首先查殼&#xf…

如何理解HTML語義化

如何理解HTML語義化 HTML語義化&#xff0c;簡單來說&#xff0c;就是使用HTML標簽來清晰地表達頁面內容的結構和意義&#xff0c;而不僅僅是作為布局的容器。它強調使用具有明確含義的HTML標簽來描述頁面元素&#xff0c;而不是僅僅依賴CSS來實現頁面的外觀和布局。 理解HTM…

android 權限相關定義解釋

1 PID &#xff1a;程序一運行系統就會自動分配給進程一個獨一無二的PID&#xff0c;內部線程可以共享 該pid的分配的內存數據 2 UID&#xff1a;User Identifier,UID在linux中就是用戶的ID&#xff0c;表明時哪個用戶運行了這個程序&#xff0c;主要用于權限的管理。內部共享各…

【oracle003】圖片轉為字節、base64編碼等形式批量插入oracle數據庫并查詢

1.熟悉、梳理、總結下Oracle相關知識體系 2.歡迎批評指正&#xff0c;跪謝一鍵三連&#xff01; 資源下載&#xff1a; oci.dll、oraocci11.dll、oraociei11.dll3個資源文件資源下載&#xff1a; Instant Client Setup.exe資源下載&#xff1a; oci.dll、oraocci11.dll、oraoc…

Vue ref訪問這些元素或組件的實例

可以在任意DOM元素上使用ref屬性&#xff0c;然后在Vue實例中通過this.$refs訪問這個DOM元素 1.訪問子組件實例&#xff0c;可以調用方法或者獲取值 <template><div><input type"text" ref"myInput" /><button click"focusInp…

ubuntu手動替換源后,更新源時提示“倉庫.... jammy Release“ 沒有Release文件

問題如圖所示&#xff0c;由于問題不好定位&#xff0c;我就從替換源&#xff0c;以及解決錯誤提示這兩個步驟&#xff0c;來解決其中可能存在的問題。 1、替換源 這一步驟&#xff0c;網上的資料可以搜到很多&#xff0c;我跟著做了之后&#xff0c;總會冒出來各種各樣的小問…

皮影戲藝術品3D沉浸式展館提供非同一般的趣味體驗

引領藝術展示的未來&#xff0c;深圳華銳視點融合多年的web3d項目制作經驗&#xff0c;傾力打造3D虛擬藝術品展館在線編輯平臺&#xff0c;為您提供一個超越時空限制的線上藝術展示平臺。 一、極致視覺盛宴 我們擁有領先的美術團隊&#xff0c;運用先進的web3D開發技術&#xf…

可能是最適合PS的AI插件,設計師大救星!StartAI初體驗!不是恰飯

這款軟件雖然有一些功能需要完善&#xff0c;比如&#xff1a; 1&#xff1a;生成圖片產品海報&#xff0c;會出現圖隨意出現&#xff0c;跟設計圖起沖突&#xff0c;需要PS才可以正常使用它。 2&#xff1a;即使開會員也需要排隊生成。 3: 還有&#xff0c;會員沒有更加好用的…

vue3結合element-plus之如何優雅的使用表單組件

背景 在日常開發中,我們會經常使用 element-ui 或者是 antdesign 或者是 element-plus 等組件庫實現搜索功能 這里就需要用到相關表單組件 下面就以 element-plus 為例,我們實現一個搜索功能的組件,并且隨著屏幕尺寸的變化,其布局也會跟隨變化 最終大致效果如下: 這里…