K8s管理

ansible管理

  • 管理机
    • 安装docker-ce、docker-compose
      • sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # docker-ce的依赖
      • yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 下载docker-ce yum源
      • sudo sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo # 配置docker-ce yum源为tuna
      • sudo yum makecache fast && sudo yum install -y docker-ce# 重新加载yum缓存并下载docker-ce
    • docker-ce加速,开启内核转发
      • vim /etc/sysctl.conf``net.ipv4.ip_forward = 1 sysctl -p
    • 安装rust、python3-pip(会把python解释器一起装了
      • yum install -y rust python3-pip
      • pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip # 升级pip
      • pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 配置pip源
    • 用pip3安装ansible
      • pip3 install setuptools_rust
      • pip3 install ansible
    • 用pip3安装给ansible用的docker模块的依赖
      • pip3 install docker==2.6.1
    • 用epel源安装docker-compose
      • yum install -y docker-compose
    • 添加环境变量
      • export ANSIBLE_PYTHON_INTERPRETER=/usr/bin/python3 # 具体解释见下方第一个代码块第八行
      • export ANSIBLE_INVENTORY=./hosts# pip装的没有那个配置文件
      • source /etc/profile
      • 最后来个检查pip3 list |egrep 'docker|ansible' && python3 --version && docker -v
  • 被管理机
    • 安装docker-ce
      • sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # docker-ce的依赖
      • yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 下载docker-ce yum源
      • sudo sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo # 配置docker-ce yum源为tuna
      • sudo yum makecache fast && sudo yum install docker-ce# 重新加载yum缓存并下载docker-ce
    • docker-ce加速,开启内核转发
      • vim /etc/sysctl.conf``net.ipv4.ip_forward = 1 sysctl -p
    • 安装python3-pip
      • yum install -y python3-pip
      • pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip # 升级pip
      • pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 配置pip源
    • 用pip3安装给ansible用的docker依赖
      • pip3 install docker==2.6.1
    • 用epel源安装docker-compose
      • yum install -y docker-compose
      • 最后来个检查pip3 list |grep 'docker' && python3 --version && docker -v ```bash

        创建目录

        mkdir -p /server/ansible/{playbook,roles} mkdir -p /server/ansible/roles/docker-config/{tasks,handlers,templates,files}

配置hosts文件

vim /server/ansible/roles/docker-config/hosts

export ANSIBLE_PYTHON_INTERPRETER=/usr/bin/python3

使ansible默认使用python3,修改后在被管理机上也同样会调用python3执行发送的脚本,如果被管理机没装python3将会报错,所以要先把管理机环境变量中的python3改成python2,给被管理机安装完python3以后再改回来

ansible all -m shell -a ‘yum install -y python3-pip’

写files

vim /server/ansible/roles/docker-config/files/daemon.json

{ “registry-mirrors”: [“https://p96e1lwq.mirror.aliyuncs.com“], “insecure-registries”: [“registry:5000”] }

写tasks

vim /server/ansible/roles/docker-config/tasks/main.yml

  • name: 配置docker-ce yum源 shell: yum-config-manager —add-repo https://download.docker.com/linux/centos/docker-ce.repo && sed -i ‘s+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+’ /etc/yum.repos.d/docker-ce.repo && sudo yum makecache fast

  • name: 下载pip3, docker-compose, yum-utils, device-mapper-persistent-data, lvm2, docker-ce yum: name: python3-pip,docker-compose,yum-utils,device-mapper-persistent-data,lvm2,docker-ce

    用yum 安装docker-ce不好,最好用yum localinstall 本地已经有的缓存,不过这会先偷个懒了

    state: latest

  • name: docker加速:预 file: name: /etc/docker state: directory

  • name: docker加速 copy: src: daemon.json dest: /etc/docker/

  • name: 重启docker systemd: name: docker state: restarted enabled: yes daemon_reload: yes

  • name: 内核转发 lineinfile: line: net.ipv4.ip_forward = 1 path: /etc/sysctl.conf

  • name: 重启内核 shell: sysctl -p

  • name: 升级pip shell: pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple —upgrade pip

  • name: 配置pip源 shell: pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

  • name: 安装ansible docker模块依赖,这玩意好像是自带的,不需要安装 shell: pip3 install docker==2.6.1

  • name: 检查安装成果 shell: pip3 list |grep ‘docker’ && python3 —version && docker -v register: jiancha

  • name: 输出检查成果 debug: msg: “{{ jiancha.stdout }}”

写top.yml


  • hosts: all roles:
    • role: docker-config

运行

ansible-playbook top.yml

  1. <a name="PPk8g"></a>
  2. ## ansible的docker_compose模块
  3. | **选项** | **含义** |
  4. | --- | --- |
  5. | project_src | 指定docker-compose.yml所在的目录 |
  6. | build | yes、no(默认<br />构建dockerfile |
  7. | state | present (docker-compose up -d<br />absent(关闭并删除容器 |
  8. **不建议用docker_image模块构建镜像(即docker build),建议docker build并上传到仓库再拉取。**
  9. ```bash
  10. - name: 构建镜像并上传到私有仓库
  11. docker_image:
  12. build:
  13. path: ./sinatra 指定dockerfile所在路径
  14. name: registry:5000/oldboyedu/restart
  15. tag: v1.0
  16. push: yes
  17. source: build
  18. # compose.yml很能执行docker build的功能
  19. # 所以docker-compose模块也可以构建镜像
  20. # dockerfile构建镜像的方式大概就可以分为这三种中
  21. # 不用dockerfile的话就是手动配置像然后commit了