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