面向業務開發者的 k8s 基本命令

隨着容器技術的發展,k8s 也越來越火熱。在網絡上有許多關於 k8s 的文章,但大部分都是關於集羣部署相關的,

而這篇文章主要講作爲應用開發者如何使用 k8s 。

準備

預備知識

  • Docker,學習 k8s 之前瞭解 Docker 是毋庸置疑的。

工具

brew install kubectl
複製代碼

kubectl 是 k8s 的命令行工具,用於管理 k8s 集羣。以上是 Mac 下的安裝方法,其它操作系統參考官方文檔。當然,你也可以使用 Dashboard 管理容器。

Cluster

k8s 集羣,一般生產環境有一個 Cluster 集羣,測試環境有一個 Cluster 集羣。

Namespace

在一個 Cluster 會有不同的 Namespace,可以區分不同的業務團隊。

Pod

Pod 是 k8s 中最小的可部署單元。一般一個 Pod 運行一個 Container,但是有時也會運行多個 Container。類似 docker-compose。

Deployment

Deployment 用來控制 Pod,比如控制一個應用起幾個 Pod。

配置文件

關於 k8s 的配置文件位置在 ~/.kube/config。另外也可以使用命令 kubectl config 查看以及更改配置,使用命令更改配置的同時,配置文件也會改變。

配置文件可以指定 ClusterNamespaceUser 的配置,並設置 Context。以下是一個簡版的配置文件。

# 該配置文件配置了一個用戶 shanyue,一個集羣 dev,並且設置了 dev 的 context apiVersion: v1 clusters: - cluster:  certificate-authority: /Users/shanyue/.minikube/ca.crt  server: https://192.168.99.100:8443  name: dev contexts: - context:  cluster: dev  namespace: Business  user: shanyue  name: dev current-context: dev kind: Config preferences: {} users: - name: shanyue  user:  client-certificate: /Users/shanyue/.minikube/client.crt  client-key: /Users/shanyue/.minikube/client.key 複製代碼

其中 current-context 代表當前上下文,也可以通過以下命令來設置上下文。

# 查看配置
kubectl config view

# 查看集羣列表
kubectl config get-clusters

# 查看 Context 列表
kubectl config get-contexts

# 設置當前 Context
kubectl config use-context dev
複製代碼

創建資源

kubectl create 代表根據文件創建資源,可以是 Deployment,也可以是 Pod。

kubectl run 代表根據鏡像創建資源。

kubectl create -f app.yaml

kubectl run --image=k8s.gcr.io/echoserver:1.10 --port=8080
複製代碼

一般在 CI 中作 deploy 時會使用 kubectl apply 命令,根據配置文件更新資源。

配置文件中可以寫多份配置,也可以寫 DeploymentService 各種 Kind 配置。以下是以 node 作爲服務器語言樣例的配置。

apiVersion: v1 kind: Service metadata:  name: app  namespace: dev  labels:  name: app spec:  ports:  - port: 8080  targetPort: 8080  protocol: TCP  selector:  name: app --- apiVersion: extensions/v1beta1 kind: Deployment metadata:  name: app  namespace: dev  labels:  name: app spec:  template:  metadata:  labels:  name: app  spec:  containers:  - name: app  image: node  imagePullPolicy: Always  env:  - name: PORT  value: "8080"  ports:  - containerPort: 8080 複製代碼

訪問資源

以下 $app 代表特定 Pod 的 Name

# 獲取當前 Context 下所有的 Deployment
kubectl get deployments

# 獲取當前 Context 下所有的 Pod
kubectl get pods

# 獲取當前 Cluster 下所有的 Pod
kubectl get pods --all-namespaces

# 獲取特定 Pod 的狀態
kubectl describe pod $app

# 進入某個 Pod 容器裏邊的命令行
kubectl exec -it $app bash

# 查看某個 Pod 的日誌
kubectl logs $app

本文轉自掘金-面向業務開發者的 k8s 基本命令
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章