为了学习Kubernetes,创建一个minikube环境
Minikube是什么?
Kubernetes的试用很方便。虽然搭建Kubernetes看起来很困难,但有一个可以用于学习的环境真是太好了。
通常来说,Kubernetes是在多个节点上运行的,但似乎也可以在一个节点上运行。
请确认所需规格。
来自Minikube启动指南
項目必要スペックCPU2CPUMEM2GBDISK20GB
在家里的云端上搭建和运行具备上述规格的AlmaLinux8.6。
搭建家庭云端后,可以随时创建虚拟机,非常方便。
小型库环境建设
事先安装Docker。
有关Docker的安装,请参考这篇文章。
不一定需要安装Docker compose吗?
下载并运行minikube文件,将其添加到路径中。
# curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
# install minikube-linux-amd64 /usr/local/bin/minikube
运行Minikube
如果以root权限执行,请加上–force选项。
# minikube start --force
? Almalinux 8.6 上の minikube v1.28.0
❗ minikube は --force が付与された場合、様々な検証をスキップします (これは予期せぬ挙動を引き起こすかも知れません)
✨ docker ドライバーが自動的に選択されました。他の選択肢: ssh, none
? 「docker」ドライバーは root 権限で使用すべきではありません。root での継続を希望する場合、--force を使用してください。
? VM 内で minikube を実行している場合、--driver=none の使用を検討してください:
? https://minikube.sigs.k8s.io/docs/reference/drivers/none/
⛔ 要求されたメモリー割り当て (1811MB) が推奨の最小値 1900MB 未満です。デプロイは失敗するかもしれません。
? 要求された 1811MiB のメモリー割当は、システムのオーバーヘッド (合計システムメモリー: 1811MiB) に十分な空きを残しません。安定性の問題に直面するかも知れません。
? 提案: Start minikube with less memory allocated: 'minikube start --memory=1811mb'
? root 権限を持つ Docker ドライバーを使用
? minikube クラスター中のコントロールプレーンの minikube ノードを起動しています
? ベースイメージを取得しています...
? ロード済み Kubernetes v1.25.3 をダウンロードしています...
> preloaded-images-k8s-v18-v1...: 385.44 MiB / 385.44 MiB 100.00% 97.26 M
> gcr.io/k8s-minikube/kicbase: 386.27 MiB / 386.27 MiB 100.00% 14.26 MiB
> gcr.io/k8s-minikube/kicbase: 0 B [________________________] ?% ? p/s 13s
? docker container (CPUs=2, Memory=1811MB) を作成しています...
? Docker 20.10.20 で Kubernetes v1.25.3 を準備しています...
▪ 証明書と鍵を作成しています...
▪ コントロールプレーンを起動しています...
▪ RBAC のルールを設定中です...
? Kubernetes コンポーネントを検証しています...
▪ gcr.io/k8s-minikube/storage-provisioner:v5 イメージを使用しています
? 有効なアドオン: default-storageclass, storage-provisioner
? kubectl が見つかりません。kubectl が必要な場合、'minikube kubectl -- get pods -A' を試してください
? 終了しました!kubectl がデフォルトで「minikube」クラスターと「default」ネームスペースを使用するよう設定されました
当收到显示已完成的消息后即表示完成。
在安装过程中出现了内存不足的提示信息,但通过使用swap,是否设法安装成功了呢?
根据消息,可以看出他们正在使用Docker来搭建。
确认容器的启动状态
可以通过使用Docker来确认Kubernetes集群正在运行。
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eecfd2f5c752 gcr.io/k8s-minikube/kicbase:v0.0.36 "/usr/local/bin/entr…" 6 minutes ago Up 6 minutes 127.0.0.1:32772->22/tcp, 127.0.0.1:32771->2376/tcp, 127.0.0.1:32770->5000/tcp, 127.0.0.1:32769->8443/tcp, 127.0.0.1:32768->32443/tcp minikube
使用kubectl
当运行Minikube时,好像也会同时附带kubectl。但由于现在必须使用”minikube kubectl”命令来执行,所以使用起来不太方便。
# minikube kubectl -- get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-565d847f94-bdq7s 1/1 Running 0 18m
kube-system etcd-minikube 1/1 Running 0 18m
kube-system kube-apiserver-minikube 1/1 Running 0 18m
kube-system kube-controller-manager-minikube 1/1 Running 0 18m
kube-system kube-proxy-jjxnf 1/1 Running 0 18m
kube-system kube-scheduler-minikube 1/1 Running 0 18m
kube-system storage-provisioner 1/1 Running 1 (18m ago) 18m
通过编写别名,使得可以在 kubectl 中执行。
# alias kubectl="minikube kubectl --"
[root@minikube ~]# kubectl get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-565d847f94-bdq7s 1/1 Running 0 22m
kube-system etcd-minikube 1/1 Running 0 22m
kube-system kube-apiserver-minikube 1/1 Running 0 22m
kube-system kube-controller-manager-minikube 1/1 Running 0 22m
kube-system kube-proxy-jjxnf 1/1 Running 0 22m
kube-system kube-scheduler-minikube 1/1 Running 0 22m
kube-system storage-provisioner 1/1 Running 1 (21m ago) 22m
这次,我写了别名并配置了minikube的kubectl命令,不过好像还是可以安装kubectl。
确认集群配置
我成功启动了控制面板(主节点)并确认了内部DNS的终端点。
# kubectl cluster-info
Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
查询节点状态
由于minikube是单节点运行的,所以只显示一个。
# kubectl get node
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 121m v1.25.3
其他minikube指令
コマンド内容minikube start仮想マシンを起動するminikube stop仮想マシンを停止minikube delete仮想マシンを削除minikube status起動状態を確認するminikube ip仮想マシンのIPアドレスを確認minikube ssh仮想マシンへSSH接続するminikube addons listアドオンリストを表示するminikube dashboardKubernetesダッシュボードを起動
是外部服务器的问题吗?以下部分无法正常工作…(找时间来查找解决方法)
使用仪表盘
添加插件后可以使用。
# minikube addons enable metrics-server
? metrics-server is an addon maintained by Kubernetes. For any concerns contact minikube on GitHub.
You can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS
▪ k8s.gcr.io/metrics-server/metrics-server:v0.6.1 イメージを使用しています
? 'metrics-server' アドオンが有効です
可以启动仪表盘。
也可以添加 –url 选项。
# minikube dashboard
使用Grafana
# minikube addons enable heapster
⌛ metrics-server アドオンを使用します (heapster は廃止予定です)
? metrics-server is an addon maintained by Kubernetes. For any concerns contact minikube on GitHub.
You can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS
▪ k8s.gcr.io/metrics-server/metrics-server:v0.6.1 イメージを使用しています
? 'metrics-server' アドオンが有効です
# kubectl get svc --all-namespaces
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 104m
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 104m
kube-system metrics-server ClusterIP 10.108.86.162 <none> 443/TCP 76m
kubernetes-dashboard dashboard-metrics-scraper ClusterIP 10.109.205.197 <none> 8000/TCP 81m
kubernetes-dashboard kubernetes-dashboard ClusterIP 10.105.102.28 <none> 80/TCP 81m
目前 minikube 似乎是正常运行的,所以我们可以继续进行。