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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Kubernetes是一个开源的容器编排系统,它可以自动化部署、管理和扩展容器化应用程序。Kubernetes离线安装是一个方便的方式,让用户在没有互联网连接的环境中安装和部署Kubernetes。 在下载Kubernetes离线安装之前,你需要确定你的Kubernetes版本和操作系统环境。Kubernetes社区提供了多个版本和支持的操作系统,你需要根据自己的需求选择合适的版本。 通常情况下,Kubernetes离线安装的下载地址会提供在官方文档或者GitHub上。你可以访问这些网站并下载相关的Kubernetes离线安装。 当你下载完Kubernetes离线安装之后,你需要确保该安装不被更改或损坏。你可以通过计算SHA256校验和来验证文件的完整性,以确保安装的下载过程没有出现问题,并且文件没有被修改或损坏。 最后,你可以使用离线安装来安装和部署Kubernetes离线安装中可能含了Kubernetes二进制文件、配置文件、镜像仓库等资源,你需要根据具体的安装过程进行相应的配置。安装成功之后,你就可以愉快的使用Kubernetes进行容器编排了。 ### 回答2: Kubernetes离线安装下载可以通过多种方式进行。首先,可以从Kubernetes官方网站或GitHub repo下载最新版本的离线安装。其次,也可以使用如Kubeadm或Kubespray等自动化部署工具来生成离线安装。 对于使用官方网站或GitHub repo下载离线安装的用户,需要先了解所需的组件及其版本信息,并确保依赖软件和工具已预先安装。下载完成后,用户需要将安装中的二进制文件或源代码复制到目标主机的本地磁盘。 对于采用自动化部署工具的用户,如Kubeadm和Kubespray等工具都支持离线的生成。用户只需在安装前通过工具的命令行或配置文件指定生成离线,即可获得含所有所需组件的离线安装。 其次,在使用离线安装进行Kubernetes集群部署之前,用户需要确保目标主机的预先部署环境和依赖软件已准备就绪。同时,用户还需要根据实际需求自行进行部分配置和调整。例如,需要预先定义实际的Node IP地址,以便Kubernetes Master节点能够正常识别并管理集群。此外,用户还需要配置Kubernetes API Server、Etcd和kubelet等关键组件,以确保集群能够正常运行。 综上所述,Kubernetes离线安装下载及部署是一个相对复杂的过程,需要用户具备一定的Linux系统和Kubernetes的基础知识,同时需要充分的准备和规划工作。 ### 回答3: Kubernetes是一款流行的容器管理平台,但是其在线安装方式可能会受到网络限制的影响。因此,为了方便离线安装,提供了离线安装下载的选项。 首先,在选择离线安装时,需要确认对应的版本与操作系统是否匹配。可以通过官方网站或Github等渠道进行下载。 下载完毕后,需要对安装进行解压和配置。具体步骤如下: 1. 解压安装到指定位置,在此过程中可以使用一些解压工具,如7-zip。 2. 配置环境变量,可以通过编辑环境变量配置文件(.bash_profile或.bashrc)来添加相关信息。 3. 修改配置文件,将所需的设置参数写入config.yaml中,进行个性化配置。 4. 初始化集群,执行kubeadm init命令,开始安装及初始化。 以上是大致的步骤,但需要注意的是,kubernetes离线安装安装方式比较复杂,需要一定的技术水平和经验,否则容易出现问题。 总之,对于想要在没有外网的环境中离线安装kubernetes的用户,可以通过下载离线安装的方式解决问题。但需要在安装过程中小心谨慎,以确保安装成功及其稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值