参考 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