1. 程式人生 > >VirtualBox上使用kubeadm安裝Kubernetes叢集

VirtualBox上使用kubeadm安裝Kubernetes叢集

之前一直使用minikube練習,為了更貼近生產環境,使用VirtualBox搭建Kubernetes叢集。
為了不使文章凌亂,把在搭建過程中遇到的問題及解決方法記在了另一篇文章:安裝Kubernetes叢集時遇到的問題及解決方法

1.軟體版本

  • VirtualBox:6.1
  • CentOS:7
  • Docker:19.03.6
  • Kubernetes:1.17

2.新建虛擬機器

主要是設定記憶體和硬碟,記憶體2G,硬碟20G基本夠用


3.虛擬機器配置

虛擬機器新建完成後,將CPU配置成2個。將網絡卡模式設定為橋接,這樣虛擬機器可以訪問外網,與宿主機也可以互相通訊,方便以後ssh。


4.安裝CentOS

如下圖設定好CentOs映象後,在VirtualBox介面點“啟動”,進入安裝介面點“Install CentOS 7”。

進入安裝介面

  • 設定時區。
  • 選擇安裝磁碟。
  • 安裝模式選“Minimal Install”,附加軟體全選
  • "NETWORK & HOST NAME"中開啟OnBoot,主機名如果不在這裡設定,在安裝完系統後可以通過“hostnamectl”命令設定。
  • 安裝過程中可以設定root使用者密碼或者新增新使用者。

設定好後,安裝、等待、重啟,就能進入CentOS了。


5.安裝Docker

直接在虛擬機器介面上操作比較費事,使用ssh免密登入。

//沒有 ~/.ssh/id_rsa.pub 檔案的,使用ssh-keygen一直回車生成即可。
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

Docker安裝步驟如下:

//新增yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/repo/Centos-7.repo

//安裝
wget -qO- https://get.docker.com | sh

6.安裝Kubernetes

6.1 禁用SELinux

  • 臨時關閉:命令列執行 setenforce 0
  • 永久關閉:修改/etc/selinux/config檔案,將SELINUX=enforcing改為SELINUX=disabled

6.2 關閉防火牆

systemctl disable firewalld && systemctl stop firewalld

6.3 關閉交換分割槽

swapoff -a && sed -i '/ swap / s/^/#/' /etc/fstab

6.4 更改iptables的設定

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

6.5 新增國內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=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

6.6 新增docker映象

在 /etc/docker/daemon.json 中加入一行 
"registry-mirrors": ["https://registry.docker-cn.co"]

6.7 安裝kubectl、kubeadm、kubelet

yum -y install kubectl kubeadm kubelet

6.8 啟動docker、kubelet

systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet

6.9 clone虛擬機器

clone兩個虛擬機器,並命名為kube1.vm、kube2.vm

hostnamectl set-hostname kube1.vm

將三臺虛擬機器的host寫入到宿主機和每一臺虛擬機器

vi /etc/hosts  

# 追加以下內容(ip自行替換)
192.168.1.98 kube0.vm
192.168.1.99 kube1.vm
192.168.1.100 kube2.vm

6.10 初始化master、新增node

在kube0.vm上執行 kubeadm init

安裝成功後在kube0.vm執行以下命令,以便於使用kubectl

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

在kube1.vm、kube2.vm中執行以下命令加入叢集(具體引數自行替換)。

kubeadm join 192.168.1.98:6443 --token 0m5rnp.6vizjaiowvk4fpkk \
    --discovery-token-ca-cert-hash sha256:8d74f62b11584360d3ab42f7747071c91d103f322e5a52c8a592b77fc2aadb04

此時檢視node的狀態可以看到都是NotReady

-> [[email protected]] [~] kubectl get node
NAME       STATUS     ROLES    AGE   VERSION
kube0.vm   NotReady   master   21h   v1.17.3
kube1.vm   NotReady   <none>   21h   v1.17.3
kube2.vm   NotReady   <none>   21h   v1.17.3

執行:kubectl describe node/kube0.vm ,發現是未配置容器網路。

runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized

6.11 配置容器網路(flannel)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

安裝完成後,等了一會還是NotReday,檢視pod狀態

kubectl describe 檢視原因:

kubectl describe -n kube-system pod/kube-flannel-ds-amd64-6kbdj

眾所周知的原因,使用映象拉取,然後docker tag 設定別名。
具體操作可以檢視Kubernetes搭建過程中使用k8s.gcr.io、quay.io、docker.io的映象加速

檢視pod狀態依然有問題:

-> [[email protected]] [~] kubectl get pod -A|grep flannel
kube-system   kube-flannel-ds-amd64-6kbdj        0/1     CrashLoopBackOff    5          11m
kube-system   kube-flannel-ds-amd64-k29d4        0/1     Error               5          11m
kube-system   kube-flannel-ds-amd64-kftn9        0/1     CrashLoopBackOff    6          11m

檢視logs:

-> [[email protected]] [~] kubectl logs -n kube-system pod/kube-flannel-ds-amd64-6kbdj
I0301 10:13:47.129650       1 main.go:514] Determining IP address of default interface
I0301 10:13:47.211916       1 main.go:527] Using interface with name enp0s3 and address 192.168.1.98
I0301 10:13:47.212141       1 main.go:544] Defaulting external address to interface address (192.168.1.98)
I0301 10:13:47.224287       1 kube.go:126] Waiting 10m0s for node controller to sync
I0301 10:13:47.224340       1 kube.go:309] Starting kube subnet manager
I0301 10:13:48.225108       1 kube.go:133] Node controller sync successful
I0301 10:13:48.225226       1 main.go:244] Created subnet manager: Kubernetes Subnet Manager - kube0.vm
I0301 10:13:48.225236       1 main.go:247] Installing signal handlers
I0301 10:13:48.229661       1 main.go:386] Found network config - Backend type: vxlan
I0301 10:13:48.232685       1 vxlan.go:120] VXLAN config: VNI=1 Port=0 GBP=false DirectRouting=false
E0301 10:13:48.238187       1 main.go:289] Error registering network: failed to acquire lease: node "kube0.vm" pod cidr not assigned
I0301 10:13:48.238377       1 main.go:366] Stopping shutdownHandler...

解決方法:
編輯 /etc/kubernetes/manifests/kube-controller-manager.yaml ,在spec -> containers -> -command 下加入兩行:

- --allocate-node-cidrs=true
- --cluster-cidr=10.244.0.0/16

然後刪除 kube-controller-manager ,它會自動重啟,配置就生效了,稍等片刻flannel的狀態就變成Running了。

-> [[email protected]] [~] kubectl delete -n kube-system pod/kube-controller-manager-kube0.vm
pod "kube-controller-manager-kube0.vm" deleted

只剩最後一個問題了,還有兩個coredns的pod狀態是"ContainerCreating"(可以檢視前面的截圖),也是由於容器網路導致的,刪掉後自動重建新的就好了。

-> [[email protected]] [~] kubectl delete -n kube-system pod coredns-6955765f44-dr5wg coredns-6955765f44-zmxft
pod "coredns-6955765f44-dr5wg" deleted
pod "coredns-6955765f44-zmxft" deleted

6.12 搭建完成

相關推薦

VirtualBox使用kubeadm安裝Kubernetes叢集

之前一直使用minikube練習,為了更貼近生產環境,使用VirtualBox搭建Kubernetes叢集。 為了不使文章凌亂,把在搭建過程中遇到的問題及解決方法記在了另一篇文章:安裝Kubernetes叢集時遇到的問題及解決方法 1.軟體版本 VirtualBox:6.1 CentOS:7 Docker:

Kubernetes(K8s) 安裝(使用kubeadm安裝Kubernetes叢集

概述:         這篇文章是為了介紹使用kubeadm安裝Kubernetes叢集(可以用於生產級別)。使用了Centos 7系統。 PS:      篇幅有點長,但是比較詳細、比較全面 一、Centos7 配置說明 1.1 

kubeadm安裝kubernetes 1.13.1叢集完整部署記錄

k8s是什麼   Kubernetes簡稱為k8s,它是 Google 開源的容器叢集管理系統。在 Docker 技術的基礎上,為容器化的應用提供部署執行、資源排程、服務發現和動態伸縮等一系列完整功能,提高了大規模容器叢集管理的便捷性。k8s是容器到容器雲後的產物。但是k8s並不是萬能,並不一

最全 使用Breeze視覺化安裝Kubernetes叢集(親測有效)

使用該工具,將抹平普通使用者學習複雜的kubeadm部署技能學習曲線,體會到一鍵式部署Kubernetes叢集的樂趣! 適用作業系統為RHEL 7.4/7.5/7.6 或 CentOS 7.4/7.5/7.6 Note: 請不要把Breeze所在的部署主機加入部署叢集主機列表

Kubeadm安裝Kubernetes集群環境

ice pre eat tin cnblogs client master logs clas 先設置主機名 hostnamectl set-hostname k8s-1 修改/etc/hosts文件 cat /etc/hosts 127.0.0.1 loca

[經驗交流] kubeadm 安裝 kubernetes 一年過期的解決辦法

target 版本 默認 signature http style clas 有效 cipher 轉載註明原作者地址:http://www.cnblogs.com/hahp kubeadm 是 kubernetes 提供的一個初始化集群的工具,使用起來非常方便。但是它創建的

使用kubeadm安裝kubernetes

art conf CP 方法 default join googl led 集群 安裝kubenetes的方法有多種,本文將介紹如何用kubeadm安裝kubernetes。 一 node準備 1 /etc/hosts文件 192.168.235.133 kube01 1

centos7使用kubeadm安裝kubernetes 1.11版本多主高可用

ips refresh www ember issues abi dash iyu let centos7使用kubeadm安裝kubernetes 1.11版本多主高可用 [TOC] kubernetes介紹要學習一個新的東西,先了解它是什麽,熟悉基本概念會有很大幫助。以

kubeadm安裝kubernetes v1.11.3 HA多主高可用並啟用ipvs

har 3.1 oba smt lec template prior yaml 應用 環境介紹: 系統版本:CentOS 7.5 內核:4.18.7-1.el7.elrepo.x86_64 Kubernetes: v1.11.3 Docker-ce: 18.06 Kee

使用腳本在Linux服務器自動安裝Kubernetes的包管理器Helm

apt 分享 hive char ati user cat more 執行文件 Helm之於Kubernetes好比yum之於Red Hat Enterprise Linux,或者apt-get之於Ubuntu。 Helm是由helm CLI和Tiller組成,是典型的Cl

使用指令碼在Linux伺服器自動安裝Kubernetes的包管理器Helm

Helm之於Kubernetes好比yum之於Red Hat Enterprise Linux,或者apt-get之於Ubuntu。 Helm是由helm CLI和Tiller組成,是典型的Client/Server應用。helm運行於客戶端,提供命令列介面;Tiller應用運行於Kubernetes內部。

使用Kubeadm 安裝k8s叢集

#!/bin/sh systemctl stop firewalld && systemctl disable firewalld && sed -i s/“SELINUX=enforcing”/“SELINUX=disabled”/g /etc/sel

轉 centos7使用kubeadm安裝kubernetes 1.12版本

最近在學習go 模板語法  還是有點小忙 !   感覺寫這種 kuberadm 搭建 kubernetes  還是有點水  好吧 可能我太高調了  前前後後搭過四 五次了  ! kuber

從0到1使用Kubernetes系列(三)——使用Ansible安裝Kubernetes叢集

上一篇文章《從0到1使用Kubernetes系列(二):安裝工具介紹》中,說到了Ansible的功能以及使用Ansible進行叢集部署的優勢,接下來將在本文中介紹如何通過Virtualbox + Vagrant啟動CentOS虛擬機器,並且使用ansible指令碼在虛擬機器中搭建kubern

Ubuntu18.04 國內環境使用kubeadm安裝kubernetes+docker(單機版)

新增源,新增key,安裝docker.io, kubelet, kubernetes-cni=0.6.0-00,和 kubeadm 先到/etc/apt/sources.list.d/資料夾中手動建立檔案kubernetes.list,在該檔案中新增(使用中科大的源,否則要翻牆,或者速

CentOS 7.5 使用 yum 源安裝 Kubernetes 叢集(二)

一、安裝方式介紹 1、yum 安裝 目前CentOS官方已經把Kubernetes源放入到自己的預設 extras 倉庫裡面,使用 yum 安裝,好處是簡單,壞處也很明顯,需要官方更新 yum 源才能獲得最新版本的軟體,而所有軟體的依賴又不能自己指定,尤其是你的作業系統版本如果低的話,使用 yum 源安裝

CentOS 7.5 使用 yum 源安裝 Kubernetes 叢集主要元件說明

1、Master元件 Master元件提供叢集的管理控制中心。 Master元件可以在叢集中任何節點上執行。但是為了簡單起見,通常在一臺VM/機器上啟動所有Master元件,並且不會在此VM/機器上執行使用者容器 kube-apiserverkube-apiserver用於暴露Kubernetes AP

centos7使用kubeadm安裝kubernetes 1.11版本多主高可用_Kubernetes中文社群

大佬,你好,照著這個方法搭建的成功後,卻無法使用heapster監控,部署後報錯heapster容器報錯 I0816 10:04:59.743015 1 heapster.go:72] /heapster –source=kubernetes:https://kubernetes.default

使用kubeadm部署kubernetes叢集

一、安裝環境準備 1、安裝環境: centos7.5,一個master節點,兩個node節點 CentOS Linux release 7.5.1804 (Core) 2、設定/etc/hosts檔案的IP和主機名對映 10.20.0.14 k8smaster 10.

使用kubeadm安裝Kubernetes 1.12_Kubernetes中文社群

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