kubernetes系列05—kubectl應用快速入門

来源:https://www.cnblogs.com/along21/archive/2019/01/23/10304362.html
-Advertisement-
Play Games

本文收錄在容器技術學習系列文章總目錄 1、使用kubectl 1.1 介紹 kubectl用於運行Kubernetes集群命令的管理工具。 1.2 語法 command:指定要在一個或多個資源執行的操作,例如操作create,get,describe,delete。TYPE:指定資源類型Resour ...


 本文收錄在容器技術學習系列文章總目錄

1、使用kubectl

1.1 介紹

kubectl用於運行Kubernetes集群命令的管理工具。

 

1.2 語法

kubectl [command] [TYPE] [NAME] [flags]
  •  command:指定要在一個或多個資源執行的操作,例如操作creategetdescribedeleteTYPE:指定資源類型Resource types
  •  Name區分大小寫,如果省略Name,則顯示所有資源的詳細信息,例如:$ kubectl get pods

 

1.3 選項

Operation

Description

Syntax

annotate

為一個或多個資源添加註釋

kubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags]

api-versions

列出支持的API版本。

kubectl api-versions [flags]

apply

對文件或stdin的資源進行配置更改。

kubectl apply -f FILENAME [flags]

attach

連接到一個運行的容器,既可以查看output stream,也可以與容器(stdin)進行交互。

kubectl attach POD -c CONTAINER [-i] [-t] [flags]

autoscale

自動擴容/縮容由replication controller管理的一組pod。

kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]

cluster-info

顯示有關集群中master和services的終端信息。

kubectl cluster-info [flags]

config

修改kubeconfig文件。有關詳細信息,請參閱各個子命令。

kubectl config SUBCOMMAND [flags]

create

從file或stdin創建一個或多個資源。

kubectl create -f FILENAME [flags]

delete

從file,stdin或指定label 選擇器,names,resource選擇器或resources中刪除resources。

kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags]

describe

顯示一個或多個resources的詳細狀態。

kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags]

edit

使用預設編輯器編輯和更新伺服器上一個或多個定義的資源。

kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags]

exec

對pod中的容器執行命令。

kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args...]]

explain

獲取各種資源的文檔。例如pod,node,services等

kubectl explain [--include-extended-apis=true] [--recursive=false] [flags]

expose

將 replication controller,service或pod作為一個新的Kubernetes service顯示。

kubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [----external-ip=external-ip-of-service] [--type=type] [flags]

get

列出一個或多個資源。

kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]

label

添加或更新一個或多個資源的flags。

kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags]

logs

在pod中列印容器的日誌。

kubectl logs POD [-c CONTAINER] [--follow] [flags]

patch

使用strategic merge 補丁程式更新資源的一個或多個欄位。

kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags]

port-forward

將一個或多個本地埠轉發到pod。

kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags]

proxy

在Kubernetes API伺服器運行代理。

kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags]

replace

從file或stdin替換資源。

kubectl replace -f FILENAME

rolling-update

通過逐步替換指定的replication controller及其pod來執行滾動更新。

kubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC) [flags]

run

在集群上運行指定的鏡像。

kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [flags]

scale

更新指定replication controller的大小。

kubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) --replicas=COUNT [--resource-version=version] [--current-replicas=count] [flags]

stop

已棄用

kubectl stop

version

顯示客戶端和伺服器上運行的Kubernetes版本。

kubectl version [--client] [flags]

 

1.4 示例演示

1)簡單的查詢操作

查詢節點詳細信息

[root@master ~]# kubectl describe node node1
Name:               node1
Roles:              <none>
Labels:             beta.kubernetes.io/arch=amd64
... ...

查看版本

[root@master ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.1", GitCommit:"bb9ffb1654d4a729bb4cec18ff088eacc153c239", GitTreeState:"clean", BuildDate:"2018-08-07T23:17:28Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.1", GitCommit:"b1b29978270dc22fecc592ac55d903350454310a", GitTreeState:"clean", BuildDate:"2018-07-17T18:43:26Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}

查看集群信息

[root@master ~]# kubectl cluster-info
Kubernetes master is running at https://192.168.10.103:6443
KubeDNS is running at https://192.168.10.103:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

  

2、run運行

2.1 介紹

創建並運行一個或多個容器鏡像。

 

2.2 命令

$ kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...] [options]

  

2.3 常用選項

  •  --port:要暴露的埠
  •  --replicas:期望創建幾個Pod,預設1
  •  --dry-runtrue為乾跑

 

2.4 演示

1)運行一個nginxpod

[root@master ~]# kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 --replicas=1
deployment.apps/nginx-deploy created

  

2)在master上查詢驗證

[root@master ~]# kubectl get deployment
NAME           DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx-deploy   1         1         1            1           44s
[root@master ~]# kubectl get pods
NAME                          READY     STATUS    RESTARTS   AGE
nginx-deploy-5b595999-6kw54   1/1       Running   0          51s
[root@master ~]# kubectl get pods -o wide
NAME                          READY     STATUS    RESTARTS   AGE       IP           NODE
nginx-deploy-5b595999-6kw54   1/1       Running   0          1m        10.244.2.2   node2

  

3)在部署的node節點上查詢

[root@node2 ~]# ifconfig |head -2
cni0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 10.244.2.1  netmask 255.255.255.0  broadcast 0.0.0.0

  

4)訪問pod內的nginx服務

[root@node1 ~]# curl 10.244.2.2
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>

  

3、delete刪除

3.1 介紹

  •  通過配置文件名、stdin、資源名稱或label選擇器來刪除資源。
  •  支持JSONYAML格式文件。可以只指定一種類型的參數:文件名、資源名稱或label選擇器。

 

3.2 語法

$ kubectl delete ([-f FILENAME] | TYPE [(NAME | -l label | --all)])

  

3.3 演示

刪除剛纔的pod,立刻會生成一個新的pod,因為此pod是控制器管理的

[root@master ~]# kubectl delete pods nginx-deploy-5b595999-6kw54
pod "nginx-deploy-5b595999-6kw54" deleted
[root@master ~]# kubectl get pods
NAME                          READY     STATUS              RESTARTS   AGE
nginx-deploy-5b595999-jf5gm   0/1       ContainerCreating   0          16s
[root@master ~]# kubectl get pods -o wide
NAME                          READY     STATUS    RESTARTS   AGE       IP           NODE
nginx-deploy-5b595999-jf5gm   1/1       Running   0          47s       10.244.1.2   node1

  

4、expose暴露

4.1 介紹

  •  將資源暴露為新的Kubernetes Service
  •  指定deploymentservicereplica setreplication controllerpod ,並使用該資源的選擇器作為指定埠上新服務的選擇器。deployment  replica set只有當其選擇器可轉換為service支持的選擇器時,即當選擇器僅包含matchLabels組件時才會作為暴露新的Service
  •  資源包括(不區分大小寫)podpo),servicesvc),replication controllerrc),deploymentdeploy),replica setrs

 

4.2 語法

$ kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]

  

4.3 常用選項

  •  --port:暴露在service上的埠
  •  --target-port:容器中的埠

 

4.4 演示

1)將nginx-deploy控制器中相關的Pod資源創建一個名為nginx的服務

[root@master ~]# kubectl expose deployment nginx-deploy --name=nginx --port=80 --target-port=80 --protocol=TCP
service/nginx exposed
[root@master ~]# kubectl get services
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP   16h
nginx        ClusterIP   10.96.212.79   <none>        80/TCP    9s
[root@master ~]# kubectl get svc  #簡寫
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP   16h
nginx        ClusterIP   10.96.212.79   <none>        80/TCP    13s

  

2)驗證,在集群內部節點訪問服務

[root@master ~]# curl 10.96.212.79
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>

  

3)刪除pod,立即生產新的pod,但是service還是不變,繼續提供服務,只是指定到新的pod

---刪除pod
[root@master ~]# kubectl delete pods nginx-deploy-5b595999-jf5gm
---立即生產新的pod,service繼續提供服務
[root@master ~]# curl 10.96.212.79  
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
---指定到新的pod
[root@master ~]# kubectl get pod -o wide
NAME                            READY     STATUS    RESTARTS   AGE       IP            NODE
nginx-deploy-5b595999-2z769     1/1       Running   0          29m       10.244.1.2    node2
[root@master ~]# kubectl describe svc nginx
Name:              nginx
Namespace:         default
Labels:            run=nginx-deploy
Annotations:       <none>
Selector:          run=nginx-deploy
Type:              ClusterIP
IP:                10.96.212.79
Port:              <unset>  80/TCP
TargetPort:        80/TCP
Endpoints:         10.244.1.2:80
Session Affinity:  None
Events:            <none>

  

5、scale動態擴容/縮容

5.1 介紹

  •  擴容或縮容 DeploymentReplicaSetReplication ControllerJob Pod數量。
  •  scale也可以指定多個前提條件,如:當前副本數量或 --resource-version ,進行伸縮比例設置前,系統會先驗證前提條件是否成立。

 

5.2 語法

$ kubectl scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)

  

5.3 演示

1)先運行名為myapp標簽選擇器的2pod,鏡像是我用於測試演示自己構建的

[root@master ~]# kubectl run myapp --image=ikubernetes/myapp:v1 --replicas=2
deployment.apps/myapp created
[root@master ~]# kubectl get deployment
NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
myapp     2         2         2            2           6s
[root@master ~]# kubectl get pods -o wide
NAME                     READY     STATUS    RESTARTS   AGE       IP            NODE
myapp-848b5b879b-58jcr   1/1       Running   0          11s       10.244.2.53   node2
myapp-848b5b879b-wpx9v   1/1       Running   0          11s       10.244.1.56   node1

  

2)創建service,並驗證

[root@master ~]# kubectl expose deployment myapp --name=myapp --port=80
service/myapp exposed
[root@master ~]# kubectl get svc myapp
NAME      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
myapp     ClusterIP   10.104.205.158   <none>        80/TCP    8s
[root@master ~]# curl 10.104.205.158
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
---因為有2個pod,所以是隨機調度
[root@master ~]# curl 10.104.205.158/hostname.html
myapp-848b5b879b-58jcr
[root@master ~]# curl 10.104.205.158/hostname.html
myapp-848b5b879b-wpx9v

  

3)使用scale,將pod擴容到5

[root@master ~]# kubectl scale --replicas=5 deployment myapp
deployment.extensions/myapp scaled
[root@master ~]# kubectl get pods
NAME                     READY     STATUS    RESTARTS   AGE
myapp-848b5b879b-2sj8n   1/1       Running   0          8s
myapp-848b5b879b-58jcr   1/1       Running   0          4m
myapp-848b5b879b-hp7zs   1/1       Running   0          8s
myapp-848b5b879b-sfq8r   1/1       Running   0          8s
myapp-848b5b879b-wpx9v   1/1       Running   0          4m

  

4)使用scale,將pod縮容到3

[root@master ~]# kubectl scale --replicas=3 deployment myapp
[root@master ~]# kubectl get pods
NAME                     READY     STATUS    RESTARTS   AGE
myapp-848b5b879b-2sj8n   1/1       Running   0          1m
myapp-848b5b879b-58jcr   1/1       Running   0          6m
myapp-848b5b879b-wpx9v   1/1       Running   0          6m

  

6、set動態升級版本

6.1 介紹

1set

  •  配置應用資源。
  •  使用這些命令能幫你更改現有應用資源一些信息。
  •  子命令:imageresourcesselectorsubject

 

2set image

  •  更新現有的資源對象的容器鏡像。
  •  可使用資源對象包括(不區分大小寫):pod (po)replicationcontroller (rc)deployment (deploy)daemonset (ds)jobreplicaset (rs)

 

6.2 語法

$ kubectl set image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 ... CONTAINER_NAME_N=CONTAINER_IMAGE_N

  

6.3 演示

將鏡像版本從v1升級到v2

[root@master ~]# kubectl set image deployment myapp myapp=ikubernetes/myapp:v2
deployment.extensions/myapp image updated
[root@master ~]# kubectl rollout status deployment myapp  #動態顯示版本升級過程
---因為版本升級,所以pod都是新建的,名字都改變了
[root@master ~]# kubectl get pods
NAME                          READY     STATUS    RESTARTS   AGE
client                        1/1       Running   0          3h
myapp-74c94dcb8c-d5fgk        1/1       Running   0          55s
myapp-74c94dcb8c-f2ntn        1/1       Running   0          21s
myapp-74c94dcb8c-ht9v7        1/1       Running   0          38s
---驗證,版本升級成功
[root@master ~]# curl 10.104.205.158
Hello MyApp | Version: v2 | <a href="hostname.html">Pod Name</a>

  

7、rollout undo回滾版本

7.1 介紹

1rollout

  •  對資源進行管理
  •  可用資源包括:deploymentsdaemonsets
  •  子命令:history(查看歷史版本)pause(暫停資源)resume(恢復暫停資源)status(查看資源狀態)undo(回滾版本)

 

2rollout undo

回滾pod到之前的版本。

 

7.2 語法

$ kubectl rollout undo (TYPE NAME | TYPE/NAME) [flags]

  

7.3 演示

[root@master ~]# kubectl rollout undo deployment myapp
deployment.extensions/myapp
[root@master ~]# kubectl get pods
NAME                     READY     STATUS    RESTARTS   AGE
myapp-848b5b879b-gg9lr   1/1       Running   0          15s
myapp-848b5b879b-km4t6   1/1       Running   0          16s
myapp-848b5b879b-nq98c   1/1       Running   0          17s
---驗證,回滾成功
[root@master ~]# curl 10.104.205.158
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>

  

8、edit編輯修改

8.1 介紹

  •  使用預設編輯器,編輯伺服器上定義的資源。
  •  使用命令行工具獲取的任何資源都可以使用edit命令編輯。edit命令會打開使用KUBE_EDITORGIT_EDITOR 或者EDITOR環境變數定義的編輯器,可以同時編輯多個資源,但所編輯過的資源只會一次性提交。edit除命令參數外還接受文件名形式。
  •  文件預設輸出格式為YAML。要以JSON格式編輯,請指定“-o json”選項。
  •  如果在更新資源時報錯,將會在磁碟上創建一個臨時文件來記錄。在更新資源時最常見的錯誤是幾個用戶同時使用編輯器更改伺服器上資源,發生這種情況,你需要將你的更改應用到最新版本的資源上,或者更新保存的臨時副本。

 

8.2 語法

$ kubectl edit (RESOURCE/NAME | -f FILENAME)

  

8.3 演示

1)修改service,將類型type: ClusterIP,修改為type: NodePort;修改後,可以在集群外訪問到pod中的服務

[root@master ~]# kubectl edit svc myapp
... ...
spec:
... ...
  type: NodePort
... ...
service/myapp edited
[root@master ~]# kubectl get svc myapp
NAME      TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
myapp     NodePort   10.104.205.158   <none>        80:31599/TCP   23m

  

2)在集群外的主機上訪問了

 

9、label標簽

9.1 介紹

更新(增加、修改或刪除)資源上的 label(標簽)。

  •  label 必須以字母或數字開頭,可以使用字母、數字、連字元、點和下劃線,最長63個字元。
  •  如果--overwrite true,則可以覆蓋已有的 label,否則嘗試覆蓋 label 將會報錯。
  •  如果指定了--resource-version,則更新將使用此資源版本,否則將使用現有的資源版本。

 

9.2 語法

$ kubectl label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]

 

9.3 演示

1)運行一個標簽為app=nginxpod

[root@master ~]# kubectl run nginx --image=nginx:1.14-alpine --replicas=1 --labels="app=nginx"
deployment.apps/nginx created

  

2-l 指定標簽,實現標簽過濾

[root@master ~]# kubectl get pods --show-labels
NAME                     READY     STATUS    RESTARTS   AGE       LABELS
myapp-848b5b879b-5blnx   1/1       Running   0          4m        pod-template-hash=4046164356,run=myapp
myapp-848b5b879b-6hgpp   1/1       Running   0          4m        pod-template-hash=4046164356,run=myapp
myapp-848b5b879b-hzj5g   1/1       Running   0          4m        pod-template-hash=4046164356,run=myapp
nginx-86d5b5ddb6-rwv2z   1/1       Running   0          53s       app=nginx,pod-template-hash=4281618862
[root@master ~]# kubectl get pods --show-labels -l app
NAME                     READY     STATUS    RESTARTS   AGE       LABELS
nginx-86d5b5ddb6-rwv2z   1/1       Running   0          1m        app=nginx,pod-template-hash=4281618862

  

3)打一個新的標簽

[root@master ~]# kubectl label pods nginx-86d5b5ddb6-rwv2z release=canary
pod/nginx-86d5b5ddb6-rwv2z labeled
[root@master ~]# kubectl get pods --show-labels -l release
NAME                     READY     STATUS    RESTARTS   AGE       LABELS
nginx-86d5b5ddb6-rwv2z   1/1       Running   0          4m        app=nginx,pod-template-hash=4281618862,release=canary

  

4)修改標簽

[root@master ~]# kubectl label pods nginx-86d5b5ddb6-rwv2z release=stable --overwrite
pod/nginx-86d5b5ddb6-rwv2z labeled
[root@master ~]# kubectl get pods --show-labels -l release
NAME                     READY     STATUS    RESTARTS   AGE       LABELS
nginx-86d5b5ddb6-rwv2z   1/1       Running   0          5m        app=nginx,pod-template-hash=4281618862,release=stable

  

9.4 標簽選擇器

1)等值關係:===!=

[root@master ~]# kubectl get pods -l release --show-labels
NAME                     READY     STATUS    RESTARTS   AGE       LABELS
nginx-86d5b5ddb6-rwv2z   1/1       Running   0          6m        app=nginx,pod-template-hash=4281618862,release=stable
[root@master ~]# kubectl get pods -l release=stable --show-labels
NAME                     READY     STATUS    RESTARTS   AGE       LABELS
nginx-86d5b5ddb6-rwv2z   1/1       Running   0          6m        app=nginx,pod-template-hash=4281618862,release=stable
[root@master ~]# kubectl get pods -l release!=stable --show-labels
NAME                     READY     STATUS    RESTARTS   AGE       LABELS
myapp-848b5b879b-5blnx   1/1       Running   0          10m       pod-template-hash=4046164356,run=myapp
myapp-848b5b879b-6hgpp   1/1       Running   0          10m       pod-template-hash=4046164356,run=myapp
myapp-848b5b879b-hzj5g   1/1       Running   0          10m       pod-template-hash=4046164356,run=myapp

  

2)集合關係

  •  KEY in (VALUE1,VALUE2,...):集合中存在此健
  •  KEY notin (VALUE1,VALUE2,...):集合中不存在此健
  •  KEY:存在此健
  •  !KEY:不存在此健
[root@master ~]# kubectl get pods -l "release in (stable,beta,alpha)"
NAME                     READY     STATUS    RESTARTS   AGE
nginx-86d5b5ddb6-rwv2z   1/1       Running   0          9m
[root@master ~]# kubectl get pods -l "release notin (stable,beta,alpha)"
NAME                     READY     STATUS    RESTARTS   AGE
myapp-848b5b879b-5blnx   1/1       Running   0          12m
myapp-848b5b879b-6hgpp   1/1       Running   0          12m
myapp-848b5b879b-hzj5g   1/1       Running   0          12m

 

  未完待續,後續還會補充更多的kubectl 應用及演示。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 環境 虛擬機 系統:centos 7 IP:192.168.168.8 目錄:/opt 代理:nginx 資料庫:mysql 版本大於等於 5.6 mariadb 版本大於等於 5.5.6 更新yum yum update -y關閉防火牆與selinux firewall-cmd --state s ...
  • 通過之前的網路層基礎知識,IP地址以及路由器的簡介,大家應該對於TCP/IP有一個大致的瞭解,在腦海裡應該對於網路的幾個基礎概念有個大概的瞭解,簡單點說整個協議棧就是在做一件事,規定網路報文(網路傳輸中的數據報)的發送和接收,而整個協議棧內的協議,也是可以分為之前介紹過的鏈路層 》網路層 》傳輸層 ...
  • 預設防火牆firewall #停止firewall systemcl stop firewall.service #禁止firewall開機啟動 systemctl disable firewall.service 查看firewall狀態 firewall-cmd --state 防火牆iptab ...
  • 分散式,集群,雲電腦、大數據、負載均衡、高併發······當耳邊響起這些詞時,做為一個菜鳥程式猿無疑心中會激動一番(或許這是判斷是否是一個標準阿猿的標準吧)! 首先自己從巨集觀把控一下,通過上網科普自己遇到問題,然後再站在這些巨人的肩膀上解決問題。 問題:在大型WEB應用程系統中,由於請求的數量過大 ...
  • 命令: ifconfig 對應英文: configure a network interface 作用: 查看 / 配置電腦當前的網卡配置信息 安裝: sudo apt install net-tools 使用: # 查看網卡配置信息 ifconfig # 查看網卡對應的IP地址 ifconfig ...
  • 命令: shutdown 作用: 可以安全關閉或重啟啟動系統 選項: -r:重新啟動 註意: 不指定選項和參數,預設表示1分鐘之後,關閉電腦 遠程維護伺服器時,最好不要關閉系統,而是應該 加 -r 重啟系統 示例: # 重啟系統,其中now表示現在 shutdown -r now # 立刻關機 sh ...
  • 命令: | 作用: Linux允許將一個命令的輸出通過管道作為另一個命令的輸入,管道左側為寫入,右側為讀取 使用: 命令 | 命令 例子: 分頁顯示當前頁的目錄及文件詳情 ls -lha | more 查詢當前目錄下有python文字的目錄及文件 ls -lha | grep python ...
  • 命令: echo 作用: echo有重覆的意思,會在終端中顯示參數指定的文字,通常會和重定向聯合使用 使用: echo 文字內容 例子: 在終端中顯示hello echo hello 命令: > 和 >> 作用: Linux允許將命令執行結果重定向到一個文件,將本應顯示在終端上的內容 輸出 / 追加 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...