使用Vagrant部署K8S Ubuntu集群

2021-09-19 18:28:31 字數 3657 閱讀 4359

雖然官方已有乙個vagrant開發環境可用於mac,但是有 幾個問題:

使用了並不是必須的salt來裝k8s,沒有必要

國內使用的話需要配置翻牆**,我本人用的不是vpn而是proxy,比較麻煩些

部分資訊稍老,且更新比較慢,而k8s的開發迭代速度很快

因此,我準備按照下述方法構建mac下開發環境:

使用官方ubuntu bare-metal cluster的安裝方式,完成k8s集群軟體安裝

為了節省資源及簡化介紹,下文中只用兩台vm,功能分別是:

k8s-master:k8s集群master節點,是個standalone的模式,即:master和node都裝在一台vm上

假定環境已安裝好vagrant(1.6.2以上)和virtualbox(4.3),然後需要做三件事:

vagrant box add ubuntu-14.04-amd64

建立乙個目錄(本文假定路徑為~/k8s/deploy/),也即vagrantfile所在目錄

mkdir -p ~/k8s/deploy

cd ~/k8s/deploy

編寫vagrantfile檔案:在deploy目錄新建乙個檔案vagrantfile,寫入下述內容:

vagrant.configure(2) do |config|

config.vm.define "k8s-ctl"

do |c|

c.vm.box = "ubuntu-14.04-amd64"

c.vm.network "public_network"

end config.vm.define "k8s-master"

do |c|

c.vm.box = "ubuntu-14.04-amd64"

c.vm.network "public_network"

endend

然後就可以通過vagrant up啟動兩台vm,然後可以ssh進入k8s-ctl:

vagrant up

vagrant ssh k8s-ctl

這部分主要參考官方ubuntu安裝guide,但基於使用場景不同做了一些改動。

主要如下步驟:

cd ~/k8s/deploy

wget

/kubernetes/releases

/download/v1.0.6/kubernetes.tar.gz -o - | tar -zxf -

然後,我們就可以進入k8s-ctl,開始進行部署前的準備工作:
vagrant ssh k8s-ctl

export http_proxy=http://:export https_proxy=https://:cd /vagrant/kubernetes/cluster/ubuntu

修改./build.sh,在檔案頭新增:
flannel_version=0.5.3

etcd_version=2.2.0

kube_version=1.0.6

然後執行 `./build.sh`,正常結束後,當前路徑下會多出乙個`binaries/`目錄,儲存的是k8s多個二進位制執行檔案。

修改部署配置

config-default.s**件頭部新增如下內容:
nodes="[email protected]"

role="ai"

num_minions=1

注:這裡`nodes`按照自己環境的情況修改

開始部署

export kubernetes_provider=ubuntu

cd /vagrant/kubernetes/cluster/

./kube-up.sh

注1:如果提示需要sshkey,則`ssh-keygen && ssh-add`

注2:如果validate不成功,可能是因為使用的box映象缺少一些需要的軟體,ssh進入k8s-master vm進行安裝,如docker、pgrep、bridge-utils、apt-transport-https。

注3:部署過程**錯,可以使用`./kube-down.sh`進行回退

注4:部署過程如果出現網路錯誤,注意排查:每個node上/etc/hosts都已經配置了host-name,以及取消了proxy設定: unset http_proxy, https_proxy

驗證部署結果

通過kubectl命令可以check集群狀態,以及訪問k8s master的api-server
vagrant@vagrant:/vagrant/kubernetes/cluster$ ./kubectl.sh get nodes

name labels status

192.168.0.108 kubernetes.io/hostname=192.168.0.108 ready

vagrant@vagrant:/vagrant/kubernetes/cluster$ curl 192.168.0.108:8080/api

export kubernetes_provider=ubuntu

export path=$path:/vagrant/kubernetes/cluster/ubuntu/binaries

alias kc="kubectl"

可以在集群上安裝k8s的addons,比如dns、kubeui、kubedash,可以通過下述命令部署自帶的dns

cd cluster/ubuntu

./deployaddons.sh

國內如果沒用vpn,需要在k8s-master(如果集群,則在所有節點)上配置docker**,否則無法pull映象,ubuntu下:

ssh免賬號登入的方法:kube-up過程需要多次ssh登入到各個nodes執行操作,以及scp傳送檔案,可以配置金鑰對進行免賬號登入:

# 在master節點生成秘鑰檔案

ssh-keygen -t dsa -p '' -f ~/.ssh/id_dsa

# 將秘鑰檔案拷貝到所有節點

ssh-copy-id -i ~/.ssh/id_dsa.pub vagrant@

本文**中文社群-

使用vagrant部署k8s ubuntu集群

k8s集群部署 docker部署k8s安裝篇

1 安裝docker 緊接著配置乙個穩定 stable 的倉庫 倉庫配置會儲存到 etc yum.repos.d docker ce.repo檔案中 yum config manager add repo 更新yum安裝的相關docke軟體包 安裝docker ce yum update y yum...

單機部署k8s

安裝docker ce systemctl enable docker systemctl start docker 修改cgroup driver 為systemd 預設為cgroups echo kubelet kubeadm extra args cgroup driver systemd e...

k8s kubernates 如何部署

本文件最初是基於kubenetes1.6版本編寫的,對於kuberentes1.8及以上版本同樣適用,只是個別位置有稍許變動,變動的地方我將特別註明版本要求。本系列文件介紹使用二進位制部署kubernetes集群的所有步驟,而不是使用kubeadm等自動化方式來部署集群,同時開啟了集群的tls安全認...