Docker 命令和 Kubectl 命令有很多相似的地方,Docker 操作容器,Kubectl 操作 Pod(容器的集合)等
Docker
$ docker run -d --restart=always -e DOMAIN=cluster --name nginx-app -p 80:80 nginx
Kubectl
$ kubectl run --image=nginx nginx-app --port=80 --env="DOMAIN=cluster"
$ kubectl expose deployment nginx-app --port=80 --name=nginx-http
注意: kubectl run
会创建一个 Deployment 并且默认会在后台运行,以上面的代码为例它的名称为 nginx-app。默认情况 Deployment 并不会将端口暴露出去,所以我们还需要使用 kubectl expose
暴露端口以供访问,此时还会创建一个同名的 Service。
Docker
$ docker ps
Kubectl
$ kubectl get pods
$ kubectl get deployment
$ kubectl get service
Docker
$ docker exec -it 容器 ID/NAME /bin/bash
Kubectl
$ kubectl exec -it 容器名 -- /bin/bash
Docker
$ docker logs -f 容器 ID/NAME
Kubectl
$ kubectl logs -f 容器名
Docker
$ docker stop 容器 ID/NAME
$ docker rm 容器 ID/NAME
Kubectl
$ kubectl delete deployment Deployment 名称
$ kubectl delete service Service 名称
注意: 不要直接删除 Pod,使用 kubectl 请删除拥有该 Pod 的 Deployment。如果直接删除 Pod,则 Deployment 将会重新创建该 Pod。
Docker
$ docker version
Kubectl
$ kubectl version
Docker
$ docker info
Kubectl
$ kubectl cluster-info
小提示: 所有命令前都可以加上 watch
命令来观察状态的实时变化,如:watch kubectl get pods --all-namespaces
$ kubectl get cs
$ kubectl cluster-info
$ kubectl get nodes -o wide
$ kubectl -n kube-system get cm kubeadm-config -oyaml
$ kubectl run nginx --image=nginx --replicas=2 --port=80
$ kubectl expose deployment nginx --port=80 --type=LoadBalancer
$ kubectl get namespace
apiVersion: v1
kind: Namespace
metadata:
name: development
$ kubectl get pods -o wide
$ kubectl get deployment -o wide
$ kubectl get service -o wide
$ kubectl describe pod <Pod Name>
$ kubectl describe deployment <Deployment Name>
$ kubectl describe service <Service Name>
$ kubectl logs -f <Pod Name>
$ kubectl delete deployment <Deployment Name>
$ kubectl delete service <Service Name>
$ kubectl create -f <YAML>
$ kubectl delete -f <YAML>
$ kubeadm config view
$ kubectl config view
$ kubectl get ingress
$ kubectl get pv
$ kubectl get pvc
$ kubectl get cm <ConfigMap Name>
$ kubectl edit cm <ConfigMap Name>
更多干货请移步:https://antoniopeng.com