购买服务器(4台-1核2G 一主三从)
确保余额大于100
按量付费,用完即刻释放
主要在同个网段,不然后面互相ping不通需要去做linux认证
k8s至少一个月时间精通,2000元
(xshell同步操作省时间)同步安装
xshell免费版最多开四个链接
1、yum安装gcc相关环境(确保虚拟机可以上外网)
yum -y install gcc
yum -y install gcc-c++
2、卸载旧的版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
3、需要的安装包
yum install -y yum-utils
4、设置镜像的仓库
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 推荐使用阿里云的
5、更新yum软件包索引
yum makecache fast
6、安装docker相关的 docker-ce 社区 ee 企业版
yum install -y docker-ce docker-ce-cli containerd.io
7、启动docker
systemctl start docker
8、使用docker version 是否安装成功
9、配置加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xa2xb78w.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
swarm地址:https://docs.docker.com/engine/swarm/
Rft 一致性算法
命令1:初始化节点docker swarm init
--advertise-addr
公网/私网
(ip addr 自己查询)
docker swarm init --advertise-addr 本机ip地址(私网)不需要流量省钱hh
命令2:docker swarm join
加入一个节点
# 获取令牌
docker swarm join-token manager
docker swarm join-token worker
执行上面图片所示的命令,这个命令可以在主节点输入上面两个命令其中一个得到,之后复制到另外的节点执行即可
docker swarm join --token SWMTKHxxxxxxxx xxx.xxx.xxx:xxxx
把后面的节点都搭建进去,类似操作
docker node ls
1、生成主节点init
2、加入(管理者、worker)
目标:双主双从已达成
双主双从:假设一个节点挂了!其他节点是否可用!
Raft协议:保证大多数节点存活才可以用,只要>1,集群至少大于3台
1、将docker1机器停止。宕机!双主,另外一个节点也不能使用了
# 关闭docker
在主节点执行:systemmctl stop docker
docker4节点也是主节点,能用吗?事实是不能!
但docker1重启后已经不是老大了
2、可以将其他节点离开
docker swarm leave
3、work就是工作的,管理节点操作!3台机器设置为了管理节点
4.总结
集群,就是要保证可用!3个主节点, >1台管理节点存活!
Raft协议:保证大多数节点存活,才可以使用,高可用
弹性、扩缩容!集群!
以后告别docker run!
docker-compose up!启动一个项目。单机!
集群:swarm docker service
容器=》服务!
容器=》服务!=》副本!
redis服务=》10个副本(同时开启10个redis容器)
docker service xxx
创建服务、动态扩展服务、动态更新服务
升级网站的方式:灰度发布:金丝雀发布!
docker service create -p 8888:80 --name my-nginx nginx
# docker run 容器启动!不具有扩缩容器
#docker service 服务!具有扩缩容器,滚动更新!
也可以看更具体的信息
docker server inspect
先run一个容器,把它当成副本
# 更新副本数
docker service update --replicas 数量 容器名
服务,集群中任意的节点都可以访问。服务可以有多个副本动态扩缩容实现高可用!
# 扩缩容
docker server scale my-nginx=数量
上面这两个操作本质是已有的,没什么区别
扩缩容:不同机子可以自由分配容器
弹性:随时都可以去进行扩缩容
案例:云服务的公司都可以根据这个操作去提供服务器的利用效率
k8s的云原生应用
docker swarm其实并不难
命令也就几个,基本上面都试完了
只要会搭建集群、会启动服务、动态管理容器即可!
**warm:**集群的管理和编号。docker可以初始化一个swarm集群,其他节点可以加入。(管理,工作者)
node: 就是一个docker节点。多个节点组成一个网络集群。(管理、工作者)
**Service:**任务,可以在管理节点或者工作节点来运行。核心!用户访问!
**Task:**容器内的命令,细节任务!
都是官方文档有的东西,有时间研读一下即可
命令->管理->api->调度->工作节点(创建Task容器维护创建!)
调整service以什么方式运行
Swarm:
Overlay:让集群的网络形成一个整体,绑定一起
ingress:特殊的Overlay网络!负载均衡的功能!IPVS VIP
虽然docker在4台机器上,实际网络是同一个!ingress网络,是一个特殊的Overlay网络
容器就是玩具,脱离了编排没有任何意义!
docker-compose 单机部署项目!
Docker Stack部署,集群部署!
就几个简单的命令,网上一搜一堆命令说明。
甚至还有一些项目案例可参考
# 单机
docker-compose up -d wordpress.yaml
# 集群
docker stack deploy wordpress.yaml
# docker-compose 文件
version: '3.4'
services:
mongo:
image: mongo
restart: always
networks:
- mongo_network
deploy:
restart_policy:
condition: on-failure
replicas: 2
mongo-express:
image: mongo-express
restart: always
networks:
- mongo_network
ports:
- target: 8081
published: 80
protocol: tcp
mode: ingress
environment:
ME_CONFIG_MONGODB_SERVER: mongo
ME_CONFIG_MONGODB_PORT: 27017
deploy:
restart_policy:
condition: on-failure
replicas: 1
networks:
mongo_network:
external: true
安全!配置密码,证书!
学习方式:网上找案例跑一下试试!查看命令帮助文档 --help,官网!
云原生时代
云应用
比如电商网站下载下来,修改一些配置!就变成自己的网站
微服务学完,但k8s必学
10台机子以上必然要回k8s
先学go在学k8s会更好
Docker是Go开发的
k8s也是Go的项目
Etcd都是Go的项目
Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
go 指针!-》入门-》基础语法-》高级对象-》如何操作数据库-》框架
关于以上知识点感觉不够的小伙伴,可以进来这里辅助细节学习:https://juejin.cn/post/6967598675820281870
最后,把一位秀儿的评论截取下来:
那些口口声声,JAVA越来越难学的人,应该看着你们,像我一样。我看着你们,满怀羡慕。人类研究了几十年的代码调优,所有的Exception和Error,像是专门为你们准备的礼物。Spring繁荣、中间件繁茂、数据库繁华,现代Java的成果被层层打开,可以尽情地享用。自由学习一门框架,学习一种中间件,欣赏一部(培训班)教学视频,去遥远的地方提issue。很多人,从小你们就在自由探索自己的兴趣,很多人在入行就成为了Spring Collaborator,不惑于自己喜欢什么,不喜欢什么。人与人之间的壁垒被打破。你们只凭相同的引入依赖,就能安装千万个相同的Jar包。你们拥有了我们曾经梦寐以求的权利,自由引入Jar包的权利。你所热爱的,就是你的996!你们有幸遇见这样的Java,但是Java更有幸遇见这样的你们。我看着你们,满怀敬意,向你们的专业态度致敬!你们正在把面向过程的变成面向对象的,把一体的变成分布式的,把的单个的变成集群的,把私有的变成开源的。你们把自己的热爱,变成了一个和成千上万的人分享Java写法的事业,向你们的自信致敬!弱小的人,才害怕新的框架和版本。内心强大的人,从不畏惧高可用与高并发。向你们的大气致敬!小白同而不和,大神美美与共,和而不同。更年轻的身体,容得下更多元的代码风格、编程范式和技术栈。有一天我终于发现,不只是我们在教你们如何提高代码效率,你们也在启发我们怎样去更好地摸鱼。那些抱怨一代不如一代的人,应该看看你们,就像我一样。我看着你们,满怀感激。因为你们,这个世界会更喜欢Java。因为一个社区最好看的风景,就是这个社区的伸手党。因为你们,这世上的文档、博客、专栏所表现的程序员就不再是谢顶、猝死、迷茫,而是NullPointException、ClassNotFoundException、SQLException、StackOverflowError,是心里有福报,眼里有加班,不用活到我们想象中的寿命。我们这一代人的想象力不足以想象你们null的未来,如果你们依然需要我们的祝福,那么——上线吧,Java!我们在同一个残废的互联网!
linux入门–服务器购买—宝塔部署环境说明
Nginx简单入门–学习笔记狂神说
Docker基础01–入门总结–(狂神说docker学习笔记)
Docker基础02–Docker容器数据卷详解–(狂神说docker学习笔记)
Docker基础03–Dockerfile详解与镜像发布–(狂神说docker学习笔记)
Docker基础04–Docker网络–(狂神说docker学习笔记)
Docker进阶01–Docker Compose–(狂神说docker学习笔记)
Docker进阶02–Swarm集群、Stack、Secret、Config–(狂神说docker学习笔记)完结撒花
Docker知识点翻阅手册–Docker常用命令、Dockererfile、Compose、网络等整理合集
Docker实战:Mysql、Nginx、web的Docker化部署(安装、自定义镜像、compose管理容器、自定义网络、部署问题及解决)