您好,登錄后才能下訂單哦!
這篇文章主要講解了“Kubernetes管理的基本教程”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Kubernetes管理的基本教程”吧!
Kubernetes的編排基本單元是Pod,故而哪怕你只有一個Container,也要創建一個Pod來容納這個Container.
apiVersion: v1 kind: Pod metadata: name: hello-world # pod資源名稱,集群unique的 spec: # specification of the pod’s contents restartPolicy: Never # 運行這個容器一次,然后就結束這個pod containers: - name: hello # 只是這個container的nickname image: "ubuntu:14.04" # image 名, 默認使用Docker Hub command: ["/bin/echo","hello”,”world"]
部分解釋見上,其中command覆蓋了Docker容器的Entrypoint
, Command參數(對應于Docker的Cmd)可以使用args
來聲明:
command: ["/bin/echo"] args: ["hello","world"]
創建pod則為:
$ kubectl create -f ./hello-world.yaml --validate # 將會進行驗證并且給出WARN,但是出問題的話,依然會創建Pod,會輸出WARN信息 pods/hello-world
apiVersion: v1 kind: Pod metadata: name: hello-world spec: # specification of the pod’s contents restartPolicy: Never containers: - name: hello image: "ubuntu:14.04" env: # 這是一個環境變量 - name: MESSAGE value: "hello world" command: ["/bin/sh","-c"] # Kubernetes并不會自動運行shell,需要手動指定 args: ["/bin/echo \"${MESSAGE}\""] # 這是用到的環境變量展開
如果沒有shell我們的環境變量依然可以用$(ENVVAR)
來展開。例如:
command: ["/bin/echo"] args: ["$(MESSAGE)"]
##2. 查看Pod的狀態##
$ kubectl get pods NAME READY STATUS RESTARTS AGE hello-world 0/1 Pending 0 0s
狀態如下:
unscheduled - 一開始創建POD,還沒選擇到節點來運行Pod,然后立即schedule
scheduled - Pod已經被Scheduled,準備在目標節點pull鏡像
running - 從鏡像啟動容器成功, READY列表示多少個容器正常
ExitCode:0 - 正常退出,容器不再運行
##3. 刪除Pod##
$ kubectl delete pod hello-world pods/hello-world
或者 resource/name 格式來刪除
$ kubectl delete pods/hello-world pods/hello-world
會把容器和其輸出的日志都刪除。
##4. 創建Replication Controller## Replication Controller可以保證『副本數量正確』的Pod在運行,下面簡稱RC/rc。下面是2副本的Nginx:
apiVersion: v1 kind: ReplicationController # 不再是Pod metadata: name: my-nginx spec: replicas: 2 template: # 這是一個PodTemplateSpec,下面聲明了Pod的規范 metadata: # 無需聲明Pod名稱,因為他們由RC自動生成 labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 # 對外開放的端口
##5. 刪除Replication Controller##
$ kubectl delete rc my-nginx replicationcontrollers/my-nginx
Kubernetes使用Lable來分類、識別不同的資源集合,例如Pods和Replication Controllers。 我們可以用app
這個key和nginx
這個value來讀取pods和rc:
$ kubectl get pods -L app NAME READY STATUS RESTARTS AGE APP my-nginx-afv12 0/1 Running 0 3s nginx my-nginx-lg99z 0/1 Running 0 3s nginx $ kubectl get rc my-nginx -L app CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS APP my-nginx nginx nginx app=nginx 2 nginx
也可以使用golang的模板來獲取信息
$ kubectl get rc my-nginx -o template --template="{{.spec.selector}}" map[app:nginx]
下面是一個服務的yaml文件。服務是與Pod松耦合的。可以自由組合。一旦創建完畢就分配一個clusterIP,而對這個clusterIP會有個簡單的load balancer.
apiVersion: v1 kind: Service metadata: name: nginxsvc labels: app: nginx spec: ports: - port: 80 # 訪問的地址為 http://clusterIP:80/ protocol: TCP selector: # 意思是由app=nginx的pod來處理 app: nginx
一個Service背后可以有多個endpoints,來進行處理。
$ kubectl describe svc nginxsvc Name: nginxsvc Namespace: default Labels: app=nginx Selector: app=nginx Type: ClusterIP IP: 10.0.116.146 Port: <unnamed> 80/TCP Endpoints: 10.245.0.14:80,10.245.0.15:80 Session Affinity: None No events. $ kubectl get ep NAME ENDPOINTS nginxsvc 10.245.0.14:80,10.245.0.15:80
感謝各位的閱讀,以上就是“Kubernetes管理的基本教程”的內容了,經過本文的學習后,相信大家對Kubernetes管理的基本教程這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。