安装测试kubernetes集群

今天需要搭建一个简单的测试k8s集群,简单记录下流程

安装环境

  • CentOS 7.2
  • Docker 18.06
  • Kubernetes 1.17.3

0x01 安装组件

参考官网,源地址替换成清华的镜像源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
cat <<EOF > /etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=0
EOF

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.tuna.tsinghua.edu.cn/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
EOF

yum install -y docker-ce --disableexcludes=docker-ce-stable

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

一些 RHEL/CentOS 7 的用户曾经遇到过问题:由于 iptables 被绕过而导致流量无法正确路由的问题

检查是否加载br_netfilter内核模块

1
lsmod | grep br_netfilter

添加sysctl配置

1
2
3
4
5
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

0x02 初始化集群

由于国内原因,gcr无法直接连接,kubeadm新版本支持传递镜像地址,这里使用阿里云

1
kubeadm init --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers

然后按照提示将剩下节点加入集群

1
2
kubeadm join <ip>:6443 --token <token> \
--discovery-token-ca-cert-hash <hash>

0x03 安装网络插件

初始化集群以后,我们可能发现node处于NotReady状态,排查日志发现没有cni插件,也就是网络插件,需要自己根据需要安装,这里我们测试集群安装最简单的flannel插件

1
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

这个yml中包含除了x86以外的其他架构,虽然没有影响,处女座的可以手动删除,如果quay.io连不上的话,可以考虑换成quay.azk8s.cn

0x04 最后

安装完成后,检查各个node是否readdy

1
kubectl get nodes

检查系统组件是否都运转正常

1
kubectl get all -n kube-system

一个基本的测试环境就搭建好了,不得不说kubeadm对于基础安装还是挺方便的

Ext

国内大环境不好,很多镜像没办法直接拉取,可以使用微软的镜像,中规中矩

微软容器镜像

global proxy in China
dockerhub (docker.io) dockerhub.azk8s.cn
gcr.io gcr.azk8s.cn
quay.io quay.azk8s.cn
mcr.microsoft.com mcr.azk8s.cn

有网友也做了个小工具,方便你自动转换地址 azk8spull