K8s:二進制安裝k8s(單臺master)

目錄

一、安裝k8s

1、拓撲圖

2、系統初始化配置

2.1關閉防火墻selinx以及swap

2.2設置主機名

2.3在每臺主機中添加hosts,做映射

2.4調整內核參數,將橋接的ipv4流量傳遞到iptables,關閉ipv6

2.4時間同步

3、部署docker引擎(兩個node節點執行)

4、部署etcd集群

4.1在master01節點操作

4.2生成etcd證書,上傳etcd-cert.sh 和 etcd.sh 到 /opt/k8s/ 目錄中

4.3創建用于生成CA證書,etcd服務器證書以及私鑰的目錄

4.4上傳 etcd-v3.4.9-linux-amd64.tar.gz 到 /opt/k8s 目錄中,啟動etcd服務

4.5創建用于存放etcd配置文件,命令文件,證書的目錄

4.6把etcd相關證書文件、命令文件和服務管理文件全部拷貝到另外兩個etcd集群節點

4.7在node1節點操作(node2同樣)

4.8啟動etcd,并檢查etcd集群狀態

5、master部署組件

6、部署worker node組件

6.1在所有 node 節點上操作創建kubernetes工作目錄

6.2上傳 node.zip 到 /opt 目錄中,解壓 node.zip 壓縮包,獲得kubelet.sh、prox

6.3在master01節點上操作把 kubelet、kube-proxy 拷貝到 node 節點

6.4上傳kubeconfig.sh文件到/opt/k8s/kubeconfig目錄中,生成kubelet初次加入集群引導kubeconfig文件和kube-proxy.kubeconfig文件#kubeconfig 文件包含集群參數(CA 證書、API Server 地址),客戶端參數(上面生成的證書和私鑰),集群 context 上下文參數(集群名稱、用戶名)。Kubenetes 組件(如 kubelet、kube-proxy)通過啟動時指定不同的 kubeconfig 文件可以切換到不同的集群,連接到 apiserver。

6.5把配置文件 bootstrap.kubeconfig、kube-proxy.kubeconfig 拷貝到 node 節點

6.6RBAC授權,使用戶 kubelet-bootstrap 能夠有權限發起 CSR 請求證書

7、在node01節點上操作

7.1啟動kubelet

7.2在 master01 節點上操作,通過 CSR 請求檢查到 node01 節點的 kubelet 發起的 CSR 請求,Pending 表示等待集群給該節點簽發證書

7.3通過 CSR 請求

7.4查看節點,由于網絡插件還沒有部署,節點會沒有準備就緒 NotReady

7.5在 node01 節點上操作加載 ip_vs 模塊?啟動proxy服務


一、安裝k8s

1、拓撲圖

2、系統初始化配置

#所有節點執行
systemctl stop firewalld
systemctl disable firewalld
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
#永久關閉firewalld并清空iptables所有表規則
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab 
#永久關閉selinux和swap分區
#三個節點分開執行
hostnamectl set-hostname master01
#192.168.170.111的master上執行修改主機名
hostnamectl set-hostname node01
#192.168.170.113的node1上執行修改主機名
hostnamectl set-hostname node02
#192.168.170.114的node2上執行修改主機名
#所有節點執行
bash
#刷新bash使得修改的主機名生效
cat >> /etc/hosts << EOF
192.168.170.111 master01
192.168.170.113 node1
192.168.170.114 node2
EOF
#使用多行重定向將主機名對應的ip寫到hosts里面加快訪問速度,注意改為自己的ip
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOF
#使用多行重定向調整內核參數,前2行為開啟網橋模式后2行為關閉ipv6協議和開啟路由轉發
sysctl --system
#加載內核使得配置內核參數生效
yum install ntpdate -y
ntpdate time.windows.com
#安裝ntpdate時間同步程序,并與本機的windows同步時間
2.1關閉防火墻selinx以及swap

2.2設置主機名

2.3在每臺主機中添加hosts,做映射

2.4調整內核參數,將橋接的ipv4流量傳遞到iptables,關閉ipv6

2.4時間同步

3、部署docker引擎(兩個node節點執行)

#2個node節點執行
yum install -y yum-utils device-mapper-persistent-data lvm2
#安裝依賴包以便在系統上安裝docker
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
#添加Docker官方源,并將它設置為docker-ce.repo文件
yum install -y docker-ce docker-ce-cli containerd.io
#yum安裝docker-ce和docker客戶端以及容器io
systemctl start docker.service
systemctl enable docker.service
#開機自啟并現在啟動docker

4、部署etcd集群

#master節點操作,#本文的所有需要上傳資源在博客資源包中K8S壓縮包中均有
cd /usr/local/bin
chmod +x /usr/local/bin/cfssl*
#將cfssl證書簽發的工具和命令(cfssl、cfssljson、cfssl-certinfo)上傳到/usr/local/bin目錄下并添加執行權限
#本文的cfssl工具在博客資源包中K8S壓縮包中有
#cfssl:證書簽發的工具命令
#cfssljson:將 cfssl 生成的證書(json格式)變為文件承載式證書
#cfssl-certinfo:驗證證書的信息
#cfssl-certinfo -cert <證書名稱>			#查看證書的信息
mkdir /opt/k8s
cd /opt/k8s/
#上傳 etcd-cert.sh(生成證書腳本) 和 etcd.sh(創建etcd集群腳本) 到 /opt/k8s/ 目錄中
chmod +x etcd-cert.sh etcd.sh
#添加可執行權限
mkdir /opt/k8s/etcd-cert
#創建etcd-cert目錄用于存放etcd的證書
mv etcd-cert.sh /opt/k8s/etcd-cert
#移動生成證書的腳本到存放etcd證書的目錄下
vim /opt/k8s/etcd-cert/etcd-cert.sh
#此腳本ip需要修改80到82行master,node1,node2順序保存退出
vim  ./etcd-cert.sh           
#修改腳本中的ip為自己的ip
./etcd-cert.sh			
#生成CA證書、etcd 服務器證書以及私鑰
ls  /opt/k8s/etcd-cert
#查看生成的證書是否為4個.pem結尾3個.json結尾
#上傳 etcd-v3.4.9-linux-amd64.tar.gz(etcd程序命令及證書) 到 /opt/k8s 目錄中,啟動etcd服務
cd /opt/k8s/
tar zxvf etcd-v3.4.9-linux-amd64.tar.gz
ls etcd-v3.4.9-linux-amd64
#解壓上傳的etcd包,內容為3個.md文件一個目錄,一個etcd和一個etcdctl啟動控制腳本
mkdir -p /opt/etcd/{cfg,bin,ssl}
#創建用于存放etcd配置文件,命令文件,證書的目錄
cd /opt/k8s/etcd-v3.4.9-linux-amd64
#進入解壓的etcd包中
mv etcd etcdctl /opt/etcd/bin/
#將etcd啟動和etcdctl控制腳本移動到創建的用于存放etcd命令文件的bin目錄下
cd  /opt/k8s/etcd-cert
#進入創建etcd證書的目錄
cp  ./*.pem   /opt/etcd/ssl
#將本目錄下所有證書全部拷貝一份到創建的用于存放etcd證書的路徑ssl上
cd /opt/k8s
./etcd.sh etcd01 192.168.170.111 etcd02=https://192.168.170.113:2380,etcd03=https://192.168.170.114:2380
#進入存放etcd.sh部署etcd集群的腳本目錄執行etcd.sh腳本 后面跟三個etcd集群的ip注意格式,進入卡住狀態等待其他節點加入,這里需要三臺etcd服務同時啟動,如果只啟動其中一臺后,服務會卡在那里,直到集群中所有etcd節點都已啟動,先操作不然不會生成system管理和配置文件,重新開啟一個shell查看etcd狀態
#另一個窗口執行
ps -ef | grep etcd
#查看etcd集群狀態是否為自己的三個etcd  ip
scp -r /opt/etcd/ root@192.168.170.113:/opt/
scp -r /opt/etcd/ root@192.168.170.114:/opt/
scp /usr/lib/systemd/system/etcd.service root@192.168.170.113:/usr/lib/systemd/system/
scp /usr/lib/systemd/system/etcd.service root@192.168.170.114:/usr/lib/systemd/system/
#把etcd相關證書文件、命令文件和服務管理文件全部拷貝到另外兩個etcd集群節點
#node1節點執行
vim /opt/etcd/cfg/etcd
#修改scp過來的etcd配置文件
#[Member]
ETCD_NAME="etcd02"											#修改為etcd02
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.170.113:2380"			#修改為node1的ip地址
ETCD_LISTEN_CLIENT_URLS="https://192.168.170.113:2379"		#修改為node1的ip地址
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.170.113:2380"		#修改為node1的ip地址
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.170.113:2379"				#修改為node1的ip地址
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.170.111:2380,etcd02=https://192.168.170.113:2380,etcd03=https://192.168.170.114:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
#node2節點執行
vim /opt/etcd/cfg/etcd
#修改scp過來的etcd配置文件
#[Member]
ETCD_NAME="etcd03"											#修改為etcd03
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.170.114:2380"			#修改為node1的ip地址
ETCD_LISTEN_CLIENT_URLS="https://192.168.170.114:2379"		#修改為node1的ip地址
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.170.114:2380"		#修改為node1的ip地址
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.170.114:2379"				#修改為node1的ip地址
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.170.111:2380,etcd02=https://192.168.170.113:2380,etcd03=https://192.168.170.114:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
#master節點執行
cd /opt/k8s
./etcd.sh etcd01 192.168.170.111 etcd02=https://192.168.170.113:2380,etcd03=https://192.168.170.114:2380
#重新啟動etcd集群
#node1 node2執行
systemctl enable --now etcd
#設置開機啟動并立即啟動etcd,然后回到master上查看是否成功。不是一直前臺運行狀態即成功
#master執行:
ETCDCTL_API=3   /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.170.111:2379,https://192.168.170.113:2379,https://192.168.170.114:2379" endpoint health --write-out=table
#檢查集群監控狀態,health全部未true即可
ETCDCTL_API=3   /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.170.111:2379,https://192.168.170.113:2379,https://192.168.170.114:2379" endpoint status  --write-out=table
#檢查集群狀態,有一個is  leader為true即可
ETCDCTL_API=3   /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.m --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.170.114:2379" --write-out=table member list
##查看etcd集群成員列表
4.1在master01節點操作

4.2生成etcd證書,上傳etcd-cert.sh 和 etcd.sh 到 /opt/k8s/ 目錄中

4.3創建用于生成CA證書,etcd服務器證書以及私鑰的目錄

4.4上傳 etcd-v3.4.9-linux-amd64.tar.gz 到 /opt/k8s 目錄中,啟動etcd服務

4.5創建用于存放etcd配置文件,命令文件,證書的目錄

注意:進入卡住狀態等待其他節點加入,這里需要三臺etcd服務同時啟動,如果只啟動其中一臺后,服務會卡在那里,直到集群中所有etcd節點都已啟動,可忽略這個情況

可以開啟另外一個窗口來查看etcd進程是否正常

4.6把etcd相關證書文件、命令文件和服務管理文件全部拷貝到另外兩個etcd集群節點

4.7在node1節點操作(node2同樣)

4.8啟動etcd,并檢查etcd集群狀態

5、master部署組件

//在 master01 節點上操作
#上傳 master.zip(master組件) 和 k8s-cert.sh(證書) 到 /opt/k8s 目錄中,解壓 master.zip 壓縮包
cd /opt/k8s/
unzip master.zip
cd  master 
chmod +x *.sh
mv *  /opt/k8s
#解壓master組件包,里面有master的4個組件腳本,添加權限移動到/opt/k8s文件夾中
mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}
#創建kubernetes工作目錄
mkdir /opt/k8s/k8s-cert
#創建k8s的證書存放路徑
mv /opt/k8s/k8s-cert.sh /opt/k8s/k8s-cert
#將k8s證書移動到創建的k8s的證書存放路徑
cd /opt/k8s/k8s-cert/
vim /opt/k8s/k8s-cert/k8s-cert.sh 
#修改腳本中的ip56-60行順序是第一個為master、第二個為master高可用ip、第三個為master虛擬ip、第四load balancer01(master)第五為load balancer01(backup)。第四第五可以刪除。單節點master不用,若后面需要做集群需要提前規劃好ip
chmod +x k8s-cert.sh	
./k8s-cert.sh				
#生成CA證書、相關組件的證書和私鑰
ls *pem
#顯示生成的證書等一共8個.pem結尾
cp ca*pem apiserver*pem /opt/kubernetes/ssl/
#將ca證書和apiserver證書拷貝到創建的存放證書的ssl/目錄下
cd /opt/k8s/
tar zxvf kubernetes-server-linux-amd64.tar.gz
#上傳 kubernetes-server-linux-amd64.tar.gz 到 /opt/k8s/ 目錄中,解壓 kubernetes 壓縮包
cd /opt/k8s/kubernetes/server/bin
#進入解壓后的k8s的bin目錄中將4個組件拷貝到創建的k8s存放bin文件的路徑下
cp kube-apiserver kubectl kube-controller-manager kube-scheduler /opt/kubernetes/bin/
cp /opt/kubernetes/bin/* /usr/local/bin/
#將腳本程序存放到 /usr/local/bin下可以全局使用4個命令
cd /opt/k8s/
vim token.sh
[腳本內容]
#!/bin/bash
#獲取隨機數前16個字節內容,以十六進制格式輸出,并刪除其中空格
BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ')
#生成 token.csv 文件,按照 Token序列號,用戶名,UID,用戶組 的格式生成
cat > /opt/kubernetes/cfg/token.csv <<EOF
${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"
EOF
#保存后退出
chmod +x token.sh
./token.sh
cat /opt/kubernetes/cfg/token.csv
#創建 bootstrap token 認證文件,apiserver 啟動時會調用,然后就相當于在集群內創建了一個這個用戶,接下來就可以用 RBAC 給他授權,查看是否生成了csv文件
cd /opt/k8s/
./apiserver.sh 192.168.170.111 https://192.168.30.11:2379,https://192.168.170.113:2379,https://192.168.170.114:2379
#二進制文件、token、證書都準備好后,開啟 apiserver 服務
ps aux | grep kube-apiserver
#檢查進程是否啟動成功,過濾kube-apiserver最上面一個后面會有-etcd-servers=https://192.168.170.111:2379,https://192.168.170.113:2379,https://192.168.170.114:2379 --bind-address=192.168.170.111 --secure-port=6443此信息為正常,注意ip要改為自己的ip地址
netstat -natp | grep 6443
#過濾端口只有監控本機ip的6443為正常
cd /opt/k8s/
vim  scheduler.sh      
#修改腳本ip。KUBE_APISERVER="https://192.168.170.111:6443"為自己的apiserver的ip地址本文是master地址
./scheduler.sh
ps aux | grep kube-scheduler
#運行shceduler組件腳本,查看服務是否正常
vim controller-manager.sh  
#修改ipKUBE_APISERVER="https://192.168.170.111:6443"為自己的apiserver的ip地址本文是master地址
./controller-manager.sh
ps aux | grep kube-controller-manager
#運行controller-manager.sh組件腳本,查看服務是否正常
vim ./admin.sh
#修改ipKUBE_APISERVER="https://192.168.170.111:6443"為自己的apiserver的ip地址本文是master地址
./admin.sh
#生成kubectl連接集群的kubeconfig文件
kubectl get cs
#通過kubectl工具查看當前集群組件狀態,正常狀態如下
kubectl get cs
NAME                 STATUS    MESSAGE             ERROR
controller-manager   Healthy   ok                  
scheduler            Healthy   ok                  
etcd-2               Healthy   {"health":"true"}   
etcd-1               Healthy   {"health":"true"}   
etcd-0               Healthy   {"health":"true"} 
kubectl version
#查看版本信息

上傳 kubernetes-server-linux-amd64.tar.gz 到 /opt/k8s/ 目錄中,解壓 kubernetes 壓縮包

復制master組件的關鍵命令文件到 kubernetes工作目錄的 bin 子目錄中

創建 bootstrap token 認證文件,apiserver 啟動時會調用,然后就相當于在集群內創建了一個這個用戶,接下來就可以用 RBAC 給他授權

二進制文件、token、證書都準備好后,開啟 apiserver 服務

#啟動 scheduler 服務

#啟動 controller-manager 服務

#生成kubectl連接集群的kubeconfig文件

6、部署worker node組件

#node1執行
mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}
#創建kubernetes工作目錄
cd /opt/
unzip node.zip
#上傳 node.zip 到 /opt 目錄中,解壓 node.zip 壓縮包,獲得kubelet.sh、proxy.shchmod +x kubelet.sh proxy.sh
#master執行
cd /opt/k8s/kubernetes/server/bin
scp kubelet kube-proxy root@192.168.30.12:/opt/kubernetes/bin/
#把 kubelet、kube-proxy 節點的組件拷貝到 node1 節點
mkdir /opt/k8s/kubeconfig
cd /opt/k8s/kubeconfig
chmod +x kubeconfig.sh
vim kubeconfig.sh 
./kubeconfig.sh 192.168.170.111 /opt/k8s/k8s-cert/
#上傳kubeconfig.sh文件到/opt/k8s/kubeconfig目錄中,生成kubelet初次加入集群引導kubeconfig文件和kube-proxy.kubeconfig文件
scp bootstrap.kubeconfig kube-proxy.kubeconfig root@192.168.170.113:/opt/kubernetes/cfg/
#把配置文件 bootstrap.kubeconfig、kube-proxy.kubeconfig 2個授權文件拷貝到 node1 節點
kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap
#RBAC授權,使用戶 kubelet-bootstrap 能夠有權限發起 CSR 請求證書
kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous
#若執行失敗,可先給kubectl綁定默認cluster-admin管理員集群角色,授權集群操作權限
##node1節點執行
cd /opt/
./kubelet.sh 192.168.170.113
ps aux | grep kubelet
#node1節點執行kubelet安裝腳步,注意要寫node1節點的ip地址,查看kubelet服務是否正常運行
#在 master01 節點上操作,通過 CSR 請求
kubectl get csr
#可以查看有誰發起請求Pending 表示等待集群給該節點簽發證書,查看的內容如下
NAME                                                   AGE   SIGNERNAME                                    REQUESTOR           CONDITION
node-csr-saZodXI7_rtwU6VJGMB1UKPx8sHUsAonx4l1BKJRXOo   53m   kubernetes.io/kube-apiserver-client-kubelet   kubelet-bootstrap   Pendingkubectl certificate approve node-csr-saZodXI7_rtwU6VJGMB1UKPx8sHUsAonx4l1BKJRXOo
#執行命令授權csr請求并簽發證書
kubectl get csr
#再次查看請求的csr狀態Approved,Issued 表示已授權 CSR 請求并簽發證書
kubectl get node
#查看節點,狀態為NotReady 由于網絡插件還沒部署
NAME            STATUS     ROLES    AGE    VERSION
192.168.170.113   NotReady   <none>   108s   v1.20.11
6.1在所有 node 節點上操作創建kubernetes工作目錄

6.2上傳 node.zip 到 /opt 目錄中,解壓 node.zip 壓縮包,獲得kubelet.sh、prox

6.3在master01節點上操作把 kubelet、kube-proxy 拷貝到 node 節點

6.4上傳kubeconfig.sh文件到/opt/k8s/kubeconfig目錄中,生成kubelet初次加入集群引導kubeconfig文件和kube-proxy.kubeconfig文件
#kubeconfig 文件包含集群參數(CA 證書、API Server 地址),客戶端參數(上面生成的證書和私鑰),集群 context 上下文參數(集群名稱、用戶名)。Kubenetes 組件(如 kubelet、kube-proxy)通過啟動時指定不同的 kubeconfig 文件可以切換到不同的集群,連接到 apiserver。

6.5把配置文件 bootstrap.kubeconfig、kube-proxy.kubeconfig 拷貝到 node 節點

6.6RBAC授權,使用戶 kubelet-bootstrap 能夠有權限發起 CSR 請求證書

7、在node01節點上操作

7.1啟動kubelet

7.2在 master01 節點上操作,通過 CSR 請求檢查到 node01 節點的 kubelet 發起的 CSR 請求,Pending 表示等待集群給該節點簽發證書

7.3通過 CSR 請求

7.4查看節點,由于網絡插件還沒有部署,節點會沒有準備就緒 NotReady

7.5在 node01 節點上操作加載 ip_vs 模塊?啟動proxy服務

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

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

相關文章

使用LangChain和Neo4j快速創建RAG應用

大家好&#xff0c;Neo4j 通過集成原生的向量搜索功能&#xff0c;增強了其對檢索增強生成&#xff08;RAG&#xff09;應用的支持&#xff0c;這標志著一個重要的里程碑。這項新功能通過向量索引搜索處理非結構化文本&#xff0c;增強了 Neo4j 在存儲和分析結構化數據方面的現…

go語言map底層及擴容機制原理詳解(上)

底層數據結構-哈希表 go語言map的底層數據結構是哈希表&#xff1a;通過哈希表來存儲鍵值對&#xff0c;通過hash函數把鍵值對散列到一個個桶(bucket)中。 什么是哈希表&#xff1f; 在順序結構以及平衡樹中&#xff0c;元素與其的存儲位置之間沒有對應關系&#xff0c;因此…

SwiftUI中的@StateObject和@ObservedObject的區別

SwiftUI中的StateObject和ObservedObject屬性包裝器指示視圖更新以響應被觀察對象的變化。雖然這兩個屬性包裝器看起來很相似&#xff0c;但在使用SwiftUI構建應用程序時&#xff0c;有一個關鍵的區別需要理解。 兩個屬性包裝器都要求對象符合ObservableObject協議。這個協議表…

表征和基于結構的蛋白質工程:黃芪特異性皂苷乙酰轉移酶-文獻精讀14

Characterization and structure-based protein engineering of a regiospecific saponin acetyltransferase from Astragalus membranaceus 表征和基于結構的蛋白質工程&#xff1a;黃芪特異性皂苷乙酰轉移酶&#xff0c;一篇乙酰基轉移酶文章精讀分享~ 摘要 乙酰化有助于許…

【C++】繼承相關(基類與派生類的繼承關系以及細節整理)

目錄 00.引言 01.繼承的定義 02.基類和派生類對象 03.繼承中的作用域 04.派生類的默認成員函數 05.友元、靜態成員 00.引言 繼承是面向對象編程中的一個重要概念&#xff0c;它的作用是創建一個新的類&#xff0c;該類可以從一個已存在的類&#xff08;父類/基類&#x…

服務攻防——數據庫安全

第一步: 端口掃描&#xff1a;nmap 掃不到端口&#xff1a;端口被修改&#xff0c;防護軟件&#xff0c;放在內網環境 mysql 內置端口3306 第一種官方漏洞 第一步:先掃描有什么端口開發 用這個錯誤密碼一直訪問&#xff0c;最終就進去了 弱口令猜解 不可以直接猜解&#x…

WEB后端復習——MVC、SSM【含登錄頁面代碼】

MVC&#xff08;Model-View-Controller&#xff09;是一種軟件設計模式&#xff0c;用于將應用程序分解為三個相互關聯的組件&#xff1a;模型&#xff08;Model&#xff09;、視圖&#xff08;View&#xff09;和控制器&#xff08;Controller&#xff09;。這種模式在構建用戶…

機器人學導論實驗1—CoppeliaSim 平臺介紹及初步使用BJTU

1. 實驗內容分析 對實驗內容的理解及關鍵點&#xff1a; 理解這個實驗的關鍵點在于理解如何使用CoppeliaSim和MATLAB來控制和操作機器人。需要熟悉這兩個工具的基本操作&#xff0c;例如如何加載場景、如何修改機器人參數、如何使用MATLAB客戶端程序來控制機器人等。此外&#…

Docker 部署 Prometheus 實現一個極簡的 QPS 監控

背景 : Prometheus 是近年來最流行的開源監控框架, 其功能強大且易于使用, 擁有各種主流后端語言(Java/Go/Python/Node.js等)與各種場景(如web handler/ k8s/Nginx/MySQL等)的客戶端, 并自帶圖形化顯示頁面。分享一個快速入門Prometheus 的教程, 實現一個極簡的, 后端開發需要特…

Nginx-基礎-基礎配置-Location

Location 參數匹配模式 參數匹配方式匹配模式說明注意事項精準匹配普通字符串匹配用于標準uri前&#xff0c;要求請求字符串與uri精準匹配&#xff0c;成功則立即處理&#xff0c;nginx停止搜索其他匹配。~正則匹配正則表達式匹配用于正則uri&#xff0c;表示uri包含正則表達…

使用 Docker 輕松部署 Spring Boot 應用

當今軟件開發領域&#xff0c;Docker 和 Spring Boot 的組合已成為開發和部署應用程序的黃金標準。在這篇博客中&#xff0c;我們將詳細探討如何將 Spring Boot 應用容器化并使用 Docker 進行部署&#xff0c;確保你的部署過程既高效又可靠。 引言 Docker 提供了一個標準化的…

基于SSM的理發店會員管理系統的設計和實現(有報告)。Javaee項目。ssm項目。

演示視頻&#xff1a; 基于SSM的理發店會員管理系統的設計和實現&#xff08;有報告&#xff09;。Javaee項目。ssm項目。 項目介紹&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三層體系結構&#xff0…

Docker安裝達夢數據庫

1.確保已安裝Docker 可參考&#xff1a;Linux安裝Docker-CSDN博客 2.上傳dm鏡像并導入安裝包 可以從&#xff1a;產品下載 | 達夢數據庫下載dm鏡像&#xff0c;如下圖&#xff1a; docker load -i dm8_20230808.tar 3.導入后查看鏡像 docker images 4.啟動容器 docker run …

圖的概念、性質和存儲與簡單遍歷

前置知識&#xff1a;樹的基本概念及性質 為了保證學習效果&#xff0c;請保證已經掌握前置知識之后&#xff0c;再來學習本章節&#xff01;如果在閱讀中遇到困難&#xff0c;也可以回到前面章節查閱。 學習目標 掌握圖的基本概念掌握圖的一些性質 圖的概念 基本概念 圖 (…

Pytorch如何計算網絡參數

方法一. 利用pytorch自身 PyTorch是一個流行的深度學習框架&#xff0c;它允許研究人員和開發者快速構建和訓練神經網絡。計算一個PyTorch網絡的參數量通常涉及兩個步驟&#xff1a;確定網絡中每個層的參數數量&#xff0c;并將它們加起來得到總數。 以下是在PyTorch中計算網…

如何在 CloudFlare 里屏蔽/攔截某個 IP 或者 IP 地址段

最近除了接的 CloudFlare 代配置訂單基本很少折騰自己的 CloudFlare 配置了,今天給大家簡單的講解一下如何在 CloudFlare 里屏蔽/攔截 IP 地址和 IP 地址段,雖然明月一直都很反感針對 IP 的屏蔽攔截,但不得不說有時候還是很有必要的。并且,既然可以攔截屏蔽 IP 自然也可以但…

鴻蒙內核源碼分析(VFS篇) | 文件系統和諧共處的基礎

基本概念 | 官方定義 VFS&#xff08;Virtual File System&#xff09;是文件系統的虛擬層&#xff0c;它不是一個實際的文件系統&#xff0c;而是一個異構文件系統之上的軟件粘合層&#xff0c;為用戶提供統一的類Unix文件操作接口。由于不同類型的文件系統接口不統一&#x…

Flink HA模式下JobManager切換時發送告警

資源&版本信息 Flink版本1.14.6 運行平臺&#xff1a;K8s HA使用ZK&#xff08;使用K8s的ETC應該是一個道理&#xff09; 詳解Flink HA原理 Flink啟動時會創建HighAvailabilityServices提供HA和相關基礎服務&#xff0c;其中包括leaderRetrievalService和LeaderElecti…

搜索引擎的設計與實現(二)

目錄 3 搜索引擎的基本原理 3.1搜索引擎的基本組成及其功能 l.搜索器 (Crawler) 2.索引器(Indexer) 3.檢索器(Searcher) 4.用戶接口(UserInterface) 3.2搜索引擎的詳細工作流程 4 系統分析與設計 4.1系統分析 4.2系統概要設計 4.2系統實現目標 前面內容請移步 搜索引…

Rust 語言不支持 goto 語句

一、Rust 不提供 goto 語句 Rust 語言并沒有提供 goto 語句。goto 語句在很多現代編程語言中已經不再被推薦使用&#xff0c;因為它可能導致代碼的流程變得難以跟蹤和理解&#xff0c;特別是在復雜的程序中。Rust 語言設計者選擇了更加結構化和可預測的控制流語句&#xff0c;…