利用 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
查看日志,便于找到问题所在