1. 程式人生 > 實用技巧 >K8s 命令基礎

K8s 命令基礎

K8s 命令基礎

Namespace

建立:

  • kubectl create namespace xiaoqu
  • kubectl apply -f namespace.yaml

namespace.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: xiaoqu

注意

  • 名稱空間名稱滿足正則表示式a-z0-9?,最大長度為63位

刪除

  • kubectl delete namespace xiaoqu

獲取所有namesapce

  • kubectl get namespaces

注意

  • 刪除一個namespace會自動刪除所有屬於該namespace的資源。
  • default和kube-system名稱空間不可刪除。

Deployments

管理pod的擴容和收縮。pod的生死歸Deployments管。

  • 如果刪除service,deployments依舊會存在,並且pod也依舊存在。
  • 如果刪除pod,deployments依舊存在,並且會去建立新的pod, service 依舊存在。
  • 如果刪除deployments,pod會被刪除,

services

services 本質上是通過pod的上的label selector 對一組pod進行彙總,路由分發,負載均衡等操作。

pod

注意

通過yaml建立的pod 不可通過修改yaml,修改pod的屬性,只能刪除pod,然後再去apply yaml 建立新的。

擴容回滾等常用命令

## 擴容
kubectl scale deployment nginx-deployment --replicas 10
## 自動拓展
kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu-percent=80
## 更新映象 還可以更新其他東西比如ENV, 
kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1
## 回滾 可通過 --to-revision 指定版本
kubectl rollout undo deployment/nginx-deployment
## 檢視版本記錄
kubectl rollout history deployment
## 獲取pods帶著label
kubectl get pods --show-labels
## 獲取執行著的service的yaml
kubectl get service hello-kube -o yaml
## pod 更新策略
kubectl get rs

常用yaml模版

service

apiVersion: v1
kind: Service
metadata:
  name: hello-kube-d
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app: hello-kube-d

deployments

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-kube-d
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello-kube-d
  template:
    metadata:
      labels:
        app: hello-kube-d
    spec:
      containers:
      - name: hello-kube-d
        image: paulbouwer/hello-kubernetes:1.8
        ports:
        - containerPort: 8080
        env:
        - name: MESSAGE
          value: hello-kube-d

pods

apiVersion: v1
kind: Pod
metadata:
  name: hello-kube
spec:
  hostNetwork: true
  containers:
  - name: hello-kube
    image: paulbouwer/hello-kubernetes:1.8
    ports:
    - containerPort: 8080
    env:
    - name: MESSAGE
      value: "hello-kube"

namespaces

apiVersion: v1
kind: Namespace
metadata:
  name: xiaoqu

configMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: hello-kube-config
  labels:
    name: hello
data:
  MESSAGE: "message"
  name: "hello"