当前位置: 首页 > news >正文

Docker 模拟 kubernetes 的 pod

1.安装Docker 环境

1.安装 epel 源

yum install -y epel-release

它是为了给我们的bridge utils 提供我们对应的 源支持

2.安装 bridge-utils

yum install -y bridge-utils

3.加载 br_netfilter 模块

modprobe br_netfilter
echo 'br_netfilter' >> /etc/modules-load.d/bridge.conf
echo 'net.bridge.bridge-nf-call-iptables=1' >> /etc/sysctl.conf
echo 'net.bridge.bridge-nf-call-ip6tables=1'>> /etc/sysctl.conf
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p

含义是所有经过网球的流量 必须要被防火墙所处理

并且把这个模块 添加到我们的开机自启的文件中 再在我们的内核配置文件中添加三个选项

  1. 在ipv4下所有网桥的流量 都必须要被防火墙所回掉
  2. ipv6下的回掉
  3. 以及开启路由转发

sysctl -p 刷新生效

4.安装 yum 必要的包管理工具

yum -y install yum-utils device-mapper-persistent-data lvm2

5.配置docker 镜像源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

6.安装docker

sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

7.配置 daemon

sudo cat <<EOF > /etc/docker/daemon.json
{
    "default-ipc-mode": "shareable",
    "data-root": "/data/docker",
    "exec-opts": ["native.cgroupdriver=systemd"],
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "100m",
        "max-file": "100"
    },
    "insecure-registries": ["harbor.xinxainghf.com"],
    "registry-mirrors": ["https://kfp63jaj.mirror.aliyuncs.com"]
}
EOF

简单介绍一下  

第一个选项 :指定当前的IPC的模式是允许共享的 在 1903以后 IPC的默认共享状态被关闭了 所以我们要特殊设置一下

第二个选项 :就是指定当前的docker 的根目录在哪里

第三个选项 :指定当前的一些启动的额外参数 比如 指定cgroup驱动程序为systemd 官方建议指定为systemd

第四个选项 :指定当前的日志驱动为 json-file 保存json格式

第五个选项 :以及单文件的最大大小 以及保存最大文件数量

第六个选项 :指定当前信任的仓库地址

第七个选项 :以及当前的镜像官方仓库的地址

8.创建docker 的service 管理目录

mkdir -p /etc/systemd/system/docker.service.d

9.重启docker服务

systemctl daemon-reload
systemctl restart docker
systemctl enable --now docker

2.基于 Docker 模拟pod-1

1.编写Nginx 配置文件

cat <<EOF>> ./nginx.conf
error_log stderr;
events { worker_connections 1024;}
http {
  access_log /dev/stdout combined;
  server {
    listen 80 default_server;
    server_name example.com www.example.com;
    location / { 
      proxy_pass http://127.0.0.1:2368;
    }
  }
}
EOF

2.启动 k8s.gcr.io/pause:3.1 容器

docker run --name pause -p 8080:80 -d k8s.gcr.io/pause:3.1
docker run --name nginx -v `pwd`/nginx.conf:/etc/nginx/nginx.conf --net=container:pause --ipc=container:pause --pid=container:pause -d nginx 

跟容器 pause 共享 网络 ipc pid 

docker run -d --name ghost --net=container:pause --ipc=container:pause --pid=container:pause ghost:4.48.2

ghost php 编写的 一个 个人博客系统

完美运行

共享 net ipc pid 形成的 就是 pod的 基本结构

pause相当于nginx和ghost的监控,当nginx或者ghost挂了,可以重新创建一个新pod代替老pod

pause 可以在程序死亡的时候重启 进程 但是 nginx不可以 

pause 可以回收僵尸进程 nginx 不可以 

这就是 pause 的优势 也就是为什么 要用独立的pause去给别的容器共享

同一个pod当中容器必须相互通信,这是k8s规定的

只要符合这样的逻辑都叫做 pod 这是 一个 概念 不是k8s 专属的

相关文章:

  • 【C++】:STL详解 —— priority_queue类
  • docker关闭mysql端口映射的使用
  • 计算机基础面试(数据结构)
  • Laravel从入门到精通:开启高效开发之旅
  • C++:多态与虚函数
  • Leetcode 刷题记录 01 —— 哈希
  • 《Java 加密工具与技术》8: X.509证书和属性证书
  • 【计算机网络】考研复试高频知识点总结
  • Android Studio 安装2022版稳定版 2022.3.1 详细操作(带图展示)
  • 机器学习算法——分类任务
  • 【网络安全 | 漏洞挖掘】分享21个基础漏洞案例
  • 两台Win电脑局域网ssh免密登录
  • 【股票数据API接口49】如何获取股票历史交易数据之Python、Java等多种主流语言实例代码演示通过股票数据接口获取数据
  • Spring事务
  • 如何停止Oracle expdp/impdp job
  • unity pico开发二:连接头盔,配置手柄按键事件
  • MySQL快速搭建主从复制
  • springboot gradle 多项目创建
  • 《鸢尾花数学大系:从加减乘除到机器学习》开源资源
  • 【Mybatis】如何简单使用mybatis-plus,以及MybatisGenerator自动生成或者实现SQL语句
  • 畅销的网站建设/网络营销推广的总结
  • 中国做网站的网站/国际新闻最新消息中国
  • 东莞微网站建设服务/如何做线上销售和推广
  • 成都政务网站建设/西安网站到首页排名
  • 延庆住房和城乡建设委员会网站/中国软文网
  • 石家庄微网站建设公司/免费seo视频教程