kubeadm是kubernetes官方提供的快速安装和初始化kubernetes集群的工具,虽然处于beta和alpha状态,还不能用在生产环境,但可以体会官方推荐的kubernetes最佳实践的设计和思想。

准备

3台CentOS 7.2主机,修改/etc/hosts

10.110.18.216 node1
10.110.18.217 node2
10.110.18.218 node3

关闭各个主机的防火墙

systemctl stop firewalld
systemctl disable firewalld

禁用SELINUX

setenforce 0

创建/etc/sysctl.d/k8s.conf,配置内容

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

安装Docker-ce-17.03.2

添加docker-ce的源

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

查看yum源中的docker版本

yum list docker-ce.x86_64  --showduplicates |sort -r
docker-ce.x86_64            17.09.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.0.ce-1.el7.centos             docker-ce-stable

kubernetes 1.8针对Docker的1.11.2、1.12.6、1.13.1和17.03等版本做了验证。

安装docker-ce-17.03.2

yum makecache fast

yum install -y --setopt=obsoletes=0 \
  docker-ce-17.03.2.ce-1.el7.centos \
  docker-ce-selinux-17.03.2.ce-1.el7.centos

systemctl start docker
systemctl enable docker

docker从1.13版本开始调整默认的防火墙规则,禁用iptables filter表中的FORWARD链,这样会引起Kubernetes集群中跨Node的Pod无法通信,因此需要在各个Docker节点执行

iptables -P FORWARD ACCEPT

可以在docker的systemd unit文件/lib/systemd/system/docker.service中加入配置

ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT

重新加载配置,并启动

systemctl daemon-reload
systemctl restart docker

安装kubeadm和kubelet(1.9.0)

配置kubernetes的yum源

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
EOF

安装kubelet、kubeadm、kubectl(1.9.0)

yum makecache fast
yum install -y kubelet kubeadm kubectl

kubernetes文档中kubelet的启动参数--cgroup-driver 默认是cgroupfs。但通过yum安装时,会生成/etc/systemd/system/kubelet.service.d/10-kubeadm.conf 文件,内容

Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"

当使用docker info 查看信息时

docker info
......
Server Version: 17.03.2-ce
......
Cgroup Driver: cgroupfs

修改docker的cgroup driver与kubelet一致,在/etc/docker/daemon.json 配置

{
  "exec-opts": ["native.cgroupdriver=systemd"]
}

重启docker服务

systemctl restart docker

在各节点开机启动Kubelet服务

systemctl enable kubelet.service

关闭swap

kubernetes 1.8要求关闭系统的Swap,否则默认配置下kubelet无法启动,当然也可以通过修改启动参数--fail-swap-on=false 更改限制。

关闭swap

swapoff -a

修改/etc/fstab 文件,注释掉SWAP的自动参数,使用free -m 确认swap关闭。调整swap参数,修改/etc/sysctl.d/k8s.conf

vm.swappiness=0

执行sysctl -p /etc/sysctl.d/k8s.conf 使修改生效。

或者是修改/etc/systemd/system/kubelet.service.d/10-kubeadm.conf

Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false"

重新加载配置

systemctl daemon-reload

初始化集群

使用kubeadm初始化集群,选在node1作为Master Node

kubeadm init \
  --kubernetes-version=v1.9.0 \
  --pod-network-cidr=10.244.0.0/16 \
  --apiserver-advertise-address=10.110.18.216

results matching ""

    No results matching ""