kubeadm是Kubernetes官方提供的用於快速安裝Kubernetes集羣的工具,伴隨Kubernetes每一個版本的發佈都會同步更新,kubeadm會對集羣配置方面的一些實踐作調整,經過實驗kubeadm能夠學習到Kubernetes官方在集羣配置上一些新的最佳實踐。node
Docker安裝
每一個機器都須要裝linux
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
sudo setenforce 0 sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
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
EOFgit
cat <
[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
yum makecache fast yum install -y kubelet kubeadm kubectl
kubelet的啓動環境變量要與docker的cgroup-driver驅動同樣docker
docker info | grep -i cgroup Cgroup Driver: cgroupfs --> 運行命令顯示
docker的cgroup-driver是cgroupfs,而k8s默認是systemd
修改docker的cgroup-driverjson
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"]
}vim
systemctl restart docker systemctl status docker
systemctl enable kubelet.service systemctl start kubelet.service
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 0api
--kubernetes-version : 指定版本號
--apiserver-advertise-address : 指定主機地址
其中設置image-repository這一步很重要,kubeadm默認從官網k8s.grc.io下載所需鏡像,國內沒法訪問,所以須要指定阿里雲或者是其餘國內鏡像倉庫地址。網絡
定義POD的網段爲: 10.244.0.0/16,app
//這個返回信息三條命令是配置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
運行初始化成功後返回的三條命令
有不少種選擇參考
咱們選擇的是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節點加入到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
kubeadm reset