使用kubespray在本地Windows上创建Kubernetes集群的方法

关于这篇文章

这篇文章是2018年Kubernetes陪伴日历第2天的第10天的文章。

方法: 在本地PC上搭建Kubernetes集群的介绍
环境: Windows 10(可能也适用于Windows 7)

动力

Kubernetes作为容器编排工具成为事实上的标准。
如果想尝试使用Kubernetes,最简单的方法是使用各云服务商的托管服务(GKE、AKS、EKS)。
但是,使用托管服务基本上是要花钱的。
也有一些免费的方法(*),但可用资源非常有限,不足以尝试各种功能。
不过,大家现在使用的个人电脑应该具备相当的资源。
因此,我们今天介绍如何在本地电脑上搭建Kubernetes集群。
我们将使用kubespray来构建Kubernetes集群。

※参考资料:https://qiita.com/apstndb/items/788f705e71e7660967a6

请提供中文的同义词选项。

kubespray是什么

公式仓库位于https://github.com/kubernetes-incubator/kubespray。
正如网站上所说,它是用于部署可用于生产环境的Kubernetes集群的工具。
虽然可能有些夸张,但是您可以使用它来构建适用于各种环境的生产级集群。
因此,我认为这是学习Kubernetes的最佳环境。
注意:由于kubespray使用ansible,因此在Windows上使用它会非常困难。如果可能的话,我建议您在Linux环境中按照这里提到的步骤进行操作,这样可以减少大约一半的工作量。

制定建设方向

kubespray支持在vagrant上进行构建,但不支持Windows作为使用vagrant的主机操作系统。
实际上,我曾经费了很多努力尝试在Windows上使用vagrant,但没有成功,所以不太推荐。(安装ansible出现问题,而使用ansible_local又在许多地方出错)
※也许问题只是我技术水平不够的原因… 唉
因此,我们的策略是在Windows上的vagrant中创建bootstrap VM和kubernetes集群的VM部分。然后,在bootstrap VM上下载kubespray,并使用ansible来进行kubernetes集群的设置。
※注意,本次我们假设创建以下结构的Kubernetes集群,请根据需要灵活调整。

    • Kubernetes Master

名前: kube-master
IPアドレス: 192.168.33.101
VM台数: 1
その他: etcdもこのVM上に立てる

Kubernetes Node

名前: kube-node
IPアドレス: 192.168.33.102
VM台数: 1

构建Kubernetes集群的步骤

安装vagrant

我会在Windows上安装Vagrant来创建虚拟机。
有关安装的详细说明请参阅其他文章。
参考网站:https://qiita.com/TakashiOshikawa/items/d2fb48d59e9e316af9a2

创建基于Kubernetes集群的虚拟机。

为了能够通过ssh访问,我们使用vagrant创建了一个虚拟机,并使用bootstrap上的ansible进行配置。
为了简化本次设置和稍后将要解释的Bootstrap VM设置,我们将Vagrantfile放置在GitHub上(https://github.com/sh-miyoshi/windows-kube-cluster)。
注意:为了能够通过root密码访问ssh,安全性会大大降低。因此,请仅在您自己的本地环境中使用。

    windows-kube-clusterをダウンロード
$ git clone https://github.com/sh-miyoshi/windows-kube-cluster.git
or
公式ページのClone or Download → Download ZIPをクリック後、解凍する

設定ファイルを編集
以下の項目はデフォルト値以外を使用したい人向けです。デフォルト値を使用する場合は無視してください。

kube-cluster/ansible/group_vars/all.yamlの変数の値(sshのパスワード)を変えてください
kube-cluster/Vagrantfileをテキストエディタで開き、$vm_memoryや$vm_infoを適当に編集してください。

VMを起動

$ cd /path/to/window-kube-cluster/kube-cluster
$ vagrant up

创建 Bootstrap VM

    VMを起動
$ cd /path/to/window-kube-cluster/bootstrap
$ vagrant up

使用Kubespray搭建Kubernetes集群。

在 Bootstrap VM 上使用 SSH 登录,并在进行必要的配置后,使用 ansible-playbook 命令来创建集群。

    VMに乗り込む
$ cd /path/to/window-kube-cluster/bootstrap
$ vagrant ssh
    • Kubernetes Cluster VMへアクセスできるように修正

 

    • /etc/hostsファイルを編集し、Bootstrap VMからKubernetes Clusterの各VMに名前でアクセスできるようにします。

 

    viで/etc/hostsファイルを開き、以下のように変更してください。(下2行を追加)
127.0.0.1       miyoshi-vm      miyoshi-vm
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.33.101 kube-master
192.168.33.102 kube-node
    • kubesprayのインストール

 

    • GitHubの公式リポジトリからダウンロードします

 

    その後pip installコマンドで必要なパッケージをインストールします(たぶんなくても動くけど一応・・・)
$ git clone https://github.com/kubernetes-incubator/kubespray.git
$ cd kubespray
$ sudo yum install python-pip
$ sudo pip install -r requirements.txt
    • 設定ファイルを書く

 

    • kubespray/inventory/sampleディレクトリ下にあるhosts.iniにKubernetes Clusterの情報を記入します。

 

    デフォルト値でやっている方は以下の情報をコピペしてください。
[all]
kube-master ip=192.168.33.101
kube-node ip=192.168.33.102

[kube-master]
kube-master ip=192.168.33.101

[etcd]
kube-master ip=192.168.33.101

[kube-node]
kube-node ip=192.168.33.102

[k8s-cluster:children]
kube-master
kube-node
    • ansibleの実行

 

    • 先ほど作成したhosts.iniを使ってKubernetes Clusterを作っていきます。

 

    • -kオプションを付けることでSSHのパスワードを聞いてもらうようにしています。

 

    • しばらく待てばansibleによるセットアップが終わってKubernetes Clusterが作成されます。

 

    ※まぁまぁ時間かかります
$ sudo ansible-playbook -i inventory/sample/hosts.ini -k cluster.yml

确认状态

我们要确认最后创建的Kubernetes集群是否正常运行。

    1. 使用SSH进入kube-master。

 

    1. 创建一个名为nginx.yaml的文件,并且创建资源。

 

    确认可从浏览器访问。
$ cd /path/to/windows-kube-cluster/kube-cluster
$ vagrant ssh kube-master
$ vi nginx.yaml
  ※以下を参照
$ kubectl apply -f nginx.yaml
※ windows上のブラウザからhttp://192.168.33.101:30000にアクセス
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  containers:
    - name: nginx
      image: nginx
      ports:
      - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
    - name: http
      port: 80
      targetPort: 80
      nodePort: 30000

In Chinese, the phrase “最後に” can be paraphrased as “最后” or “最后的时候” de .

现在,Windows用户也可以享受快乐的容器生活?。

bannerAds