参考 https://blog.51cto.com/wzlinux/2322616

关闭SELinux。

sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
setenforce 0

关闭swap。

swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab

设置国内kubernetes阿里云源。

cat <<EOF > /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

安装kubernetes相关组件

yum install kubelet kubeadm kubectl -y systemctl enable kubelet && systemctl start kubelet

以上步骤需在所有机器上执行


master机器执行以下命令 ↓

获取相关镜像

kubeadm config images list

拉取相关镜像

docker pull mirrorgooglecontainers/kube-apiserver:v1.15.3
docker pull mirrorgooglecontainers/kube-controller-manager:v1.15.3
docker pull mirrorgooglecontainers/kube-scheduler:v1.15.3
docker pull mirrorgooglecontainers/kube-proxy:v1.15.3
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.3.10
docker pull coredns/coredns:1.3.1

给镜像tag 并删除无用镜像

使用

kubeadm init  --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12

命令初始化集群,成功后显示以下信息

给pod配置网络

pod网络插件是必要安装,以便pod可以相互通信。在部署应用和启动kube-dns之前,需要部署网络,kubeadm仅支持CNI的网络。

pod支持的网络插件有很多,如Calico,Canal,Flannel,Romana,Weave Net等,因为之前我们初始化使用了参数--pod-network-cidr=10.244.0.0/16,所以我们使用插件flannel。

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


node机器执行以下命令 ↓

kubeadm jonin ····

在master上执行

kubectl get po -n kube-system

发现有po处于Pending状态,使用 kubectl describe po <podeName> 查看错误原因,在node拉取相应镜像


补充 安装 bash-completion,执行一下命令,添加kubectl命令提示

echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrc

helm 提示则添加

echo "source <(helm completion bash)" >> ~/.bashrc