k8s 面嚮應用開發人員的基礎命令

來源:互聯網
上載者:User

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

而這篇文章主要講作為應用開發人員如何使用 k8s 。

準備

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 view 查看配置。

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

apiVersion: v1clusters:- cluster:    certificate-authority: /Users/shanyue/.minikube/ca.crt    server: https://192.168.99.100:8443  name: Devcontexts:- context:    cluster: k8s-dev    namespace: edu-dev    user: shanyue  name: devcurrent-context: devkind: Configpreferences: {}users:- name: shanyue  user:    client-certificate: /Users/shanyue/.minikube/client.crt    client-key: /Users/shanyue/.minikube/client.key

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

kubectl config use-context dev

建立資源

kubectl create 代表根據檔案建立一個資源,可以是 Deployment,也可以是 Pod。

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

kubectl create -f app.yamlkubectl run --image=k8s.gcr.io/echoserver:1.10 --port=8080

一般在 CI 中作 deploy 時會使用 kubectl apply 命令,代表根據設定檔進行建立或更新。

設定檔中可以寫多份配置,也可以寫 Deployment,Service 的各種配置。以下是以 node 作為伺服器語言範例的配置。

apiVersion: v1kind: Servicemetadata:  name: app  namespace: dev  labels:    name: appspec:  ports:  - port: 8080    targetPort: 8080    protocol: TCP  selector:    name: app---apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: app  namespace: dev  labels:    name: appspec:  template:    metadata:      labels:        name: app    spec:      containers:      - name: app        image: node        imagePullPolicy: Always        env:        - name: PORT          value: "8080"        ports:        - containerPort: 8080

訪問資源

# 擷取當前 Context 下所有的 Deploymentkubectl get deploymentskubectl get pods# 擷取當前 Cluster 下所有的 Deploymentkubectl get pods --all-namespaces# 擷取特定 Pod 的狀態kubectl describe $pod app# 進入某個 Pod 容器裡邊的命令列kubectl exec -it $app bash# 查看某個 Pod 的日誌kubectl logs app
相關關鍵詞:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.