使用kubeadm方式安裝K8S


Kubeadm安裝

kubeadm是Kubernetes官方提供的用於快速安裝Kubernetes集群的工具,伴隨Kubernetes每個版本的發布都會同步更新,kubeadm會對集群配置方面的一些實踐做調整,通過實驗kubeadm可以學習到Kubernetes官方在集群配置上一些新的最佳實踐。

安裝Docker ce

Docker安裝
每個機器都需要裝

環境准備

編輯hosts對應關系
cat <<EOF >>/etc/hosts
192.168.37.61 Smile1
192.168.37.62 Smile2
192.168.37.63 Smile3
EOF
關閉防火牆
systemctl stop firewalld.service  
systemctl disable firewalld.service
禁用SELINUX
sudo setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
關閉swap
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab 
配置內核參數添加如下內容

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

配置K8S的yum源

cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安裝kubelet、kubeadm、kubectl

yum makecache fast
yum install -y kubelet kubeadm kubectl

調整啟動方式

kubelet的啟動環境變量要與docker的cgroup-driver驅動一樣

docker info | grep -i cgroup
Cgroup Driver: cgroupfs  --> 運行命令顯示

docker的cgroup-driver是cgroupfs,而k8s默認是systemd
修改docker的cgroup-driver

vim /etc/docker/daemon.json
加入內容 : { "exec-opts": ["native.cgroupdriver=systemd"] }
最終文件內容

{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com"
],
"exec-opts": ["native.cgroupdriver=systemd"]
}

重啟Docker
systemctl restart docker
systemctl status docker

啟動kubelet服務

systemctl enable kubelet.service
systemctl start kubelet.service

配置Master節點

進行kubernetes集群初始化

Master節點執行命令 :
kubeadm init --kubernetes-version=1.15.0 \
--apiserver-advertise-address=192.168.37.61 \
--image-repository=gcr.azk8s.cn/google_containers \
--pod-network-cidr=10.244.0.0/16
--token-ttl 0

--kubernetes-version : 指定版本號
--apiserver-advertise-address : 指定主機地址
其中設置image-repository這一步很重要,kubeadm默認從官網k8s.grc.io下載所需鏡像,國內無法訪問,因此需要指定阿里雲或者是其他國內鏡像倉庫地址。

定義POD的網段為: 10.244.0.0/16,

初始化成功后會返回如下信息
//這個返回信息三條命令是配置kubectl工具的命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

// 這個返回信息是配置Node節點的命令
kubeadm join 192.168.98.230:6443 --token dexs09.ftjp7y7obq6a3t6n \
      --discovery-token-ca-cert-hash sha256:4aace846f8a6c381902592049591152fd7250b63e500e370a4b64902d202f7f2
配置kubectl工具

運行初始化成功后返回的三條命令

部署pod的網絡

有很多種選擇參考
我們選擇的是flannel,其它的幾種可能會有問題

wget https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

//在kube-flannel.yml里面默認的鏡像下載地址是quay.io,國內無法訪問,這里替換所有的quay.io為 quay-mirror.qiniu.com
sed -i "s/quay.io/quay-mirror.qiniu.com/g" kube-flannel.yml
執行安裝命令
kubectl apply -f kube-flannel.yml
查看運行狀態
kubectl get pod --all-namespaces -o wide

確保所有的pod都處在運行狀態

部署Node節點

將所有的node節點加入到kubernets集群

//在Node節點上執行(這個命令就是集群初始化之后的返回信息)
kubeadm join 192.168.98.230:6443 --token dexs09.ftjp7y7obq6a3t6n \
          --discovery-token-ca-cert-hash sha256:4aace846f8a6c381902592049591152fd7250b63e500e370a4b64902d202f7f2

最后檢測集群各節點的運行狀態

kubectl get nodes

再次查看各個pod的狀態,確保都是處於Runing狀態

kubectl get pod --all-namespaces -o wide

如果有問題,重新配置Master

kubeadm reset

我每天會寫文章記錄雲計算技術學習之路,另外我自己整理了些雲計算的學習資料,目前全部放在我的公眾號"SmallBird技術分享",加入我們一起學習交流,並且回復’分享’會有大數據,雲計算資源驚喜等着你~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM