1. 程式人生 > >虛擬機器部署k8s叢集

虛擬機器部署k8s叢集

一、搭建虛擬機器環境

環境要求

  • 作業系統 CentOS 7.4
  • 記憶體 2G 【至少】
  • CPU 2核【至少】
  • 硬碟 20G 【至少】

設定環境

  • 配置yum源
  • 關閉防火牆
  • 關閉Swap

配置yum源(替換檔案/etc/yum.repos.d/CentOS-Base.repo)

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
yum makecache

關閉防火牆

systemctl stop firewalld & systemctl disable firewalld

關閉Swap

執行swapoff -a可臨時關閉,但系統重啟後恢復
編輯/etc/fstab,註釋掉包含swap的那一行即可,重啟後可永久關閉

關閉SeLinux

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

安裝Docker

  • 新增倉庫
yum -y install yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache
  • 安裝Docker
安裝最新版Docker
yum install docker-ce -y
啟動Docker服務並激活開機啟動
systemctl start docker & systemctl enable docker

二、安裝Kubernetes

配置K8S的yum源


cat <<EOF > /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

或者

官方(CentOs):
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kube*
EOF

安裝K8S元件

安裝kubelet、kubeadm、kubectl:

yum install -y kubelet kubeadm kubectl

啟動kubelet

systemctl enable kubelet && systemctl start kubelet

使用kubeadm工具初始化K8S叢集(下載K8S的Docker映象,需要翻牆,否則需自己提前準備映象)

三、建立叢集

修改網橋設定

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

或者

vi /etc/sysctl.conf
追加:net.bridge.bridge-nf-call-iptables = 1
sudo sysctl -p

配置kubelet的cgroup drive

檢視docker cgroup driver:
docker info | grep -i cgroup
檢視kubenet cgroup
cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
若不一樣,則執行:
sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
systemctl daemon-reload

建立叢集

kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.12.1 --apiserver-advertise-address=192.168.80.11(本機ip地址)

初始化成功後,注意執行介面上的提示資訊

主節點上執行:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

網路方式:Canal(需要與kubeadm init 的–pod-network-cidr引數對應)

kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/canal/rbac.yaml
kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/canal/canal.yaml

從節點上執行:

kubeadm join...

驗證叢集是否成功

主節點上執行:

檢視所有節點:kubectl get nodes

檢視所有pod:kubectl get pods -n kube-system

四、搭建K8S Dashboard

  • 建立dashbord
kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
  • 使用NodePort方式暴露dashbord
kubectl edit -n kube-system svc kubernetes-dashboard

將type: ClusterIP 改為type: NodePort
  • 訪問
檢視kubernetes-dashboard節點
kubectl get pods -n kube-system -o wide | grep kubernetes-dashboard
檢視kubernetes-dashboard埠
kubectl get svc --all-namespaces | grep kubernetes-dashboard

訪問:https://192.168.80.26:30665   (192.168.80.26為節點ip,30665為埠)
  • 設定許可權
wget https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
vi https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
將RoleBinding 改為 ClusterRoleBinding並且修改roleRef中的kind為ClusterRole,name修改為cluster-admin
重新部署dashboard: kubectl apply -f kubernetes-dashboard.yaml
  • 檢視pod資訊
kubectl describe pods kubernetes-dashboard-767dc7d4d-dmpxx -n kube-system -o wide
  • 檢視日誌
kubectl logs kubernetes-dashboard-767dc7d4d-dmpxx -n kube-system
  • 開啟代理訪問:
kubectl proxy --address=192.168.80.26 --disable-filter=true