Docker Swarm实践,Kubernetes部署
1. 创建Swarm集群
起始管理节点server3
[root@server3 ~]# docker swarm init
[root@server1 ~]# docker swarm join --token SWMTKN-1-0ai1jizq34dpwwpdzv2idzd5s9oc125370uba6x3goxu8k9r7o-42zx2bxjcbpfkvosy0shkrvqf 172.25.16.3:2377
[root@server2 ~]# docker swarm join --token SWMTKN-1-0ai1jizq34dpwwpdzv2idzd5s9oc125370uba6x3goxu8k9r7o-42zx2bxjcbpfkvosy0shkrvqf 172.25.16.3:2377
[root@server4 ~]# yum install -y docker-ce
[root@server4 ~]# systemctl start docker.service
[root@server4 ~]# systemctl enable docker.service
[root@server4 ~]# docker swarm join --token SWMTKN-1-0ai1jizq34dpwwpdzv2idzd5s9oc125370uba6x3goxu8k9r7o-42zx2bxjcbpfkvosy0shkrvqf 172.25.16.3:2377
[root@server3 ~]# docker node ls
[root@server3 ~]# docker node promote server2
Node server2 promoted to a manager in the swarm.
[root@server3 ~]# docker node demote server3
Manager server3 demoted in the swarm.
[root@server2 ~]# docker node rm 1ky8tkb6whfrh6cck5fg67fts --force
删除server3节点
[root@server2 ~]# docker node ls
[root@server3 ~]# cd /etc/sysctl.d/
[root@server3 sysctl.d]# ls
99-sysctl.conf docker.conf
[root@server3 sysctl.d]# scp docker.conf server1:/etc/sysctl.d
[root@server3 sysctl.d]# scp docker.conf server2:/etc/sysctl.d
[root@server3 sysctl.d]# scp docker.conf server4:/etc/sysctl.d
各个节点执行sysctl --system 消除 docker info 警告
[root@server3 ~]# docker load -i myapp.tar
[root@server3 ~]# cd harbor/
[root@server3 harbor]# docker-compose ps
[root@server2 docker]# scp -r certs.d/ server1:/etc/docker/
[root@server2 docker]# scp -r certs.d/ server4:/etc/docker/
[root@server3 harbor]# cd /etc/docker/
[root@server3 docker]# ls
certs.d daemon.json key.json
[root@server3 docker]# vim /etc/hosts
[root@server3 docker]# docker tag ikubernetes/myapp:v1 reg.westos.org/library/myapp:v1
[root@server3 docker]# docker tag ikubernetes/myapp:v1 reg.westos.org/library/myapp:v2
[root@server3 docker]# docker push reg.westos.org/library/myapp:v1
[root@server3 docker]# curl 172.25.16.2/hostname.html
[root@server2 docker]# docker service create --name webservice --publish 80:80 --replicas 3 nginx
2. 部署swarm监控
[root@server2 ~]# docker service ps webservice
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
e6tywhaqrcop webservice.1 myapp:v1 server2 Running Running 45 minutes ago
3tqli05kpp84 webservice.2 myapp:v1 server4 Running Running 45 minutes ago
wgcrtytzjpco webservice.3 myapp:v1 server1 Running Running 45 minutes ago
[root@server2 ~]# docker service create \
> --name=viz \
> --publish=8080:8080/tcp \
> --constraint=node.role==manager \
> --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
> visualizer
3. 实现业务滚动更新
[root@server2 docker]# docker service create --name my_web --replicas 3 -p 80:80 myapp:v1
[root@server1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myapp <none> d4a5e0eaa84f 2 years ago 15.5MB
[root@server4 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myapp <none> d4a5e0eaa84f 2 years ago 15.5MB
[root@server2 docker]# docker service scale my_web=10
[root@server3 ~]# docker pull ikubernetes/myapp:v2
[root@server3 ~]# docker tag ikubernetes/myapp:v2 reg.westos.org/library/myapp:v2
[root@server3 ~]# docker push reg.westos.org/library/myapp:v2
4. 脚本自动化部署
[root@server3 ~]# docker load -i visualizer.tar
[root@server3 ~]# docker tag dockersamples/visualizer:latest reg.westos.org/library/visualizer:latest
[root@server3 ~]# docker push reg.westos.org/library/visualizer:latest
[root@server2 ~]# vim docker-compose.yml
[root@server2 ~]# docker stack deploy -c docker-compose.yml mycluster
[root@server2 ~]# cat docker-compose.yml
version: "3.8"
services:
web:
image: myapp:v2
ports:
- "80:80"
networks:
- webnet
deploy:
replicas: 60
update_config:
parallelism: 20
delay: 5s
restart_policy:
condition: on-failure
visualizer:
image: visualizer:latest
ports:
- "8080:8080"
stop_grace_period: 1m30s
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
placement:
constraints:
- "node.role==manager"
networks:
webnet: