K8s 命令基礎
阿新 • • 發佈:2020-07-30
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"