Kubernetes Ingress實戰:從環境搭建到應用案例

目錄

一、概述

版本對比圖

二、 Ingress應用案例

2.1 環境準備

2.2 驗證-NodePort模式

設置Http代理

2.3 驗證-LoadBalancer模式

修改ARP模式,啟用嚴格ARP模式

搭建metallb支持LoadBalancer

普通的service測試

ingress訪問測試:


一、概述

Service對集群之外暴露服務的主要方式有兩種:NotePort和LoadBalancer,但是這兩種方式,都有一定的缺點:

  • NodePort方式的缺點是會占用很多集群機器的端口,那么當集群服務變多的時候,這個缺點就愈發明顯。

  • LB方式的缺點是每個service需要一個LB,浪費、麻煩,并且需要kubernetes之外設備的支持。

基于這種現狀,kubernetes提供了Ingress資源對象,Ingress只需要一個NodePort或者一個LB就可以滿足暴露多個Service的需求。工作機制大致如下圖表示:

實際上,Ingress相當于一個7層的負載均衡器,是kubernetes對反向代理的一個抽象,它的工作原理類似于Nginx,可以理解成在Ingress里建立諸多映射規則,Ingress Controller通過監聽這些配置規則并轉化成Nginx的反向代理配置 , 然后對外部提供服務。在這里有兩個核心概念:

  • ingress:kubernetes中的一個對象,作用是定義請求如何轉發到service的規則

  • ingress controller:具體實現反向代理及負載均衡的程序,對ingress定義的規則進行解析,根據配置的規則來實現請求轉發,實現方式有很多,比如Nginx, Contour, Haproxy等等

Ingress(以Nginx為例)的工作原理如下:

  • 用戶編寫Ingress規則,說明哪個域名對應kubernetes集群中的哪個Service

  • Ingress控制器動態感知Ingress服務規則的變化,然后生成一段對應的Nginx反向代理配置

  • Ingress控制器會將生成的Nginx配置寫入到一個運行著的Nginx服務中的pod,并動態更新

  • 到此為止,其實真正在工作的就是一個Nginx了,內部配置了用戶定義的請求轉發規則

版本對比圖

二、 Ingress應用案例

2.1 環境準備

搭建ingress環境

# 創建文件夾
[root@k8s-master01 ~]# mkdir ingress-controller
[root@k8s-master01 ~]# cd ingress-controller/
?
# 獲取ingress-nginx,本次案例使用的是1.12.0版本
[root@k8s-master01 ingress-controller]# wget https://github.com/kubernetes/ingress-nginx/releases/tag/controller-v1.12.0/ingress-nginx-controller-v1.12.0.zip
[root@k8s-master01 ingress-controller]# unzip ingress-nginx-controller-v1.12.0.zip
[root@k8s-master01 ingress-controller]# cd ingress-nginx-controller-v1.12.0/deploy/static/provider/cloud
[root@k8s-master01 cloud]# ls
deploy.yaml  kustomization.yaml
?
#####外部訪問策略:
externalTrafficPolicy: Local 
### Cluster:流量會在集群內的所有節點之間進行負載均衡,可能會導致網絡跳轉,即流量可能會先到達一個節點,然后再被轉發到其他節點上的服務實例。
### Local:流量只會被轉發到接收請求的節點上的服務實例,這樣可以避免額外的網絡跳轉,但可能會導致某些節點上的服務實例接收不到流量,尤其是當服務實例在集群中分布不均勻時。
##查看并修改鏡像源為如下:
?
[root@k8s-master01 cloud]# cat deploy.yaml | grep -n image
445: ? ? ?  image: registry.k8s.io/ingress-nginx/controller:v1.12.0
547: ? ? ?  image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.5.0
601: ? ? ?  image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.5.0
?#########部署#############
[root@k8s-master01 cloud]# kubectl apply -f deploy.yaml 
namespace/ingress-nginx created
serviceaccount/ingress-nginx created
serviceaccount/ingress-nginx-admission created
role.rbac.authorization.k8s.io/ingress-nginx created
role.rbac.authorization.k8s.io/ingress-nginx-admission created
clusterrole.rbac.authorization.k8s.io/ingress-nginx created
clusterrole.rbac.authorization.k8s.io/ingress-nginx-admission created
rolebinding.rbac.authorization.k8s.io/ingress-nginx created
rolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx created
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
configmap/ingress-nginx-controller created
service/ingress-nginx-controller created
service/ingress-nginx-controller-admission created
deployment.apps/ingress-nginx-controller created
job.batch/ingress-nginx-admission-create created
job.batch/ingress-nginx-admission-patch created
ingressclass.networking.k8s.io/nginx created
validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission created
[root@k8s-master01 cloud]# kubectl -n ingress-nginx get pod
NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  READY ? STATUS ? ?  RESTARTS ? AGE
ingress-nginx-admission-create-sgksd ? ? ? ?0/1 ? ? Completed ? 0 ? ? ? ?  77s
ingress-nginx-admission-patch-f4rdc ? ? ? ? 0/1 ? ? Completed ? 1 ? ? ? ?  77s
ingress-nginx-controller-565cc5ddd9-2qwnm ? 1/1 ? ? Running ? ? 0 ? ? ? ?  77s
?
[root@k8s-master01 cloud]# kubectl -n ingress-nginx get svc
NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE ? ? ? ? ? CLUSTER-IP ? ?  EXTERNAL-IP ? PORT(S) ? ? ? ? ? ? ? ? ? ?  AGE
ingress-nginx-controller ? ? ? ? ? ? LoadBalancer ? 10.10.103.132 ? <pending> ? ? 80:31502/TCP,443:31020/TCP ? 96s
ingress-nginx-controller-admission ? ClusterIP ? ? ?10.10.227.21 ?  <none> ? ? ? ?443/TCP ? ? ? ? ? ? ? ? ? ?  96s
?
?
##查看集群已經存在的nginx類型
[root@k8s-master01 cloud]# kubectl get ingressclass
NAME ?  CONTROLLER ? ? ? ? ? ? PARAMETERS ? AGE
nginx ? k8s.io/ingress-nginx ? <none> ? ? ? 2m53s

2.2 驗證-NodePort模式

準備service和pod

創建nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:labels:app: nginx-deployname: nginx-deploy
spec:replicas: 3selector:matchLabels:app: nginx-deploytemplate:metadata:labels:app: nginx-deployspec:containers:- image: nginx:latestimagePullPolicy: IfNotPresentname: nginxports:- containerPort: 80
---
?
apiVersion: v1
kind: Service
metadata:labels:app: nginx-deployname: nginx-svc
spec:ports:- port: 80protocol: TCPtargetPort: 80selector:app: nginx-deploytype: ClusterIP
?# 創建
[root@k8s-master01 ingress-controller]# kubectl apply  -f nginx.yaml 
deployment.apps/nginx-deploy created
service/nginx-svc created
?
?
# 查看
[root@k8s-master01 ingress-controller]# kubectl get pod
NAME ? ? ? ? ? ? ? ? ? ? ? ? ?  READY ? STATUS ?  RESTARTS ? AGE
nginx-deploy-7c7b68644b-26jtl ? 1/1 ? ? Running ? 0 ? ? ? ?  20s
nginx-deploy-7c7b68644b-5jsmb ? 1/1 ? ? Running ? 0 ? ? ? ?  20s
nginx-deploy-7c7b68644b-rjc4r ? 1/1 ? ? Running ? 0 ? ? ? ?  20s
?
[root@k8s-master01 ingress-controller]# kubectl get svc
NAME ? ? ? ? TYPE ? ? ?  CLUSTER-IP ? ? EXTERNAL-IP ? PORT(S) ? AGE
kubernetes ? ClusterIP ? 10.10.0.1 ? ?  <none> ? ? ? ?443/TCP ? 13d
nginx-svc ?  ClusterIP ? 10.10.199.33 ? <none> ? ? ? ?80/TCP ?  36s

修改ingress代理模式

[root@k8s-master01 ingress-controller]# kubectl -n ingress-nginx edit svc ingress-nginx-controller 49 ? type: NodePort50 status:51 ? loadBalancer: {}
##查看
[root@k8s-master01 ingress-controller]# kubectl -n ingress-nginx get svc
NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE ? ? ?  CLUSTER-IP ? ?  EXTERNAL-IP ? PORT(S) ? ? ? ? ? ? ? ? ? ?  AGE
ingress-nginx-controller ? ? ? ? ? ? NodePort ? ?10.10.103.132 ? <none> ? ? ? ?80:31502/TCP,443:31020/TCP ? 10m
ingress-nginx-controller-admission ? ClusterIP ? 10.10.227.21 ?  <none> ? ? ? ?443/TCP ? ? ? ? ? ? ? ? ? ?  10m

設置Http代理

創建ingress-http.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress # 創建一個類型為Ingress的資源
metadata:name: nginx-ingress # 這個資源的名字為 nginx-ingress
spec:ingressClassName: nginx # 使用nginxrules:- host: nginx.jx.com # 訪問此內容的域名http:paths:- backend:service:name: nginx-svc # 對應nginx的服務名字,該規則的namespace必須與service的一致port:number: 80 # 訪問的端口path: / # 匹配規則pathType: Prefix # 匹配類型,這里為前綴匹配
?
######
#Exact(精確匹配):
#當 PathType 的值為 Exact 時,意味著服務的路由規則將僅在傳入請求的路徑與指定的路徑完全相同時才會被匹配。
#例如,如果一個服務的路徑配置為 /api/v1/resource 且 PathType 為 Exact,那么只有當請求的路徑是 /api/v1/resource 時,該服務才會被選中處理請求,多一個字符或少一個字符都不會匹配,包括 /api/v1/resource/ 或者 /api/v1/resource?id=1 這樣的請求路徑都不會被該服務處理,這是一種非常嚴格的精確匹配規則。
#Prefix(前綴匹配):
#當 PathType 的值為 Prefix 時,服務將匹配以指定路徑作為前綴的請求路徑。
#例如,如果一個服務的路徑配置為 /api/v1 且 PathType 為 Prefix,那么 /api/v1、/api/v1/resource、/api/v1/resource/1 等以 /api/v1 開頭的請求路徑都會被該服務處理,只要請求路徑以 /api/v1 開頭,該服務就會處理該請求,而不要求請求路徑完全等于 /api/v1。# 創建
[root@k8s-master01 ~]# kubectl create -f ingress-http.yaml
ingress.extensions/ingress-http created
?
# 查看
[root@k8s-master01 ingress-controller]# kubectl get ingress nginx-ingress 
NAME ? ? ? ? ?  CLASS ? HOSTS ? ? ? ?  ADDRESS ? ? ? ? PORTS ? AGE
nginx-ingress ? nginx ? nginx.jx.com ? 10.10.103.132 ? 80 ? ?  31s
?
?
?
# 查看詳情
[root@k8s-master01 ~]# kubectl describe ingress nginx-ingress 
Name: ? ? ? ? ? ? nginx-ingress
Labels: ? ? ? ? ? <none>
Namespace: ? ? ?  default
Address: ? ? ? ? ?10.10.26.150
Ingress Class: ?  nginx
Default backend:  <default>
Rules:Host ? ? ? ?  Path  Backends---- ? ? ? ? ?---- ?--------nginx.jx.com ?/ ? nginx-svc:80 (172.16.69.202:80,172.16.79.74:80,172.16.79.75:80)
Annotations: ?  <none>
Events:Type ?  Reason  Age ? ? ? ? ? ? ? ? From ? ? ? ? ? ? ? ? ? ?  Message---- ? ?------ ?---- ? ? ? ? ? ? ? ?---- ? ? ? ? ? ? ? ? ? ? ?-------Normal  Sync ?  9m2s (x2 over 14m)  nginx-ingress-controller  Scheduled for sync
?
[root@k8s-master ~]# kubectl -n ingress-nginx get po -o wide
NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  READY ? STATUS ? ?  RESTARTS ? AGE ? IP ? ? ? ? ? ? ? NODE ? ? ?  NOMINATED NODE ? READINESS GATES
ingress-nginx-admission-create-qmdj9 ? ? ? ?0/1 ? ? Completed ? 0 ? ? ? ?  21m ? 10.244.36.89 ? ? k8s-node1 ? <none> ? ? ? ? ? <none>
ingress-nginx-admission-patch-htkxb ? ? ? ? 0/1 ? ? Completed ? 0 ? ? ? ?  21m ? 10.244.36.90 ? ? k8s-node1 ? <none> ? ? ? ? ? <none>
ingress-nginx-controller-7d7455dcf8-5s9q5 ? 1/1 ? ? Running ? ? 0 ? ? ? ?  21m ? 10.244.169.157 ? k8s-node2 ? <none> ? ? ? ? ? <none>
?
#在訪問節點寫入hosts解析記錄,由于ingress-controller運行再node2節點,所以hosts要寫成node2的節點IP地址
127.0.0.1 ? localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 ? ? ? ? localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.158.17  nginx.jx.com
?
##測試,只能使用域名訪問
[root@k8s-master01 ingress-controller]# curl nginx.jx.com:31502
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
?
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
?
<p><em>Thank you for using nginx.</em></p>
</body>
</html>

2.3 驗證-LoadBalancer模式

修改ARP模式,啟用嚴格ARP模式

# 執行修改操作
kubectl get configmap kube-proxy -n kube-system -o yaml | \
sed -e "s/strictARP: false/strictARP: true/" | \
kubectl apply ?-f - -n kube-system#或者
kubectl get configmap kube-proxy -n kube-system -o yaml | sed -e "s/strictARP: false/strictARP: true/" | kubectl apply ?-f - -n kube-system
#查看修改結果
kubectl edit configmap -n kube-system kube-proxy

為什么要修改嚴格模式?

  • 避免 ARP 沖突

    • 在默認情況下,容器網絡可能會出現一些非預期的 ARP 行為。在 Load Balancer 模式下,流量需要準確地被分發到后端的 Pod。如果不啟用嚴格 ARP 模式,可能會出現多個 Pod 響應同一個 ARP 請求的情況。

    • 例如,假設在一個集群中有多個 Pod 提供相同的服務,并且它們在同一個子網中。如果沒有嚴格的 ARP 控制,負載均衡器可能會收到來自多個 Pod 的 ARP 響應,導致流量分發混亂,影響服務的正常運行。

  • 確保流量正確分發

    • 嚴格 ARP 模式可以確保只有正確的后端 Pod 響應 ARP 請求。這樣,負載均衡器能夠準確地將流量發送到預期的 Pod。

    • 以一個 Web 應用程序為例,當外部用戶通過負載均衡器訪問該應用時,負載均衡器需要將請求發送到正確的 Web 服務器 Pod。通過啟用嚴格 ARP 模式,就像是給每個 Pod 一個 “專屬標簽”,只有擁有該標簽(正確 MAC 地址)的 Pod 才會響應 ARP 請求,從而保證請求能夠準確無誤地到達提供服務的 Pod。

  • 增強網絡安全性和穩定性

    • 限制 ARP 響應可以防止惡意的 Pod 或者受到攻擊的 Pod 干擾網絡通信。如果一個被入侵的 Pod 隨意響應 ARP 請求,可能會導致中間人攻擊或者流量劫持等安全問題。

    • 嚴格 ARP 模式可以防止這種情況的發生,使得網絡通信更加安全和穩定。例如,在一個多租戶的 Kubernetes 集群環境中,不同租戶的 Pod 之間通過嚴格的 ARP 模式來隔離網絡通信,避免租戶之間的相互干擾和安全威脅。

搭建metallb支持LoadBalancer

Metallb 在 Kubernetes 中的作用主要是為沒有運行在如 AWS、GCP 等具有完善網絡服務的云平臺上的集群,提供網絡負載均衡器的實現。

  • 實現 LoadBalancer 服務類型:在 Kubernetes 中,Service 有多種類型,其中 LoadBalancer 類型通常需要外部的負載均衡器支持。Metallb 可以在缺乏原生云平臺負載均衡支持的環境下,模擬實現 LoadBalancer 類型的 Service。它能夠為應用提供可從集群外部訪問的固定 IP 地址。

  • IP 地址分配與管理:負責在指定的 IP 地址范圍(IP address pool)內,為 LoadBalancer 類型的 Service 分配 IP 地址,并確保這些 IP 地址的正確映射和管理,使外部流量能夠準確地路由到相應的 Kubernetes 服務后端 Pod。

  • 提供高可用的網絡連接:通過實現 BGP(Border Gateway Protocol)或 Layer2 模式的負載均衡機制,確保即使在節點故障或網絡波動的情況下,也能維持應用的外部網絡連接的穩定性和可靠性。

#版本
metallb-0.14.8
cd /root/metallb-0.14.8/config/manifests
kubectl apply -f metallb-native.yaml
##編寫地址段分配configmap
#創建IP地址池
cat >IPAddressPool.yaml<<EOF
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:name: planip-pool #這里與下面的L2Advertisement的ip池名稱需要一樣namespace: metallb-system
spec:addresses:- 192.168.158.135-192.168.158.150 #自定義ip段
EOF
#關聯IP地址池
cat >L2Advertisement.yaml<<EOF
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:name: planip-poolnamespace: metallb-system
spec:ipAddressPools:- planip-pool #這里需要跟上面ip池的名稱保持一致
EOF
?
?
####
?
?
?
kubectl apply -f IPAddressPool.yaml
kubectl apply -f L2Advertisement.yaml
?
?
[root@k8s-master01 manifests]# kubectl -n metallb-system get pod
NAME ? ? ? ? ? ? ? ? ? ? ? ?  READY ? STATUS ?  RESTARTS ? AGE
controller-7476b58756-q7cql ? 1/1 ? ? Running ? 0 ? ? ? ?  6m
speaker-55l64 ? ? ? ? ? ? ? ? 1/1 ? ? Running ? 0 ? ? ? ?  6m
speaker-8jjg8 ? ? ? ? ? ? ? ? 1/1 ? ? Running ? 0 ? ? ? ?  6m1s

普通的service測試

[root@k8s-master01 ingress-controller]# cat nginx.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: nginx-deploy1name: nginx-deploy1
spec:replicas: 3selector:matchLabels:app: nginx-deploy1template:metadata:labels:app: nginx-deploy1spec:containers:- image: nginximagePullPolicy: IfNotPresentname: nginx1ports:- containerPort: 80
---
?
apiVersion: v1
kind: Service
metadata:labels:app: nginx-deploy1name: nginx-svc1
spec:ports:- port: 80protocol: TCPtargetPort: 80selector:app: nginx-deploy1type: LoadBalancer
##提交
[root@k8s-master01 ingress-controller]# kubectl apply -f nginx.yaml 
##查看
[root@k8s-master01 ingress-controller]# kubectl get pod
NAME ? ? ? ? ? ? ? ? ? ? ? ? ?  READY ? STATUS ?  RESTARTS ? AGE
nginx-deploy-5f87d95c-7ph78 ? ? 1/1 ? ? Running ? 0 ? ? ? ?  50m
nginx-deploy-5f87d95c-dswvq ? ? 1/1 ? ? Running ? 0 ? ? ? ?  50m
nginx-deploy-5f87d95c-vk9vg ? ? 1/1 ? ? Running ? 0 ? ? ? ?  50m
nginx-deploy1-c8d58b5c7-7dfrd ? 1/1 ? ? Running ? 0 ? ? ? ?  12m
nginx-deploy1-c8d58b5c7-d2hd7 ? 1/1 ? ? Running ? 0 ? ? ? ?  12m
nginx-deploy1-c8d58b5c7-pfvhn ? 1/1 ? ? Running ? 0 ? ? ? ?  12m
?
?
[root@k8s-master ingress]# kubectl get svc
NAME ? ? ? ? TYPE ? ? ? ? ? CLUSTER-IP ? ? ? EXTERNAL-IP ? ? ? PORT(S) ? ? ?  AGE
kubernetes ? ClusterIP ? ? ?10.96.0.1 ? ? ?  <none> ? ? ? ? ? ?443/TCP ? ? ?  8d
nginx-svc ?  ClusterIP ? ? ?10.110.232.77 ?  <none> ? ? ? ? ? ?80/TCP ? ? ? ? 95m
nginx-svc1 ? LoadBalancer ? 10.107.207.235 ? 192.168.158.136 ? 80:30099/TCP ? 10m
?
##測試訪問
[root@k8s-master01 ingress-controller]# curl 192.168.158.136
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
?
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
?
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
?
apiVersion: networking.k8s.io/v1
kind: Ingress # 創建一個類型為Ingress的資源
metadata:name: nginx-ingress # 這個資源的名字為 nginx-ingress
spec:ingressClassName: nginx # 使用nginxrules:- host: nginx.jx.com # 訪問此內容的域名http:paths:- backend:service:name: nginx-svc # 對應nginx的服務名字port:number: 80 # 訪問的端口path: / # 匹配規則pathType: Prefix # 匹配類型,這里為前綴匹配- host: nginx2.jx.com # 訪問此內容的域名http:paths:- backend:service:name: nginx-svc1 # 對應nginx的服務名字port:number: 80 # 訪問的端口path: / # 匹配規則pathType: Prefix # 匹配類型,這里為前綴匹配

修改ingress模式:

[root@k8s-master01 ~]# kubectl -n ingress-nginx edit svc ingress-nginx-controllertype: LoadBalancer
status:loadBalancer: {}

ingress訪問測試:

使用域名直接訪問即可!!!

curl nginx.jx.com
curl nginx2.jx.com

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

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

相關文章

項目發布上線清單

說明&#xff1a;博主想整理一份項目發布上線的清單&#xff0c;在每次發布上線前&#xff0c;對照清單一一核對&#xff0c;避免遺漏&#xff08;往事不堪回首&#xff09;&#xff0c;歡迎大家補充。 前端是否有與后端協同發布的接口&#xff1f; 如果有&#xff0c;先發前端…

HTB Information Gathering - Web Edition最后的測驗

因為它沒有DNS解析,,所以不要嘗試去使用dns枚舉所有枚舉出來的子域,馬上修改hosts文件,與ip和域名填好,因為它不依賴dns通過vhost子域爆破 爬蟲登場 w*****.inlanefreight.htb:32508爬到之后不要去理會那個api,除了填答案,,,其他任何用處都沒有,不要浪費時間后面就不能劇透了,可…

IDEA、Pycharm、DataGrip等激活破解沖突問題解決方案之一

Jetbranis旗下的軟件破解沖突問題解決方案之一&#xff0c;不一定適用所有破解包 問題&#xff1a;在使用Pycharm破解包破解該軟件后&#xff0c;同樣是jetbranis旗下軟件的Datagrip卻失去了之前破解的效果&#xff0c;需要重新破解&#xff0c;重新成功破解datagrip后&#xf…

使用 uv管理 Python 虛擬環境:比conda更快、更輕量的現代方案

文章目錄什么是 uv&#xff1f;安裝 uv在線安裝&#xff08;推薦&#xff09;Windows 系統Linux / macOS 系統離線安裝步驟 1&#xff1a;獲取二進制包步驟 2&#xff1a;解壓并移動到可執行路徑步驟 3&#xff1a;設置環境變量驗證安裝創建并激活虛擬環境創建虛擬環境輸出示例…

課堂記憶項目開發日志

課堂記憶項目開發日志 日期: 2025年8月18日 1. 基礎實現 項目目標: 創建一個動態、美觀的“課堂記憶”頁面,展示教師信息、教學成果、學生反饋、未來計劃、教學成就和教學金句。 實現交互功能,包括按鈕點擊展開內容、圖片點擊彈出詳細信息、圖表展示數據。 技術棧: HTML5 C…

藍橋杯算法之搜索章 - 7

大家好&#xff0c;不同的時間&#xff0c;相同的地點&#xff01;又和大家見面了&#xff0c;接下來我將帶來多源BFS的內容 通過多源BFS的學習&#xff0c;大家將對BFS理解更加深入&#xff01; lets go! 前言 通過前面內容的學習&#xff0c;大家肯定已經對于BFS有了一定理解…

onRequestHide at ORIGIN_CLIENT reason HIDE_SOFT_INPUT fromUser false

這個錯誤日志 onRequestHide at ORIGIN_CLIENT reason HIDE_SOFT_INPUT fromUser false 通常出現在 Android 平臺的 WebView 或混合應用&#xff08;如 Cordova/Capacitor&#xff09;中&#xff0c;與軟鍵盤&#xff08;Soft Input&#xff09;的隱藏行為有關。以下是可能的原…

用PaddleDetection套件訓練自己的數據集,PP-YOLO-SOD訓練全流程

文章目錄官方資料ppyoloe 訓練全流程環境配置與套件準備數據集準備與VOC格式ppdet的要求標簽列表txt文件生成腳本數據集配置預訓練權重模型配置ppyoloe訓練命令ppyoloe評估命令ppyoloe推理命令與可視化結果ppyoloe-SOD 訓練全流程預訓練權重模型配置ppyoloe訓練命令官方資料 P…

Candle用 Rust 打造“小而快”的機器學習棧

1. 為什么是 Candle&#xff1f;&#xff08;三條硬理由&#xff09;Serverless & 輕量部署 傳統 Python 生態在函數冷啟動/GIL/體積上常見掣肘。Candle 是純 Rust 二進制&#xff0c;可將推理程序打包成一個小體積可執行文件&#xff0c;非常適合邊緣側 & Serverless。…

小波卷積YYDS!小波變換+CNN創新結合

2025深度學習發論文&模型漲點之——小波卷積小波卷積通過先將輸入信號或圖像進行小波分解&#xff0c;得到不同尺度的子帶信號&#xff0c;然后在每個子帶信號上應用卷積操作來提取局部特征&#xff0c;最后通過逆小波變換將經過卷積處理的子帶信號重構為最終的輸出信號或圖…

高性價比的5G專網設備,助力企業降本增效

在數字化轉型的浪潮中&#xff0c;企業亟需兼顧先進技術與投入成本的平衡。作為全球領先的核心網供應商&#xff0c;IPLOOK始終堅持以客戶為中心&#xff0c;推出高性價比的5G行業專網設備&#xff0c;幫助企業在保障性能的同時&#xff0c;有效降低網絡建設與運維成本。 高性…

可編輯150頁PPT | 某制造集團產業數字化轉型規劃方案

推薦摘要&#xff1a;某制造集團產業數字化轉型規劃方案&#xff0c;直擊傳統制造向智能智造躍遷的核心命題。該集團作為裝備制造領域龍頭&#xff0c;業務橫跨工程機械、農業機械、能源裝備三大板塊&#xff0c;擁有12個生產基地、400余家供應鏈企業&#xff0c;但面臨設備聯網…

Kafka 面試題及詳細答案100道(11-22)-- 核心機制1

《前后端面試題》專欄集合了前后端各個知識模塊的面試題,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,SQL,Linux… 。 前后端面試題-專欄總目錄 文章目錄 一、本文面試題目錄 11. 什么是Kafka的分區(P…

PHP反序列化的CTF題目環境和做題復現第1集

1 通過post參數提交反序列信息 2 題目 http://192.168.1.8/fxl1/fxl1.php <?php highlight_file(__FILE__);class ezUnserialize{public $key;public function __destruct(){if($this->key "FLAG"){include(flag.php);echo $flag;}} } unserialize($_POST[a…

[論文閱讀] 軟件工程工具 | EVOSCAT可視化工具如何重塑軟件演化研究

EVOSCAT可視化工具如何重塑軟件演化研究 論文信息 原標題&#xff1a;EVOSCAT: Exploring Software Change Dynamics in Large-Scale Historical Datasets主要作者及機構&#xff1a; Souhaila Serbout&#xff08;University of Zurich, Zurich, Switzerland&#xff09;Diana…

【入門級-算法-6、排序算法:排序的基本概念冒泡排序】

一、排序概念&#xff1a;是將一組數據按照特定規則重新排列的過程&#xff0c;是計算機科學中最基礎且重要的算法之一。 二、排序的基本要素 排序鍵(Key)&#xff1a;是排序過程中用于比較和確定元素順序的特定數據項或數據屬性。 穩定性&#xff1a;排序過程中&#xff0c;相…

搭建私有Claude體驗平臺:Open WebUI + Anthropic API + Trojan完整部署指南

言簡意賅的講解Open WebUI Anthropic API Trojan解決的痛點 身邊的小伙伴們都想體驗Claude&#xff0c;但直接訪問Anthropic API存在網絡連接問題。本文記錄了我如何通過Docker部署Open WebUI&#xff0c;結合網絡代理和Anthropic Manifold Pipe&#xff0c;為團隊搭建了一個…

Hadoop技術棧(一)hadoop搭建與HDFS常用命令

概念 hadoop是一個大數據的分布式存儲&#xff0c;調度&#xff0c;計算框架。也可以說是一個生態圈&#xff0c;包含很多技術&#xff1a;Hive、Hbase、Flume、Kafka... Hadoop的優點 Hadoop具有存儲和處理數據能力的高可靠性。 Hadoop通過可用的計算機集群分配數據&#xf…

electron之win/mac通知免打擾

目錄 系統區別 win&#xff1a;不支持桌面通知&#xff0c;使用氣泡顯示 mac&#xff1a;有鏡像/共享屏幕時 通知免打擾設置 代碼 Vuex&#xff1a;免打擾狀態 src/store/App/mutations.ts src/store/App/state.ts src/views/miracast/index.vue Util 【可選】src/ut…

為什么Integer緩存-128 ~ 127

背景 面試題, 相關問題的考察. 題目大概是, 包裝類型Integer 比較的時候 : -127 ~ 128 是否相等. 其他是否相等? 原理比較的是地址. 如果是不同的對象, 那么就不相等. 實踐 下面是幾個簡單實踐. 全部新建對象 解釋: 新建對象后, 地址不同, 所以都是false不新建對象 暫時的理解…