kubernetes离线包分析
k8s离线包解析
鸣谢
- 大家好,首先感谢大家对我们产品的支持,特别是一些老客户的持续支持,让我可以有动力把这个事情持续进行下去。
- 感谢大家对付费产品的认可,尊重付费
产品介绍
我们专注于k8s离线包的制作,优化细节,让大家可以很方便快速的安装k8s集群。
下面详细介绍安装包的原理以及如何去制作一个这样的包,大家参考我的方法也可以制作自己想要的版本然后用于自己的离线环境
目录结构
.
├── bin # 指定版本的bin文件,只需要这三个,其它组件跑容器里
│ ├── kubeadm
│ ├── kubectl
│ └── kubelet
├── conf
│ ├── 10-kubeadm.conf # 这个文件新版本没用到,我在shell里直接生成,这样可以检测cgroup driver
│ ├── dashboard
│ │ ├── dashboard-admin.yaml
│ │ └── kubernetes-dashboard.yaml
│ ├── heapster
│ │ ├── grafana.yaml
│ │ ├── heapster.yaml
│ │ ├── influxdb.yaml
│ │ └── rbac
│ │ └── heapster-rbac.yaml
│ ├── kubeadm.yaml # kubeadm的配置文件
│ ├── kubelet.service # kubelet systemd配置文件
│ ├── net
│ │ └── calico.yaml
│ └── promethus
├── images # 所有镜像包
│ └── images.tar
└── shell
├── init.sh # 初始化脚本
└── master.sh # 运行master脚本
init.sh解析
# 网络配置,让calico可以路由
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
sysctl -w net.ipv4.ip_forward=1
# 关闭防火墙 交换分区 selinux
systemctl stop firewalld && systemctl disable firewalld
swapoff -a
setenforce 0
# 导入镜像
docker load -i ../images/images.tar
cp ../bin/kube* /usr/bin
# Cgroup driver
cp ../conf/kubelet.service /etc/systemd/system/
mkdir /etc/systemd/system/kubelet.service.d
# 获取docker Cgroup driver类型,kubelet systemd配置需要一致
cgroupDriver=$(docker info|grep Cg)
driver=${cgroupDriver##*: }
echo "driver is ${driver}"
cat <<EOF > /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true"
Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin"
Environment="KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10 --cluster-domain=cluster.local"
Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt"
Environment="KUBELET_CADVISOR_ARGS=--cadvisor-port=0"
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=${driver}" # 看这里
Environment="KUBELET_CERTIFICATE_ARGS=--rotate-certificates=true --cert-dir=/var/lib/kubelet/pki"
ExecStart=
ExecStart=/usr/bin/kubelet \$KUBELET_KUBECONFIG_ARGS \$KUBELET_SYSTEM_PODS_ARGS \$KUBELET_NETWORK_ARGS \$KUBELET_DNS_ARGS \$KUBELET_AUTHZ_ARGS \$KUBELET_CADVISOR_ARGS \$KUBELET_CGROUP_ARGS \$KUBELET_CERTIFICATE_ARGS \$KUBELET_EXTRA_ARGS
EOF
systemctl enable kubelet
systemctl enable docker
master.sh解析
# 启动kubeadm
kubeadm init --config ../conf/kubeadm.yaml
# kubectl配置拷贝
mkdir ~/.kube
cp /etc/kubernetes/admin.conf ~/.kube/config
# 装网络
kubectl apply -f ../conf/net/calico.yaml
# 去污点,生产环境中最好不去,我是为了heapster能正常启动
kubectl taint nodes --all node-role.kubernetes.io/master-
# 装heapster
kubectl apply -f ../conf/heapster/
kubectl apply -f ../conf/heapster/rbac
# 装dashboard
kubectl apply -f ../conf/dashboard
制作过程
下载bin文件
我们到github kubernetes下把bin文件下载下来,只需要下载node的bin即可,当然如果你master镜像不好下载也可以下载全部bin
如:node bin文件
拷贝到/usr/bin下面,kubectl kubeadm kubelet 三个是必须的
拷贝kubelet service文件,脚本里有
修改kubeadm.yaml
修改里面版本与bin版本一致,然后启动kubeadm kubeadm init --config kubeadm.yaml
这里可能有的镜像下载不下来,你就得导入了
一切正常后保存所有镜像
docker save -o images.tar $(docker images|grep ago|awk '{print $1":"$2}')
这里最好搞干净的服务器,不然别的镜像也会被save下来
扫码关注sealyun
探讨可加QQ群:98488045
kubernetes离线包分析的更多相关文章
- kubernetes离线包安装教程
kubernetes离线包安装教程: 安装包中不包含docker,如没装docker 请先安装之yum install -y docker 1 2 3 1. master上: cd shell &am ...
- Kubernetes Ingress日志分析入门
本文主要介绍如何基于日志服务构建Kubernetes Ingress日志分析平台,并提供一些简单的动手实验方便大家快速了解日志服务相关功能. 部署Ingress日志方案 登录容器服务管理控制台. 将上 ...
- kubernetes/k8s CRI分析-容器运行时接口分析
关联博客:kubernetes/k8s CSI分析-容器存储接口分析 概述 kubernetes的设计初衷是支持可插拔架构,从而利于扩展kubernetes的功能.在此架构思想下,kubernetes ...
- kubernetes/k8s CRI分析-kubelet创建pod分析
先来简单回顾上一篇博客<kubernetes/k8s CRI 分析-容器运行时接口分析>的内容. 上篇博文先对 CRI 做了介绍,然后对 kubelet CRI 相关源码包括 kubele ...
- kubernetes/k8s CRI分析-kubelet删除pod分析
关联博客<kubernetes/k8s CRI 分析-容器运行时接口分析> <kubernetes/k8s CRI分析-kubelet创建pod分析> 之前的博文先对 CRI ...
- kubernetes/k8s CNI分析-容器网络接口分析
关联博客:kubernetes/k8s CSI分析-容器存储接口分析 kubernetes/k8s CRI分析-容器运行时接口分析 概述 kubernetes的设计初衷是支持可插拔架构,从而利于扩展k ...
- Magnum Kubernetes源码分析(二)
Kubernetes Master Stack kubernetes master的stack的resources主要分为三个部分. master wait handle wait handle主要用 ...
- Magnum Kubernetes源码分析(一)
Magnum版本说明 本文以magnum的mitaka版本代码为基础进行分析. Magnum Kubernetes Magnum主要支持的概念有bay,baymodel,node,pod,rc,ser ...
- GlusterFs卷类型分析及创建、使用(结合kubernetes集群分析)
引言 本文通过对卷类型的分析对比,来帮助读者选取生产环境最符合服务的挂载存储,命令可结合<glusterfs详解及kubernetes 搭建heketi-glusterfs>进行实验,下面 ...
随机推荐
- Linux不重启识别新添加的磁盘
现网的一台EXSI 下的虚拟机一般在进行配置变更后都会通过重启来识别新增的配置,不过业务侧某台主机因为业务需要无法重启,想通过不重启直接识别护容上去的新磁盘.经测试,发现如下方可以解决. 1.通过ex ...
- mysql双机热备实现方案
一.概念 1.热备份和备份的区别 热备份指的是:High Available(HA)即高可用,而备份指的是Backup,数据备份的一种.这是两种不同的概念,应对的产品也是两种功能上完全不同的产品.热备 ...
- 2018.10.1 2018NOIP冲刺之立体图
2008NOIP普及组立体图 请自行百度(事实上放不下了) 图不是很清楚 下面有 [输入] 输入文件 drawing.in 第一行有用空格隔开的 2 个整数 m 和 n,表示有 m*n 个格子 (1 ...
- CentOS java生成文件并赋予权限的问题
2.检查文件是否允许: file.canExecute(); – return true, file is executable; false is not. file.canWrite(); – r ...
- Java并发包中线程池ThreadPoolExecutor原理探究
一.线程池简介 线程池的使用主要是解决两个问题:①当执行大量异步任务的时候线程池能够提供更好的性能,在不使用线程池时候,每当需要执行异步任务的时候直接new一个线程来运行的话,线程的创建和销毁都是需要 ...
- HDU 4055:Number String(DP计数)
http://acm.hdu.edu.cn/showproblem.php?pid=4055 题意:给一个仅包含‘I','D','?'的字符串,’I'表示前面的数字比后面的数字要小(Increase升 ...
- vue 跨域请求,后端cookie session取不到
虽然后端设置了可以跨域请求,但是后台设置到cookie中的session取不到!这时候mac电脑自己设置nginx代理! mac电脑系统重装了,记录一下安装nginx的过程: 1.打开终端(cmd) ...
- Java集合对象比对
1. 场景描述 通过java代码从外围接口中获取数据并落地,已经存在的不落地,不存在的落地,因有部分字段变化是正常的,只需比对3个字段相同即为相同. 2. 解决方案 设置定时任务(三个标签完成spri ...
- blast2go本地化 mysql_study
mysql yum -y install mysql mysqladmin -uroot -passwd "oebiotech" mysql -uroot -poebiotech ...
- python自动化测试之DDT数据驱动
时隔已久,再次冒烟,自动化测试工作仍在继续,自动化测试中的数据驱动技术尤为重要,不然咋去实现数据分离呢,对吧,这里就简单介绍下与传统unittest自动化测试框架匹配的DDT数据驱动技术. 话不多说, ...