疫情期间学习了一下容器 K8S,特此整理如下笔记!
1、最终搭建的环境:
一台centos7.5的虚拟机Nginx做反向代理,IP 192.168.1.119
一台centos7.5的虚拟机做宿主机部署三个节点的discuz程序,IP192.168.1.123
2、discuz搭建出来的效果:
ng反向代理对外发布192.168.1.119的80端口提供统一服务。三个容器节点组成一个地址池,作为ng的upstream来分担不同用户的请求。同时,在容器的宿主机上部署一个共享卷,来存放discuz的数据库及应用程序。
2.1 三个discuz节点容器
discuz论坛的端口分别为8883/8881/8888
2.2 ng的反向代理的部分配置
2.3 最后效果:
浏览器访问ng发布的192.168.1.119,流量会以Iphash保持的方式分发给后端三个容器的应用上。实现流量的负载分担,业务的负载均衡。
3、docker容器部署过程。
3.1 一些必备的docker命令
docker image ls //查看本地所有镜像
docker container ls//查看所有运行的容器
docker container ls -a //查看所有运行中的容器
docker container start 容器ID// 启动容器
docker container stop 容器ID //停止容器
docker container run -it 容器ID //以交互的式的方式登录到容器内部
3.2 备份更新yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak //备份本地yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo //获取阿里yum源配置文件
yum makecache //更新cache
3.3 安装docker
yum install -y docker
3.4 查看版本
3.5 启动docker
systemctl restart docker
3.6 新建html和mysql两个文件
用来存放discuz程序和mysql数据库。
注意:做完此步骤,需要确认关闭selinux,否则会影响mysql php的安装。
3.7 修改daemon.json
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]
}
3.8 下载并启动基础镜像(以cnetos6.9为例)
[root@node1 vol]# docker pull centos:6.9 //下载镜像到本地
[root@node1 vol]# docker image ls //查看下载的镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos 6.9 2199b8eb8390 11 months ago 195 MB
docker run -it –name="zhaojie_centos_bbs" -v /opt/vol/mysql:/var/lib/mysql -v /opt/vol/html:/var/www/html 2199b8eb8390
//以交换式启动容器,同时经mysql 和php的目录分别挂在到新建的mysql 和html文件中。
3.9 安装安装LAMP软件
//通过3.8的启动,本步骤操作是在容器内部进行。
[root@27957da4a878 init.d]# yum install openssh-server -y //安装ssh server
[root@27957da4a878 init.d]# yum install httpd -y // 安装apahce
[root@27957da4a878 init.d]# yum install mysql mysql-server -y // 安装mysql
[root@node1 vol]# yum install php php-mysql -y //安装php
3.10 初始化所有程序
1)初始化ssh
[root@27957da4a878 init.d]# /etc/init.d/sshd start
Generating SSH2 RSA host key: [ OK ]
Generating SSH1 RSA host key: [ OK ]
Generating SSH2 DSA host key: [ OK ]
Starting sshd: [ OK ]
[root@27957da4a878 init.d]#
[root@27957da4a878 init.d]# /etc/init.d/sshd stop
Stopping sshd: [ OK ]
[root@27957da4a878 init.d]# echo "123456" |passwd root –stdin //设置root等密码
Changing password for user root.
passwd: all authentication tokens updated successfully.
[root@27957da4a878 init.d]#
2)初始化数据库
[root@27957da4a878 init.d]# /etc/init.d/mysqld start
Starting mysqld: [ OK ]
[root@27957da4a878 init.d]# mysql
mysql> grant all on *.* to root@'%' identified by '123'; //设置mysql远程登录信息
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on *.* to discuz@'%' identified by '123';
Query OK, 0 rows affected (0.00 sec)
mysql> create database discuz; // 新建discuz数据库,
Query OK, 1 row affected (0.00 sec)
3)初始化apahce
[root@27957da4a878 init.d]# /etc/init.d/httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2 for ServerName
[ OK ]
3.11 制作第一版镜像(具备LAMP环境)
[root@node1 ~]# docker commit 27957da4a878 zhaojie/centos6.9_lamp_v1
sha256:54689b0e1a4f3e46b73a976773c44a8803b54400867ffdd0c8ebbaecd52b6af6
[root@node1 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
zhaojie/centos6.9_lamp_v1 latest 54689b0e1a4f 6 seconds ago 400 MB
docker.io/centos 6.9 2199b8eb8390 11 months ago 195 MB
3.12 根据第一版镜像,启动新容器
3.13 删除discuz安装程序,制作第二版LAMP+bbs镜像
1) discuz程序上传到192.168.1.123的/html目录中。
2)制作镜像
[root@node1 html]# docker commit 7ff3f3f7ab17 zhaojie/centos6.9_sshd_lamp_bbs:v1
sha256:c52a25a18df77098ffbbf077f2b2247513c1c861955e52358103ea75b879be43
[root@node1 html]# docker image ls -a
REPOSITORY TAG IMAGE ID CREATED SIZE
zhaojie/centos6.9_sshd_lamp_bbs v1 c52a25a18df7 10 seconds ago 505 MB
zhaojie/centos6.9_lamp_v1 latest 54689b0e1a4f 3 hours ago 400 MB
docker.io/centos 6.9 2199b8eb8390 11 months ago 195 MB
3.14 创建启动脚本
注意:此步骤的目的是容器启动后自动启动myslq httpd进程,同时使用sshd -D命令夯在后台运行。
这个脚本放在html目录中,赋予可执行权限。
[root@docker html]# cd /opt/vol/html
[root@docker html]# cat init.sh
#!/bin/bash
/etc/init.d/mysqld
/etc/init.d/httpd
/usr/sbin/sshd -D
[root@node1 html]#
3.15 根据第二版镜像启动容器,映射端口,自动启动多服务
[root@node1 html]# docker container run -d –name="zhaojie_bbs_1" -v /opt/vol/mysql:/var/lib/mysql -v /opt/vol/html:/var/www/html -p 2222:22 -p 8888:80 -p 33060:3306 c52a25a18df7 /var/www/html/init.sh
88b0382947bb6a106b6aca865ac63675f943b45f1e9ddf0975237ae159aada74
[root@node1 html]#
run -d // 使用守护进程方式启动
-p 2222:22 -p 8888:80 -p 33060:3306 //分别以2222,8888,33060发布容器的22,80,3306端口
3.16 根据3.15启动命令模板,分别启动第二 三个容器
启动三个容器后结果如下
3.17 客户端访问测试
打开三个浏览器分别输入 http://192.168.1.123:8888/install http://192.168.1.123:8881/install http://192.168.1.123:8883/install
安装discuz程序。程序部署好后,访问首页如下:
至此,三个容器搭建完毕,
3.18 此环境容器小结
4 nginx安装配置
4.1 ng的安装
略
4.2 ng的配置
5 docker 网络简介
待补充
6 K8S 简介
待补充
原文链接:https://blog.csdn.net/zhaojie0708/article/details/104758937