在家中搭建Kubernetes环境,并部署正在开发中的应用程序,使用Helm进行软件包安装
当想要接触Kubernetes时,由于AWS和GCP的免费额度有限且月费也相对较高,所以我选择在家里闲置的Windows电脑上部署了Kubernetes。这样我可以在其中部署正在开发中的应用程序,还可以通过Helm包来引入文件共享服务器等功能。
首先
可以在家里的闲置桌面电脑或笔记本电脑上部署Kubernetes环境,并在内部开发中的应用程序上部署,也可以通过一条命令启动文件共享、批处理、性能监控等服务。
简而言之;太长不看
在Windows上通过WSL2安装Ubuntu。然后安装minikube以构建kubernetes集群,并安装helm进行包管理。通过Ingress-Controller使用L7层面的反向代理将流量路由到每个Pod的服务,并将服务公开到外部。
-
- 在WSL2中安装Ubuntu,安装Docker
-
- 安装minikube
-
- 安装kubectl
-
- 通过kubectl检查是否可以访问minikube
-
- 安装Helm
- 路由到群集内的服务
能够实现的事情 shí de shì
在家中闲置的Windows PC上搭建kubernetes,并引入Helm包,用于部署正在开发中的应用程序和文件共享服务器等。
使用Helm引入的软件包示例
-
- minio: ファイル共有
-
- S3と互換性のあるminioを導入。ネットワーク内のPC間のファイル共有サーバーに。ブラウザやコマンドラインからアクセス可能。
-
- airflow: バッチ処理
-
- 定期実行したい処理(朝スケジュールを確認してslackへ送るなど)の実行、機械学習などの重たい処理の実行
-
- harbor: イメージリポジトリ
-
- 自宅でdocker imageをbuildして他のサーバーからも参照したい時に、Docker Hubへインターネット経由でアップロードすると容量も大きく時間もかかるため、自宅のイントラにイメージリポジトリを設置。
-
- (その他)
- Keycloak: 共通のアカウント認証、gitlab: イントラのgitリポジトリ、Prometheus+grafana: サーバーの性能監視 など
在Windows PC上建立kubernetes环境。
在WSL2上安装Ubuntu20.04,并安装Docker。
- Windows docsを参考にWSL2でUbuntuを導入
- Dockerをインストール(以下を実行)
sudo apt-get update -y && sudo apt-get upgrade -y
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt update && sudo apt install docker-ce
2. 运行minikube
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube
sudo mkdir -p /usr/local/bin/
sudo install minikube /usr/local/bin/
3. 安装 kubectl
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
4. 确认可以通过 kubectl 访问 minikube。
sudo service docker start
minikube start --vm-driver=docker
kubectl get node
5. 安装Helm。
Helm是一个可以在Kubernetes上部署服务的命令,只需使用一个命令即可使服务启动。
curl -O https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
bash ./get-helm-3
6. 将服务路由至群集内
Kubernetes与微服务架构非常相配,可以在Kubernetes上创建各种松耦合的服务,并通过API等方式进行协作。
minikube addons enable ingress