Kubeadm一键部署安装kubernetes

上一篇文章中,讲解了二进制安装,意在教会小白了解数据流向与组件原理,随着容器技术的快速发展,Kubernetes(简称K8s)已成为容器编排的事实标准。然而,对于初学者来说,Kubernetes的部署和配置可能是一个复杂的过程。本文旨在提供一个简化的Kubernetes使用kubeadm一键部署安装指南,帮助读者快速搭建一个Kubernetes集群。

一. 环境准备

(一)分配信息

IP地址 主机名 安装服务 运行内存
192.168.44.70 master01

docker-ce

kubeadm

kubelet

kubectl

flannel

4G
192.168.44.60 node01

docker-ce

kubeadm

kubelet

kubectl

flannel

8G
192.168.44.50 node02

docker-ce

kubeadm

kubelet

kubectl

flannel

8G
192.168.44.40 hub.china.com

docker-ce

docker-compose

harbor-offline-v1.2.2

4G

(二)环境准备

在所有机器上操作

1.关闭防护设置

[root@master01 ~]#systemctl stop firewalld
[root@master01 ~]#systemctl disable firewalld
[root@master01 ~]#setenforce 0
[root@master01 ~]#sed -i 's/enforcing/disabled/' /etc/selinux/config
[root@master01 ~]#iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

2.关闭swap分区

[root@master01 ~]#swapoff -a
[root@master01 ~]#sed -ri 's/.*swap.*/#&/' /etc/fstab         #注释swap挂载信息
[root@master01 ~]#echo vm.swappiness = 0 >> /etc/sysctl.conf  #禁止使用swap分区
[root@master01 ~]#sysctl -p

3.加载ip_vs模块

[root@master01 ~]#for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done

4.添加解析信息

[root@master01 ~]#cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.44.70 master01
192.168.44.60 node01
192.168.44.50 node02
192.168.44.40 hub.china.com

5.调整内核参数

[root@master01 ~]#cat >/etc/sysctl.d/kubernetes.conf
......
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
[root@master01 ~]#sysctl --system
#使参数生效

6.时间同步

[root@master01 ~]#yum install ntpdate -y
[root@master01 ~]#ntpdate time.windows.com    #时间同步

二、安装docker

在所有机器上进行操作

Harbor服务器上指定安装版本:

[root@hub harbor]#yum install -y docker-ce-20.10.18 docker-ce-cli-20.10.18 containerd.io

1.安装服务

[root@master01 ~]#yum install -y yum-utils device-mapper-persistent-data lvm2
#获取下载工具
[root@master01 ~]#yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#获取阿里云的下载源
[root@master01 ~]#yum install -y docker-ce docker-ce-cli containerd.io
#下载docker服务

2.配置守护进程参数

[root@master01 ~]#vim  /etc/docker/daemon.json
[root@master01 ~]#cat  /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://gix2yhc1.mirror.aliyuncs.com"],
#Docker的镜像加速器配置。加速地址可以登录阿里云官网获取
  "exec-opts": ["native.cgroupdriver=systemd"],
#指定了Docker容器使用的cgroup驱动程序并交由system管理
  "log-driver": "json-file",
#这个配置项指定了Docker容器日志的驱动程序
  "log-opts": {
    "max-size": "100m"
#定了单个容器日志文件的最大大小为100m
}
}
[root@master01 ~]#systemctl daemon-reload
[root@master01 ~]#systemctl restart docker.service
[root@master01 ~]#systemctl enable docker.service

三、安装命令工具

在mastere节点与node节点上安装 kubeadm,kubelet 和 kubectl

(一)定义kubernetes源

[root@master01 ~]#cat > /etc/yum.repos.d/kubernetes.repo << EOF
> [kubernetes]
> name=Kubernetes
> baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
> enabled=1
> gpgcheck=0
> repo_gpgcheck=0
> gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
> EOF
#建立下载kubernetes仓库
 
 

(二)下载服务

[root@master01 ~]#yum install -y kubelet-1.20.11 kubeadm-1.20.11 kubectl-1.20.11
#下载指定1.20.11版本的kubernetes相关服务程序
[root@master01 ~]#systemctl enable kubelet.service
#设置为开机自启
#K8S通过kubeadm安装出来以后都是以Pod方式存在,即底层是以容器方式运行,所以kubelet必须设置开机自启

四、部署K8S集群

首先在master01节点上操作

(一)初始化Master节点

1.查看初始化镜像

[root@master01 ~]#kubeadm config images list
#列出初始化需要的镜像
W0516 14:46:40.749385   45138 version.go:102] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt": Get "https://cdn.dl.k8s.io/release/stable-1.txt": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
W0516 14:46:40.749535   45138 version.go:103] falling back to the local client version: v1.20.11
k8s.gcr.io/kube-apiserver:v1.20.11
k8s.gcr.io/kube-controller-manager:v1.20.11
k8s.gcr.io/kube-scheduler:v1.20.11
k8s.gcr.io/kube-proxy:v1.20.11
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.13-0
k8s.gcr.io/coredns:1.7.0

2.获取镜像

获取镜像的方式有两种

有网络环境下:使用docker pull下载有关镜像

无网络环境下:使用docker load -i 命令加载镜像文件,一般为.tar结尾的压缩包,由镜像下载完毕之后,压缩保存的文件

#上传v1.20.11.zip 压缩包
[root@master01 opt]#unzip v1.20.11.zip 
Archive:  v1.20.11.zip
   creating: v1.20.11/
  inflating: v1.20.11/apiserver.tar  
  inflating: v1.20.11/controller-manager.tar  
  inflating: v1.20.11/coredns.tar    
  inflating: v1.20.11/etcd.tar       
  inflating: v1.20.11/pause.tar      
  inflating: v1.20.11/proxy.tar      
  inflating: v1.20.11/scheduler.tar  
[root@master01 opt]#ls
cni  containerd  v1.20.11  v1.20.11.zip
[root@master01 opt]#ls v1.20.11/
apiserver.tar  controller-manager.tar  coredns.tar  etcd.tar  pause.tar  proxy.tar  scheduler.tar

使用for循环语句,生成所有镜像

[root@master01 opt]#for i in $(ls /opt/v1.20.11/*.tar); do docker load -i $i; done
07363fa84210: Loading layer [===========================>]  3.062MB/3.062MB
b2fdcf729db8: Loading layer [===========================>]  1.734MB/1.734MB
3bef9b063c52: Loading layer [===========================>]  118.3MB/118.3MB
Loaded image: k8s.gcr.io/kube-apiserver:v1.20.11
aedf9547be2a: Loading layer [===========================>]  112.8MB/112.8MB
Loaded image: k8s.gcr.io/kube-controller-manager:v1.20.11
225df95e717c: Loading layer [===========================>]  336.4kB/336.4kB
96d17b0b58a7: Loading layer [===========================>]  45.02MB/45.02MB
Loaded image: k8s.gcr.io/coredns:1.7.0
d72a74c56330: Loading layer [===========
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值