虛擬機器部署k8s叢集
阿新 • • 發佈:2019-01-02
一、搭建虛擬機器環境
環境要求
- 作業系統 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