从零开始离线安装k8s集群
本文主要用于在内网(离线)环境安装k8s集群;linux环境 centos7.6
主要步骤有:
- 安装docker
- 创建dokcer 私有镜像库 registry
- 安装kubernetes
- 安装flannel
1.离线安装docker
下载离线安装包https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
docker-ce-cli-18.09.7-3.el7.x86_64.rpm
docker-ce-18.09.7-3.el7.x86_64.rpm
container-selinux-2.107-1.el7_6.noarch.rpm
containerd.io-1.2.2-3.el7.x86_64.rpm
- 上传到指定服务器,安装命令 rpm -ivh *.rpm
- docker info 查看docker信息
- 修改cgoupdriver为systemd与k8b保持一致,vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
- systemctl daemon-reload
- systemctl restart docker
- 设置开机启动 systemctl enabel docker
2.创建dokcer 私有镜像库 registry
1.在有外网环境的docker中下载镜像,并启动;
docker pull registry:2
2.从image导出镜像
docker save -o registry.tar registry:2
3.上传registry.tar到离线服务器,导入
docker load -I registry
4.启动
docker run -d -v /registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:2
5.修改k8s集群节点的dokcer daemon.json 支持https
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"insecure-registries": ["10.209.68.12:5000"]
}
systemctl daemon-reload
systemctl restart docker
3.安装k8s
环境准备
- 关闭 防火墙、SeLinux、swap
# 在 master 节点和 worker 节点都要执行
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
# 关闭 swap
swapoff -a
yes | cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab
- hostnamectl set-hostname master
需要设置其他主机名称时,可将 master 替换为正确的主机名node1、node2即可。
- 配置内核参数,将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl –system
2,安装kubeadm/kubectl/kubelet
在有网络的服务器上下载需要的rpm安装包
- 配置kubeadm源
# cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
- yum install --downloadonly --downloaddir=/home/centos/k8s kubeadm kubectl kubelet
- 上传rpm包到离线服务器 安装
rpm -ivh *.rpm
设置开机启动 systemctl enable kubelet.service
- 获取镜像列表
# kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.18.0
k8s.gcr.io/kube-controller-manager:v1.18.0
k8s.gcr.io/kube-scheduler:v1.18.0
k8s.gcr.io/kube-proxy:v1.18.0
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.7
- 离线镜像
编写脚本,从阿里云下载镜像
# cat pull-images.sh
#!/bin/bash
images=(
kube-apiserver:v1.18.0
kube-controller-manager:v1.18.0
kube-scheduler:v1.18.0
kube-proxy:v1.18.0
pause:3.2
etcd:3.4.3-0
coredns:1.6.7
)
for imageName in ${images[@]};
do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName} k8s.gcr.io/${imageName}
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
done
- 执行脚本,然后查看镜像
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
k8s.gcr.io/kube-proxy v1.18.0 43940c34f24f 7 days ago 117MB
k8s.gcr.io/kube-apiserver v1.18.0 74060cea7f70 7 days ago 173MB
k8s.gcr.io/kube-controller-manager v1.18.0 d3e55153f52f 7 days ago 162MB
k8s.gcr.io/kube-scheduler v1.18.0 a31f78c7c8ce 7 days ago 95.3MB
k8s.gcr.io/pause 3.2 80d28bedfe5d 6 weeks ago 683kB
k8s.gcr.io/coredns 1.6.7 67da37a9a360 2 months ago 43.8MB
k8s.gcr.io/etcd 3.4.3-0 303ce5db0e90 5 months ago
- 打包镜像
编写脚本打包镜像
# cat save-images.sh
#!/bin/bash
images=(
kube-apiserver:v1.18.0
kube-controller-manager:v1.18.0
kube-scheduler:v1.18.0
kube-proxy:v1.18.0
pause:3.2
etcd:3.4.3-0
coredns:1.6.7
)
for imageName in ${images[@]};
do
docker save -o `echo ${imageName}|awk -F ':' '{print $1}'`.tar k8s.gcr.io/${imageName}
done
压缩下载,上传到离线服务器;
tar czvf kubeadm-images-1.18.0.tar.gz *.tar
- 导入镜像
在安装节点分别导入离线镜像或者放入私有仓库使用
# cat load-image.sh
#!/bin/bash
ls /root/kubeadm-images-1.18.0 > /root/images-list.txt
cd /root/kubeadm-images-1.18.0
for i in $(cat /root/images-list.txt)
do
docker load -i $i
done
导入镜像
# ./load-image.sh
3,初始化master节点
kubeadm init --apiserver-advertise-address 10.209.69.12 --apiserver-bind-port 6443 --kubernetes-version 1.18.0 --pod-network-cidr 10.244.0.0/16 --service-cidr 10.1.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
4,加入子节点
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 10.209.69.12:6443 --token voj8z6.ytej05mfnul5gci7 \
--discovery-token-ca-cert-hash sha256:d12c6150f5752238e8eabe81403ff4defaf2aeb1a1c159ed7310e027b367b57b
安装flannel
下载https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml文件
把里面依赖的image都在有网络环境中下载下来;
导入私有镜像库;
docker tag xxx:vxxx 10.209.69.12:5000/xxx:vxxx
docker push 10.209.69.12:5000/xxx:vxxx
修改yml中镜像为私有镜像库中的包
部署
kubectl apply -f flannel.yml
查看节点 是否为ready
kubectl get nodes
从零开始离线安装k8s集群相关推荐
- linux下离线安装k8s集群1.19.4附带nfs存储(kubeadm方式)
linux下离线安装k8s集群1.19.4附带nfs存储 活动地址:毕业季·进击的技术er 一,环境简介 kubernetes-1.19.4集群部署计划 序号 服务器配置 IP地址 操作系统 备注 ...
- Centos离线安装Kubernetes集群
目录 kuberadmin离线安装K8s集群 环境准备 基础环境配置 安装docker 准备基础镜像以及安装包 镜像 集群初始化 设置.kube/config 安装网络组件 加入node节点 验证集群 ...
- breeze 可视安装 k8s 集群
breeze 可视安装 k8s 集群 官方文档: https://github.com/wise2c-devops/breeze/blob/master/BreezeManual-CN.md bree ...
- 使用sealos安装K8S集群时,需确保节点的swap是关闭的
使用sealos安装K8S集群时,需确保节点的swap是关闭的,否则会安装失败
- 使用KubeKey安装K8S集群
KubeKey [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9a5Ji2nE-1625797190511)(https://github.com/kubesphere ...
- yum安装k8s集群(单master两个node、阿里云镜像源)
yum安装k8s集群(单master节点方式) 一.环境准备 1.系统要求 按量付费阿里云主机三台 要求:centos7.6~7.8:以下为 https://kuboard.cn/install/in ...
- [提示]普通用户使用sealos安装k8s集群的话,默认还是会装到root用户的home目录/root
如果使用普通用户,使用sealos安装k8s集群的话,默认还是会装到root用户的home目录/root kubeadm init --config=/root/kubeadm-config.yaml ...
- Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务
前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行.当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for desktop中启用 ...
- k8s 安装_二进制安装k8s集群总结
在之前文章里我们以学习为目的介绍了k8s集群的手动二进制安装,包括: ssl证书制作. docker的安装. 网络通讯组件flannel的安装. K8s基础组件的安装(etcd,master组件api ...
最新文章
- [20170914]tnsnames.ora的管理.txt
- uniapp里的mounted_uni-app 生命周期函数执行顺序
- Xcode SVN配置
- Android中四种启动模式,最容易理解的小白教程
- 14.ZooKeeper Java API 使用样例
- Spiral Matrix I II
- 基础向:关于异常(Exception)面试常会问到的问题
- 定时器mia是什么意思_MIA的完整形式是什么?
- 前端错误日志上报相关实践
- 苹果将削减iPhone SE及AirPods产量 iPhone 13也要求减产
- CYQ.Data 轻量数据层之路 使用篇-MAction 数据查询 视频 D (二十一)
- 微信开发——本地测试环境搭建
- b区计算机科学与技术调剂院校,B区调剂院校梳理!希望你用不到,但一定要收藏!...
- [MAC] 小技巧– 取消屏幕缩放功能,以免不小心误触
- CSDN早报-2019-04-29
- 多个excel合并为一个excel的多个sheet
- solidity 函数修饰器 modifier
- 财务报表分析01.主要财务报表
- Erebus 0.5 发布,2D 实时角色扮演游戏
- 细说网络负载均衡技术
热门文章
- 富文本编辑器粘贴复制Word
- 博世BOSCH EDI DESADV发货通知详解
- Prophet文档中文翻译--multiplicative_seasonality
- Docker - 使用Docker Compose部署应用
- oracle trim函数用法详解
- 在MySQL中note是什么意思_在Jupyter noteb中从MySQL中检索巨大的数据表
- jfinal save 超过9个字段以上就会出现数组下标越界
- 移动开发(IOS) – iOS系统架构
- 【PP】PP 模块配置
- ubuntu18.04安装Cosmos Scaffold遇到的问题及解决方案