K8S-1.17.4和KubeEdge-1.10.1部署安装,阿里云服务器(上)

阿里云服务器KubeEdge基础环境搭建

1. 安装要求

1.1 硬件需求

1. 至少一台服务器,操作系统 CentOS7.x-86_x64
2. 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多

1.2 基础软件环境

1. docker 
2. kubernetes

2. 环境初始化

2.1 检查操作系统

[root@master ~]# cat /etc/redhat-release
# 此方式下安装kubernetes集群要求Centos版本要在7.5或之上

2.2 主机名解析

编辑三台服务器的/etc/hosts文件,添加下面内容
	主机IP  master

2.3 关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

2.4 关闭selinux

sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久关闭
setenforce 0  # 临时关闭

2.5 关闭swap分区

swap分区指的是虚拟内存分区,它的作用是物理内存使用完,之后将磁盘空间虚拟成内存来使用,启用swap设备会对系统的性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap设备

# 编辑分区配置文件/etc/fstab,注释掉swap分区一行
# 注意修改完毕之后需要重启linux服务
vim /etc/fstab
注释掉 /dev/mapper/centos-swap swap
# /dev/mapper/centos-swap swap

2.6 修改linux内核参数

将桥接的IPv4流量传递到iptables的链

# 编辑/etc/sysctl.d/kubernetes.conf文件,添加如下配置:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

# 重新加载配置
[root@master ~]# sysctl -p
# 加载网桥过滤模块
[root@master ~]# modprobe br_netfilter
# 查看网桥过滤模块是否加载成功
[root@master ~]# lsmod | grep br_netfilter

3.安装Docker

3.1 切换镜像源

换成国内的源下载安装速度更快

[root@master ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O 

3.2 查看当前源中支持的Docker版本

Docker的版本和Kubeneters的版本有适配要求,笔者一开始,安装了最新版的Docker,结果因为自己的K8S版本为1.17.4,最多只能支持Docker 19.03版本,导致K8S集群初始化一直出问题,如下图所示。
docker版本不合适带来的安装问题
通过如下命令可以查看当前源支持的Docker版本。

yum list docker-ce --showduplicates

笔者的源包含的版本如下
在这里插入图片描述

3.3 安装Docker

安装最新版docker,可使用如下命令

yum install -y docker-ce

Dockr安装指定版本

指定--setopt=obsoletes=0,否则yum可能会自动安装更高版本
yum install --setopt=obsoletes=0 [版本号] -y
eg:yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 -y

Docker启动

sudo systemctl start docker

通过运行hello-world镜像来验证是否正确安装了Docker,如果执行之后,控制台显示如下信息,则说明Docker安装和启动成功
在这里插入图片描述

3.4 手动安装Docker

源中版本较新,与笔者选择的K8S版本冲突,所以以手动安装的方式安装了Docker18.06.1
下载rpm包
​ docker-ce-18.06.1.ce-3.el7.x86_64.rpm 下载地址1 下载地址2

yum安装
# 使用yum命令安装
$ sudo yum -y install docker-ce-18.06.1.ce-3.el7.x86_64.rpm

4 Kubernetes环境搭建

4.1 换源

由于kubernetes的镜像在国外,速度比较慢,这里切换成国内的镜像源

vi /etc/yum.repos.d/kubernetes.repo,添加下面的配置
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgchech=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

4.2 安装K8S组件 kebeadm、kubelet、kubectl

笔者安装的K8S版本为1.17.4

[root@master ~]# yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y

通过查看组件版本测试安装是否成功

kubelet --version
kubectl version
kubeadm version

在这里插入图片描述

配置kubelet的cgroup

#编辑/etc/sysconfig/kubelet, 添加下面的配置
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"

设置kubelet开机自启

systemctl enable kubelet

可通过如下命令查看kubelet运行状态

systemctl status kubelet

在这里插入图片描述

4.3 集群镜像环境准备

在安装kubernetes集群之前,必须要提前准备好集群需要的镜像,所需镜像可以通过下面命令查看

kubeadm config images list

在这里插入图片描述

下载镜像,此镜像kubernetes的仓库中,由于网络原因,无法连接,下面提供了一种替换方案,版本使用1.17.4

images=(
	kube-apiserver:v1.17.4
	kube-controller-manager:v1.17.4
	kube-scheduler:v1.17.4
	kube-proxy:v1.17.4
	pause:3.1
	etcd:3.4.3-0
	coredns:1.6.5
)

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

4.4 集群初始化

在master节点上运行即可

# 创建集群
[root@master ~]# kubeadm init \
--apiserver-advertise-address=XXX.XXX.XXX.XXX \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.17.4 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

此处的xxx.xxx.xxx.xxx为主机节点的IP地址,笔者在服务器中搭建集群环境时,一开始将此IP设置成了服务器的公网IP,出现了初始化超时的现象,卡在如下图所示位置,最后初始化失败。

在这里插入图片描述

多次探索之后,发现将公网IP改成服务器的内网IP即可。内网IP可通过如下命令查看

ipconfig

将IP地址换成内网IP,再次执行初始化命令即可完成集群环境的初始化,
在这里插入图片描述
根据弹出的提示信息,复制粘贴运行即可

[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

在master节点上查看节点信息

[root@master ~]# kubectl get nodes
NAME    STATUS   ROLES     AGE   VERSION
master  NotReady  master   59m    v1.17.4

这里的NotReady是因为没有安装网络插件,无法产生通信,安装网络插件即可,在github的kubernetes仓库中下载对应的版本的kube-flannel.yml文件,可以直接传输到服务器的根目录下,运行如下命令即可

kubectl apply -f kube-flannel.yml

执行完毕,再次运行kubectl get nodes即可发现,状态已经更新为ready

[root@master ~]# kubectl get nodes
NAME    STATUS   ROLES     AGE   VERSION
master   Ready   master   2h23m    v1.17.4

参考

  1. K8S详细教程
  2. docker离线安装
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小小小小柱子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值