[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
enabled=1
创建完之后,获取当前系统有效的repolist
[root@master yum.repos.d]# yum repolist
为了方便在node节点上安装,可以将这个两个配置文件通过scp命令复制到node节点服务器上
[root@master yum.repos.d]# scp kubernetes.repo docker-ce.repo node1:/etc/yum.repos.d/
2、安装各组件
kuberctl:API Server的命令行客户端
[root@master yum.repos.d]# yum install docker-ce kubelet kubeadm kubectl
可以看到加载到的是哪些版本的包
安装到cri-tools-1.11.1-0.x86_64包时提示gpgkey没有安装
将yum-key.gpg下载到本地进行rpm --import导入
发现还是报同样的错,于是顺便也把rpm包的key也下载下来进行导入
wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
最后,都安装成功了。
3、启动docker
启动docker后,需要注意的是它会去docker仓库下载所依赖到的每个镜像文件,这些镜像文件暂时获取不到,建议将相关镜像文件通过其他途径下载到本地然后导入使用,或者推送到本地仓库。
在这里我们是借用别人此前提供的一种路径来获取并下载使用,因此在启动之前,需要编辑vim /usr/lib/systemd/system/docker.service,在该文件中定义一个环境变量
注意NO_PROXY中间是有下划线的。然后修改完配置文件之后需要重新加载配置文件,然后重新启动,否则修改不会生效。
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl start docker
是否启动成功用docker info查看一下,可以看出已经启动成功了
同时还要确保以下两个参数值为1。通过网桥转发的IP数据包会iptables规则过滤,而这两个选项将阻止过滤,Netfilter是默认情况下启用了桥梁,如果不阻止会导致严重的混乱
如果不是1需要修改为1
echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables
通过[root@master ~]# rpm -ql kubelet 命令查看都安装了什么文件
查看配置文件发现额外参数是空的
4、设置kubelet、docker为开机启动
[root@master ~]# systemctl start kubelet
[root@master ~]# systemctl status kubelet
这边没有明显的错误提示,因此查看日志[root@master ~]# tail /var/log/messages
[root@master ~]# systemctl stop kubelet #将kubelet关闭
因各个组件还未初始化完成所以不能启动,将其设置开机启动即可
[root@master ~]# systemctl enable kubelet #将其设置为开机启动
[root@master ~]# systemctl enable docker #将docker设置为开机启动
5、kubeadm init初始化
查看kubeadm init的帮助信息
[root@master ~]# kubeadm init --help
--apiserver-advertise-address:API服务器将通知它正在监听的IP地址,监听的地址为“0.0.0.0”,即本机所有IP地址。
--apiserver-bind-port:API服务器绑定到的端口。(默认:6443)
--cert-dir:加载证书的相关目录(默认:/etc/kubernetes/pki)
--config:配置文件的路径。警告:配置文件目前属于实验性,还不稳定。
--ignore-preflight-errors:将错误显示为警告的检查列表进行忽略。例如:“IsPrivilegedUser,Swp”。Value 'all'忽略所有检查中的错误。
--pod-network-cidr:指定pod网络的IP地址范围。如果设置,控制平面将为每个节点自动分配CIDRs。
--service-cidr:为service VIPs使用不同的IP地址。(默认“10.96.0.0/12”)
然后我们指定选项进行初始化:
[root@master ~]# kubeadm init --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
如果在初始化中碰到swap不支持的报错,如下图
需要做两个设定
①[root@master ~]# vim /etc/sysconfig/kubelet #加入以下参数
KUBELET_EXTRA_ARGS="--fail-swap-on=false"