kubeadm是官方社群推出的一個用于快速部署kubernetes叢集的工具。
這個工具能通過兩條指令完成一個kubernetes叢集的部署:
在三台機器上都執行一下操作
關閉防火牆:
$ systemctl stop firewalld.service
$ systemctl disable firewalld.service
關閉selinux:
$ sed -i 's/enforcing/disabled/' /etc/selinux/config #
将SELINUX=disabled 然後注釋掉最後一行SELINUXTYPE=targeted
儲存
關閉swap:
$ swapoff -a # 臨時
$ vim /etc/fstab # 永久
注釋掉最後一行,重新開機伺服器
設定主機名,分别在3台機器上設定自己對應的主機名
$ hostnamectl set-hostname
在3台機器上添加hosts:
$ cat >> /etc/hosts << EOF
192.168.1.5 k8s-master
192.168.1.6 k8s-node1
192.168.1.7 k8s-node2
EOF
在3台機器上,将橋接的IPv4流量傳遞到iptables的鍊:
$ cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
$ sysctl --system # 生效
在3台機器上,時間同步:
$ yum install ntpdate -y
$ ntpdate ntp.tuna.tsinghua.edu.cn
在3台機器上,安裝Docker
# step 1: 安裝必要的一些系統工具
yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加軟體源資訊
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安裝 Docker-CE
yum makecache fast
yum -y install docker-ce
# Step 4: 開啟Docker服務
systemctl start docker
systemctl enable docker
在3台機器上,設定阿裡雲鏡像容器加速
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b5xv4sjm.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
重新開機docker服務
在3台機器上,添加阿裡雲YUM軟體源
$ cat > /etc/yum.repos.d/kubernetes.repo << EOF
[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
在3台機器上,安裝kubeadm,kubelet和kubectl
yum install -y kubelet-1.17.0 kubeadm-1.17.0 kubectl-1.17.0
systemctl enable kubelet
部署Kubernetes Master
$ kubeadm init
--apiserver-advertise-address=192.168.1.5
--image-repository registry.aliyuncs.com/google_containers
--kubernetes-version v1.17.0
--service-cidr=10.96.0.0/12
--pod-network-cidr=10.244.0.0/16
由于預設拉取鏡像位址k8s.gcr.io國内無法通路,這裡指定阿裡雲鏡像倉庫位址。
使用kubectl工具
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ kubectl get nodes
安裝Pod網絡插件(CNI)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
注意這裡面需要修改 amd64下面的鏡像位址為國内的阿裡源上的鏡像,才能下載下傳下來
首先使用wget 下載下傳該檔案,但是raw.githubusercontent.com 的DNS解析器可能無法解析,是以需要使用chrome浏覽器或者其他浏覽器下載下傳下來
然後進行修改registry.cn-hangzhou.aliyuncs.com/yanl/flannel:v0.12.0-amd64這個鏡像可以去阿裡的鏡像站查詢到就行
然後修改為對應位址即可
然後執行kubectl apply -f kube-flannel.yml即可
檢視狀态 kubectl get pods -n kube-system
為Running狀态即可
worker節點加入叢集
在192.168.1.6和192.168.1.7執行。
向叢集添加新節點,執行在kubeadm init輸出的kubeadm join指令:
kubeadm join 192.168.1.5:6443 --token 6u5cka.v0tqq07ju651fqee
--discovery-token-ca-cert-hash sha256:8c4654edaeab8f6d9d6afcd239a531810ac7d4b733998a74a4b183fe2d6d2232
該指令來源是master安裝後的日志中顯示
檢視叢集節點狀态 kubectl get nodes
為Ready即可
部署 Dashboard
指令位址
https://github.com/kubernetes/dashboard/releases
還是和上面一樣,使用浏覽器将 https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml 檔案下載下傳下來,然後修改
其中的image,上面的2個就是需要的
registry.cn-hangzhou.aliyuncs.com/inspur_containers/dashboard:v2.0.0-rc5
registry.cn-hangzhou.aliyuncs.com/kubernetes_ns/metrics-scraper:v1.0.4
這2個鏡像還是可以去阿裡鏡像倉庫去搜尋到然後更改就行
預設Dashboard隻能叢集内部通路,修改Service為NodePort類型,暴露到外部
通路位址:http://NodeIP:30001
建立service account并綁定預設cluster-admin管理者叢集角色:
kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
kubectl describe secrets -n kubernetes-dashboard $(kubectl -n kubernetes-dashboard get secret | awk '/dashboard-admin/{print $1}')
通過浏覽器通路 https://192.168.1.5:30001/#/login
即可