1. 关闭swap
# 临时关闭
swapoff -a
# 永远关闭,打开如下文件注释掉swap那一行
vi /etc/fstab
2. 关闭 SELINUX
# 临时关闭
setenforce 0
# 永远关闭,打开文件
vi /etc/selinux/config
SELINUX=disabled
3. 安装docker
yum install docker
4. docker镜像加速
#修改文件
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://gjedjzbz.mirror.aliyuncs.com"]
}
5. 修改主机名
hostnamectl set-hostname k8s-master
6. 添加 repo源
cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
7. 安装
# 安装
yum install -y kubelet kubeadm kubectl
# 开机启动
systemctl enable kubelet && systemctl start kubelet
8. 拉取 资源镜像:
# 拉取镜像
docker pull mirrorgooglecontainers/kube-apiserver:v1.15.0
docker pull mirrorgooglecontainers/kube-controller-manager:v1.15.0
docker pull mirrorgooglecontainers/kube-scheduler:v1.15.0
docker pull mirrorgooglecontainers/kube-proxy:v1.15.0
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.3.10
docker pull coredns/coredns:1.3.1
docker pull registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64
#修改镜像的标签
docker tag mirrorgooglecontainers/kube-apiserver:v1.15.0 k8s.gcr.io/kube-apiserver:v1.15.0
docker tag mirrorgooglecontainers/kube-controller-manager:v1.15.0 k8s.gcr.io/kube-controller-manager:v1.15.0
docker tag mirrorgooglecontainers/kube-scheduler:v1.15.0 k8s.gcr.io/kube-scheduler:v1.15.0
docker tag mirrorgooglecontainers/kube-proxy:v1.15.0 k8s.gcr.io/kube-proxy:v1.15.0
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
docker tag mirrorgooglecontainers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64 quay.io/coreos/flannel:v0.10.0-amd64
# 移除旧的镜像
docker rmi mirrorgooglecontainers/kube-apiserver:v1.15.0
...
注意:修改tag后一定要注意后面的imageid是否有重复:
9. 初始化master
kubeadm init --kubernetes-version=v1.15.0 --pod-network-cidr=10.244.0.0/16
--kubernetes-version: 用于指定 k8s版本
--apiserver-advertise-address:用于指定使用 Master的哪个network interface进行通信,若不指定,则 kubeadm会自动选择具有默认网关的 interface
--pod-network-cidr:用于指定Pod的网络范围。该参数使用依赖于使用的网络方案,本文将使用经典的flannel网络方案
错误处理文档1:https://cloud.tencent.com/developer/article/1454325
错误摘要:It seems like the kubelet isn't running or healthy)
10. 配置 kubectl,在 Master上用 root用户执行下列命令来配置 kubectl
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
source /etc/profile
echo $KUBECONFIG
11. 安装Pod网络
sysctl net.bridge.bridge-nf-call-iptables=1
然后在 Master节点上执行如下命令
kube-flannel.yaml 下载地址一旦 Pod网络安装完成,可以执行如下命令检查一下 CoreDNS Pod此刻是否正常运行起来了,一旦其正常运行起来,则可以继续后续步骤
kubectl get pods --all-namespaces -o wide
12. 主节点是否就绪
kubectl get nodes
13. 添加slave节点:
slave节点拉取镜像,不需要全部拉下来,只拉取用到的:
# 试了好多次,如果拉全的话,slave节点启动的时候会报莫名其妙的错误,只保留这3个后再没出现问题
docker pull mirrorgooglecontainers/kube-proxy:v1.15.0
docker pull mirrorgooglecontainers/pause:3.1
docker pull registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64
slave节点加入:
kubeadm join 192.168.199.130:6443 --token 8rix9v.pcfkjlypg07m5hvm --discovery-token-ca-cert-hash sha256:16b83fa640d69a3c3d1d981969641cf61f255503f5eb9712eae22a92f5420859
如果 token忘记,则可以去 Master上执行如下命令来获取:
kubeadm token list
加入成功后,返回如下:
14. 复制 master节点的 10-flannel.conflist 文件到slave节点,该文件在master的位置: /etc/cni/net.d ,拷贝到slave节点上相同的文件目录下。
15. 查看节点状态:
kubectl get nodes
16. 移除slave节点:
kubectl delete node
# 先执行该命令
kubeadm reset
# 再执行加入命令
kubeadm join ……
vi /etc/sysconfig/kubelet
加入:
--runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice
重启kubelet
systemctl restart kubelet
# 查看 kubelet的错误日志
journalctl -f -u kubelet
参考文档连接:https://www.codesheep.cn/2018/12/27/kubeadm-k8s1-13-1/