前言:公司打算对外销售项目,因为是微服务,不使用容器部署复杂,k8s太占资源,个人觉得swarm有些功能没k8s好用,最后决定使用k3s.我已经用ansible写好Ansible-Playbook了,这里主要讲这个文件来让大家了解部署k3s,虽然k3s部署已经够简单了,但是多台机器每次都得手动输入很麻烦,所以使用ansible部署

一,架构与文件讲解

所有操作都在主节点:
集群架构
Master:192.168.1.191 node:192.168.1.12 192.168.1.231
master目录结构:
[root@c8o k3s]# pwd
/opt/k3s
├── install
│ ├── 1_master.sh #安装准备脚本
│ └── 2_k3s.yml #部署k3s脚本
└── str
├── ansible
│ └── hosts #ansible hosts文件
├── k3s #k3s二进制文件
├── k3s.sh #k3s安装脚本
├── node.sh #node节点运行k3s脚本requirements.txt
├── requirements.txt #pip安装ansible
└── pause.tar #pause:3.1 没这个会一直停在拉取镜像阶段,下面会有错误截图
hosts文件,因为我的节点有点少,并且密码不一样,就这样写了,后续添加有点麻烦,可以添加个组变量,但是需要用户名密码一样

1_master.sh文件讲解

#!/bin/bash
ssh-keygen -t rsa -N '' -f /root/.ssh/id_rsa -q      #生成秘钥
yum -y install epel-release    #配置yum仓库
yum update -y           #更新系统
yum -y install python-pip sshpass   #sshpass用来ansible传输秘钥
pip install -r /opt/k3s/str/requirements.txt   #安装ansible,不用yum装是因为总是404不是很稳定
cp -r /opt/k3s/str/ansible /etc     #拷贝ansible的hosts文件

2_k3s.yml文件讲解

- hosts: master,node        tasks:- name: "拷贝秘钥"authorized_key:user: rootkey: "{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"      #这个主要用来拷贝秘钥,防止以后修改密码后连接不到- name: "添加hosts"shell: echo $(hostname -I | awk '{print $1}') $(hostname) >> /etc/hosts          #添加hosts,没这步k3s在启动的时候会报找不到主机名的错误- name: "关闭selinux"shell: sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux- name: "拷贝k3s执行文件"copy:src=/opt/k3s/str/k3sdest=/usr/local/bin/k3s- name: "添加执行权限"shell: chmod +x /usr/local/bin/k3s- name: "关闭防火墙"service: name=firewalld enabled=no daemon_reload=no state=stopped- name: "yum安装环境"yum: name=yum-utils,device-mapper-persistent-data,lvm2 state=installed- name: "使用阿里源"shell: yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo- name: "yum安装docker"yum: name=docker-ce state=installed- name: "启动docker"service: name=docker enabled=yes daemon_reload=yes state=restarted- hosts: mastertasks:- name: "加载pause镜像"shell: docker load -i /opt/k3s/str/pause.tar- name: "启动k3s"shell: cat /opt/k3s/str/k3s.sh |INSTALL_K3S_EXEC="--docker --no-deploy traefik" sh -  #--docker 表示使用docker作为默认容器, --no-deploy traefik表示不安装traefik- name: "修改配置文件"shell: sed -i "s/主节点ip/$(hostname -I | awk '{print $1}')/g" /opt/k3s/str/node.sh- name: "修改主节点key"shell: sed -i "s/k3s_token/$(cat /var/lib/rancher/k3s/server/node-token)/g" /opt/k3s/str/node.sh- hosts: nodetasks:- name: "创建k3s目录"shell: mkdir /opt/k3s- name: "拷贝文件"copy:src=/opt/k3s/str/pause.tardest=/opt/k3s/pause.tar- name: "拷贝k3s执行文件"copy:src=/opt/k3s/str/k3s.shdest=/opt/k3s/k3s.sh- name: "拷贝node文件"copy:src=/opt/k3s/str/node.shdest=/opt/k3s/node.sh- name: "加载pause镜像"shell: docker load -i /opt/k3s/pause.tar- name: "node安装k3s"shell: chmod +x /opt/k3s/node.sh shell: sh /opt/k3s/node.sh

二,部署与检查

下载部署文件:
https://github.com/zhejiez/Linux/tree/master/ansible-k3s
1,修改hosts文件
vim /opt/k3s/str/ansible/hosts

2,部署前准备:
chmox +x /opt/k3s/1_master.sh
sh /opt/k3s/1_master.sh
3,测试,如图表示正常
ansible all -m ping

部署k3s,一般情况部署不会报错(无视粉色提示),报错请留言
ansible-playbook /opt/k3s/install/2_k3s.yml
查看 ,两个节点正常启用
kubectl get nodes

报错
kubectl get pod --all-namespaces发现pod一直处于ContainerCreating状态
kubectl describe pod pod名字 -n 命名空间

三,添加node节点
1,修改hosts,在[add_node]后面添加ip
vim /etc/ansible/hosts

2,安装k3s
ansible add_node -m ping
ansible-playbook /opt/k3s/33_node.yml
查看,添加成功

参考https://rancher.com/docs/k3s/latest/en/quick-start/
因为本人也是小白,自己摸索,后续添加主节点教程.如果有写的不好或者不懂的地方请留言

k3s(基于docker容器)使用相关推荐

  1. Android基于Docker容器的双系统多开实现和自动化部署

    GitHub:https://github.com/Pangu-Immortal 本文技术涉及基于Docker容器的移动端双系统实现系统及方法,所述系统包括相互连接的内核层及应用程序层,其中,应用程序 ...

  2. 【云原生】第十一篇--基于Docker容器DevOps应用方案

    基于Docker容器DevOps应用方案 企业业务代码发布系统 一.企业业务代码发布方式 1.1 传统方式 1.2 容器化方式 二.企业业务代码发布逻辑图 三.企业业务代码发布工具及流程图 3.1 工 ...

  3. 广告业务系统 之 敏捷交付 —— “基于 Docker 容器同机部署”

    文章目录 广告业务系统 之 敏捷交付 -- "基于 Docker 容器同机部署" 服务 Docker 构建及部署 代码支持 服务打包&构建 服务部署 广告业务系统 之 敏捷 ...

  4. 基于Docker容器安装nginx

    基于Docker容器安装nginx (1)在Docker仓库中搜索Nginx镜像 docker search nginx (2)从Docker仓库中下载Nginx镜像 docker pull dock ...

  5. 基于Docker容器的HEXO博客

    基于Docker容器的HEXO博客 介绍 hexo是一个基于Node.js 快速.简洁且高效的博客框架. Hexo 支持 GitHub Flavored Markdown 的所有功能,甚至可以整合 O ...

  6. 基于Docker容器的,Jenkins、GitLab构建持续集成CI

    ** 开发者将代码提交(push)到GitLab后,GitLab通过Hook通知jenkins,jenkins自动从GitLab中获取项目最新的源码进行集成和发布. 基于Docker,创建一个私有Gi ...

  7. mall在Linux环境下的部署(基于Docker容器)

    部署思路 开发人员将开发好的mall电商项目包交给我,我用以下方法来部署运维: 1. Docker环境安装配置 2. MySQL数据库安装配置 3. Redis安装配置 4. Nginx安装配置 5. ...

  8. 【云服务器】基于docker容器部署Halo项目的个人博客搭建并部署到云服务器

    目录 1 docker快速部署halo个人博客 2 主题设置(本文使用的是M酷Joe 2.0版本的主题,下载链接放在下面了) 2.1 API报错解决方案 2.2 首页分栏设置 2.3 轮播图的修改 2 ...

  9. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    在编辑Dockerfile过程中参考了以下相关范例:https://hub.docker.com/_/php/.https://hub.docker.com/_/mysql/.https://hub. ...

最新文章

  1. 寒假——练车、脑力风暴和辅导初中生
  2. 【BZOJ2245】[SDOI2011]工作安排 拆边费用流
  3. 【VMCloud云平台】SCOM配置(四)-监控应用可用性
  4. 自定义smokeping告警(邮件+短信)
  5. 使用OAuth 2 / OpenID Connect的SSO的Spring Boot 2本机方法
  6. 应用JDK 9 @不推荐使用的增强功能
  7. [html]如何让元素固定在页面底部?有哪些比较好的实践?
  8. 在我还是14岁的时候那会学C++
  9. Atom飞行手册翻译: 3.9 从Textmate中转换
  10. 使用go制作微服务数据计算
  11. 利用阿里云搭建Java Web开发环境
  12. 运营破局,四步完成从0到1
  13. 网站挂马的原理与防御
  14. oracle分组拼接
  15. 把一个人的特点写具体作文_五年级下册第五单元同步作文《把一个人的特点写具体》范文4篇...
  16. 【ubuntu】Ubuntu 安装中文输入法
  17. css3实现简单的文字动画效果
  18. xp系统网上邻居看不到局域网电脑_win10系统网上邻居看不到局域网中其他电脑的处理技巧...
  19. centos查看进程及结束掉
  20. 用卷积神经网络和自注意力机制实现QANet(问答网络)

热门文章

  1. 提效小技巧——记录那些不常用的代码片段
  2. 百度盘登录时出现网络异常1的解决方法
  3. arcgis api结合高德poi搜索接口
  4. 星际特攻队java_星际特攻队手游
  5. SAP 04-CONTAINER 使用DOCKING停靠容器示例<转载> cl_gui_docking_container
  6. 10moons ut340linux驱动编译安装方法
  7. python动漫教程_动漫迷的福利!Python小白也可以学会的爬虫教程
  8. 天载杠杆炒股大盘热度较高
  9. Linux 多用户远程,suse linux vnc多用户远程桌面配置实战
  10. matlab算法到fpga具体实例,在FPGA上建立MATLAB和Simulink算法原型