利用 Kubeadm 创建 Kubernetes 集群之 Centos,你会了吗?
前记
Kubeadm
是一个工具,通过提供 kubeadm init
和 kubeadm join
来作为创建 Kubernetes
集群的最佳实践 “快速路径”
简单理解就跟 Docker swarm
差不多吧,Kubeadm
的 GA
版本都已经发布了,那还等什么呢?
部署
资源版本
CentOS 7.6 64
Kubernetes version: v1.13.2
Docker version 18.06
这里为什么使用
Docker 18.06
是因为kubeadm now properly recognizes Docker 18.09.0 and newer, but still treats 18.06 as the default supported version.
所以我们默认还是使用 18.06
服务器
这里我们使用 CentOS 7.6 64
,同时测试环境为阿里云服务器
IP Address | Hostname | CPU | Memory |
---|---|---|---|
172.16.1.86 | Master | 2C | 4G |
172.16.1.87 | Node1 | 2C | 4G |
172.16.1.88 | Node2 | 2C | 4G |
这里注意一下服务器系统,目前官方已支持
Ubuntu 16.04+
、Debian 9
、CentOS 7
、RHEL 7
等
配置
关闭防火墙
1 | setenforce 0 |
设定 /etc/hosts
1 | 172.16.1.86 Master |
禁用 Swap
1 | swapoff -a && sysctl -w vm.swappiness=0 |
将配置中 net.bridge.bridge-nf-call-iptables
被设为 1
1 | cat <<EOF > /etc/sysctl.d/k8s.conf |
安装 Docker
在 3 台服务器上都安装上 Docker
,此次实验 Docker
版本:Docker version 18.06
安装完成启动 Docker
1 | systemctl enable docker.service |
安装 K8s
在 3 台服务器上配置 YUM
源为阿里镜像源
1 | cat <<EOF > /etc/yum.repos.d/kubernetes.repo |
您需要在每台机器上都安装以下的软件包:
- kubeadm: 用来初始化集群的指令。
- kubelet: 在集群中的每个节点上用来启动
pod
和container
等。 - kubectl: 用来与集群通信的命令行工具。
1 | yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes |
版本:Kubernetes version: v1.13.2
Master
在 Master
节点上配置 kubelet
所需的 cgroup
驱动
1 | cat <<EOF > /var/lib/kubelet/kubeadm-flags.env |
需要重启 kubelet
:
1 | systemctl daemon-reload |
k8s.gcr.io
镜像本地化
1 | kubeadm config images list //查看所需要的镜像 |
初始化 Master
1 | kubeadm init --kubernetes-version=v1.13.2 --pod-network-cidr=10.244.0.0/16 |
配置 kubectl
认证信息
1 | # 非root用户 |
安装网络插件 flannel
1 | kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml |
Node
Node
镜像本地化
1 | // 编辑脚本从hub获取镜像 |
将节点加入集群
1 | kubeadm join 172.16.1.86:6443 --token xxx --discovery-token-ca-cert-hash xxx |
Dashboard
未完待续…
题外话:
安装过程中可以用
tail -f 100 /var/log/messages
查看日志,便于找到问题所在