docker集群常用命令
docker集群常用命令
docker swarm
要求
一个 Swarm 集群至少需要一个 Manager 节点,如果有多个,则推选一个为 Leader;Worker 可以有零个至多个。
集群的创建与销毁
- 创建 Manager
docker swarm init --advertise-addr xxx.xxx.xxx.xxx
- 创建 Worker
docker swarm join -token ******
- 查看 token
docker swarm join-token manager/woker
- 查看 node
doker node ls
- worker 离开集群
docker swarm leave
- Manager 离开集群
docker swarm leave --force
节点管理
-
AVAILABILITY 的三种状态
- Active:调度器能够将任务安排到这个节点
- Pause:调度器不能将新的任务安排到这个节点,但是已有的任务会继续运行
- Drain:调度器不能安排新的任务到这个节点,同时这个节点以运行的任务将被停止,分配到其他的节点上
-
MANAGER STAUTS 的状态
- Leader:主要管理者节点
- Reachable:如果 Leader 节点不可用,则这这些节点有资格选举为新的 Leader
- Unavailable:该节点不能和其他 Manager 节点产生任何联系,
这种情况下,应该添加一个新的 Manager 节点到集群,或者将一个 Worker 节点提升为 Manager 节点
-
检查节点的详细信息
docker node inspect <node-id> --pretty
- 变更节点可用性
docker node update --availability <status> <node>
- 升级降级节点
1. 升级
docker node promote <node>
2. 降级
docker node demote <node>
-
Service 部署
- 创建服务
docker service create --name <name> <image>
- 查看服务
docker service ls
- 更新服务
docker service update --publish-add 8080:80 <name>
- 回滚服务
docker service rollback <name>
- 扩容服务
docker service scale <name>=<int num>
- 移除服务
docker service remove <name>
- 列出服务
docker service ls
docker service ps <name>
docker service inspect <name>
-
Service 存储
- 数据卷挂载
docker service create \
--mount type=volume,src=<volume-name>, dst=<container-path> \
--name <name> \
<image>
- 数据卷创建
docker volume create <volume-name>
- 数据卷详细信息
docker volume inspect <volume-name>
- 删除数据卷
docker volume rm <volume-name>
- 批量删除未挂载数据卷
docker volume prune
-
Docker Stack
- 部署 stack
docker stack deploy [option] STACK
ps: docker stack deploy -c compose.yaml <name>
- 列出 Stack
docker stack ls
- 服务列表
docker stack services <stack-name>
- 任务列表
docekr stack ps <stack-name>
- 更新 stack
# 重新部署即可
docker stack deploy [option] STACK
- 删除 stack
docker stack rm <stack-name>
kubernetes
-
集群的创建与加入
- 初始化集群主节点
kubeadm init --apiserver-advertise-address $(hostname -i)
- 初始化集群网络
kubectl apply -n kube-system -f \
"https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 |tr -d '\n')"
- 加入集群
kubeadm join xxx.xxx.xxx.xxx:x --token ****** --discovery-token-ca-cert-hash ******
- 查看节点
kubectl get nodes
kubectl get nodes -o wide
- 获取一些信息(get)
1. replication-control
kubectl get rc
2. replicas-set
kubectl get rs
3. deployment
kubectl get deploy
4. service
kuctl get svc
5. namespace
kuberctl get namespace
6. pod
kubectl get pod <po-name>
- 获取详细信息(describe)
1. pod
kubectl describe po <po-name>
2. service
kubectl describe svc
- 创建 Pod
kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]
ps: kubectl run nginx --image=nginx --port=80
- 删除 Pod
kubectl delete deployment <deploy-name>
- kubectl create
kubectl create -f <name.yaml>
- kubectl delete
kubectl delete -f <name.yaml>
kubectl delete po <pod-name>
kubectl delete po -lapp=nginx-2
- kubectl apply
kubectl apply -f <name.yaml>
- kubectl logs
kubectl logs <pod-name>
- rolling-update
1. 更新
kubectl rolling-update <name> -f <name.yaml>
2. 回滚
kubectl rolling-update <name> —rollback
- kubectl scale
kubectl scale rs <name> —replicas=<int>
kubectl autoscale rc <name> --min=1 --max=4
- kubectl exec
kubectl exec <po-name> [cmd]