背景
标题由于公司架构主要是采用公有云k8s运维部署,所以在学习了解过程中,记录本地安装k8s主要过程。
本文主要记录了,在虚拟机环境下,安装Kubernetes的过程,其中有很多本地踩过的坑,撰写本文,
也希望能够帮助到大家。
1.安装说明
安装环境 由于博主使用的是mac系统,所以,虚拟机使用的是Parallels Desktop(14.1.3),个人感觉这个是在mac很好用的虚拟机,安装很简单,网上都可以找到教程。
- 虚拟机系统 CentOS7
- 安装规划
mster节点 1台
node节点 1台
虚拟机网络配置 主机能够ping上述虚拟机的任何一台;上述两台机之前需要能够互相ping通,而且需要保证master节点与node节点的IP地址保持不变。虚拟机网络配置这块,本文给不了教程,大家还需要搜索资料。如果是Parallels Desktop虚拟机,采用默认的就好。
安装方法 采用Kubernetes提供的kebuadm进行安装。由于自己手动部署配置,很复杂,本文采用了Kubernetes自带的kubeadm进行安装。
2.安装步骤
2.1安装Docker
1. 删除机器上的旧版Docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2. 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3. 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4. 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
5.开启Docker服务
sudo service docker start
6.添加用户组 配置系统开机启动
# 添加用户组
sudo groupadd docker
sudo usermod -aG docker $USER
#系统启动
sudo systemctl enable docker
7.安装成功后,可以使用docker version
查看docker的运行情况。
以上的安装步骤,参考阿里云的安装说明,https://yq.aliyun.com/articles/110806。其中也包含其他系统的安装Docker说明。安装成功后,鉴于国内下载镜像速度的原因,也可以配置docker的镜像加速器,具体可参考阿里云的开源镜像市场,https://developer.aliyun.com/mirror。其中包含很多的源,后面用到k8s的国内源,在上面也可以找到。
2.2 安装kubeadm,kubectl,kubelet
在安装之前,主要是针对CentOS系统的一些配置,类似关闭内存共享,防火墙等等。
# 1.关闭swap
# 临时禁用
sudo swapoff -a
# 永久禁用(推荐)先打开对于文件,注释掉swap那一行
vim /etc/fstab
# 2.关闭SELinux
# 临时禁用
setenforce 0
# 永久禁用(推荐)
sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux
# 3.关闭防火墙
systemctl disable firewalld
systemctl stop firewalld
# 4.修改网络参数(如果这步不设置,后面安装会有问题)
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
# 5.修改国内安装的k8s镜像下载源(如果能够科学上网,可以直接使用google对应的官方安装文档,直接安装)
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[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
## 重建yum缓存
yum clean all
yum makecache fast
yum -y update
# 6.执行安装
# 这步执行的时间依赖于你自己的网络,会需要一段时间,采用以下命令会安装最新版本,如果按照指定版本需要带上版本号。如果在这一步指定了版本号,在集群初始化的时候,也必须加上版本号。
yum install -y kubelet kubeadm kubectl
# 安装成功后验证
kubeadm version
#设置开机启动
systemctl enable kubelet && systemctl statt kubelet
至此,以上的步骤(包括安装Docker)都必须在master与node节点中执行。
2.3 初始化集群(初始化master)
# 初始化k8s集群 注意命令中的版本号。由于之前安装 kubeadm kubectl kebulet 采用的是最新版本,所以在初始化的时候也必须制定对应的版本号。'--pod-network-cidr=10.244.0.0/16'参数,是由于需要安装fannel网络时,必须指定的。关于fannel网络及安装,大家可以查看相关资料。https://github.com/coreos/flannel/blob/master/Documentation/kubernetes.md。
# 在初始化成功后,安装日志会打印一段类似于‘kubeadm join 10.211.55.39:6443 --token jh7j30.3e4igzontf4vep3x --discovery-token-ca-cert-hash sha256:ca6086e0594aa2935bc1c6f2152739119c5179ddcdaf3a2bd95ea827c2d3e305’ 的日志,该命令就是node节点加入此集群的命令。
# 初始化成功后,日志还会打印一些叫你执行的sh日志('mkdir -p $HOME/.kube 等等,总共3条'),目的主要是用户的相关操作,直接复制执行即可
kubeadm init --image-repository registry.aliyuncs.com/google_containers -kubernetes-version v1.16.0 --pod-network-cidr=10.244.0.0/16
# 安装fannel 大家可以参考kubeadm git地址:https://github.com/coreos/flannel#flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
此步骤,只需在master节点上执行。等待系统下载对应的镜像后,使用kubectl get pod --all-namespace来查看当前集群中的pod运行情况,待所有的pod处于running状态,及表示master初始化成功。
2.4 将node加入集群
在node节点上,执行上述打印日志的‘kubeadm join .....’
日志。然后,在maste节点上,执行kubectl get node
,查看节点。如果类似于下图,则恭喜你,Kubernetes安装成功!
2.5 node节点ROLES为none处理
在上述node截图中,如果ROLES列为none,则通过打标签来进行修复。其实,该列的实现就是通过标签来实现,不过这个标签比较特殊。如果master节点的ROLES为none,则可为master的节点打上标签node-role.kubernetes.io/master=;如果node节点的ROLES为none,则可为node节点打上标签node-role.kubernetes.io/node=
。
总结:
文章主要以实用参考,并没有提供每个步骤执行截图,所以对于新手,可能不太适合。仔细把整个流程首先梳理一遍,然后再动手,可能效果会更好。安装主要痛点就是在下载Kubernetes镜像问题,目前采用国内的阿里云的源,问题不大。不过也会可能出现下载不了的问题,我第一次安装的时候,在执行yum install -y kubelet kubeadm kubectl
进行安装时,就提示下载不了对应的镜像,如果出现这种情况,要么就等阿里云同步成功,要么就使用其他的源,华为或者网易貌似也有。