在linux系統中安裝minikube

詳細信息查看官方文檔:https://minikube.sigs.k8s.io/docs/start/

部署環境:
操作系統:CentOS Linux 7 (Core)
操作系統類型:linux
架構:x86_64
minikube版本:v1.18.1
kubernetes版本:1.20.2

1、安裝docker

首先需要在linux系統中安裝docker,可以查看這篇文章《使用阿里云鏡像快速安裝docker-ce》

2、下載并安裝minikube

在github上面下載對應系統的minikube安裝文件:https://github.com/kubernetes/minikube/releases
我這里使用的是minikube-1.18.1-0.x86_64.rpm安裝minikube,使用下面的命令下載:

wget https://github.com/kubernetes/minikube/releases/download/v1.18.1/minikube-1.18.1-0.x86_64.rpm
# 安裝minikube
sudo rpm -ivh minikube-1.18.1-0.x86_64.rpm

3、啟動minikube

運行下面的命名啟動minikube:

minikube start --driver=docker --registry-mirror=https://registry.docker-cn.com,https://shraym0v.mirror.aliyuncs.com --embed-certs=true --image-mirror-country=cn --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers

參數說明
可以通過minikube start --help查看其它參數的詳細說明,這里說明上面使用的參數

  • minikube start:啟動一個本地單節點kubernetes集群。
  • --driver=docker:指定驅動為docker,默認為自動檢測(virtualbox, vmwarefusion, hyperv, vmware, docker, ssh)中的一個。
  • --registry-mirror=https://registry.docker-cn.com:使用國內的鏡像地址來提高拉取鏡像的速度,可以設置多個用,分割即可。
  • --embed-certs=true:如果為true,將在kubeconfig中嵌入證書,默認為false,在kubeconfig中將以絕對路徑的方式讀取證書文件。
  • --image-mirror-country=cn:需要使用的鏡像的國家/地區代碼,留空以使用全球代碼,對于中國大陸用戶,請將其設置為 cn。
  • --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers:設置用來拉取 Kubernetes 集群所需鏡像的倉庫,如果無法訪問gcr.io可以設置為 "auto" 讓minikube 為你自動選擇可以訪問的鏡像倉庫。對于中國大陸用戶可以設置registry.cn-hangzhou.aliyuncs.com/google_containers,但是我設置此參數導致有的鏡像無法拉取。

遇到的問題

1、 不能使用root用戶啟動docker driver

* minikube v1.18.1 on Centos 7.9.2009 (amd64)
* Using the docker driver based on user configuration
* The "docker" driver should not be used with root privileges.
* If you are running minikube within a VM, consider using --driver=none:
*   https://minikube.sigs.k8s.io/docs/reference/drivers/none/

X Exiting due to DRV_AS_ROOT: The "docker" driver should not be used with root privileges.

解決方法:

# 添加一個用戶
adduser minikube
# 將該用戶添加到docker組 --> gpasswd -a 用戶名 用戶組
gpasswd -a minikube docker
# 切換到該用戶
su minikube -
# 將當前用戶切換到docker組
newgrp - docker

2、 檢查到Docker cgroup驅動為 "cgroupfs",推薦使用 "systemd"

警告內容如下:

[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver.
 The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/

官方文檔表示,更改設置,令容器運行時和kubelet使用systemd作為cgroup驅動,以此使系統更為穩定。
兩種解決方法:
一、編輯docker配置文件/etc/docker/daemon.json, 添加如下內容:

"exec-opts": ["native.cgroupdriver=systemd"]

重啟docker

systemctl daemon-reload
systemctl restart docker

二、編輯/usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd
systemctl daemon-reload
systemctl restart docker

設置完成后通過docker info命令可以看到Cgroup Driver為systemd

docker info |grep Cgroup

Cgroup Driver: systemd
Cgroup Version: 1

3、 storage-provisioner無法拉取鏡像:ImagePullBackOff

image.png

原因分析:
使用如下命令查看storage-provisioner拉取了哪個鏡像:

kubectl get pod storage-provisioner  -n kube-system -o yaml |grep image
# 輸出如下內容
image: registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-minikube/storage-provisioner:v4

使用如下命令登錄minikube節點,嘗試手動拉取鏡像:

# 登錄minikube節點
$ minikube ssh
# 手動拉取鏡像 任然無法拉取
$ docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-minikube/storage-provisioner:v4
Error response from daemon: pull access denied for registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-minikube/storage-provisioner, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

查看minikube中拉取的鏡像,發現問題的原因:storage-provisioner已經正常拉取下來了,原來的鏡像標簽中多了一級路徑k8s-minikube。

image.png

解決方式
使用如下命令修改storage-provisioner的部署文件
將原來的registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-minikube/storage-provisioner:v4
修改為:registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v4

kubectl edit pod storage-provisioner  -n kube-system
image.png

4、安裝并配置kubectl

查看kubernetes官網地址:https://kubernetes.io/zh/docs/tasks/tools/install-kubectl/
1、使用下面命令下載最新的發行版本:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

要下載特定版本,將命令中的 $(curl -L -s https://dl.k8s.io/release/stable.txt) 部分替換為指定版本。
例如,要下載 Linux 上的版本 v1.20.0,輸入:

curl -LO https://dl.k8s.io/release/v1.20.0/bin/linux/amd64/kubectl

2、安裝kubeclt

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

3、查看kubectl的版本

kubectl version --client

5、啟動minikube helm3插件

helm3 新特性

1. 去除Tiller 和 helm serve
現在helm命令通過kubeconfig 直接操作k8s集群,類似于kubectl
Helm使用與kubectl上下文相同的訪問權限,也無需再使用helm init來初始化Helm
這點在helm部署和使用上方便了很多,也減少了服務發布可能遇到的因為tiller引起的異常
而且移除了 helm serve 的功能,不再本地提供chart倉庫能力

2. 預定義倉庫被移除,添加helm hub
helm search 現在區分 repo 和hub
repo 是自己手動添加的源
hub 是公共的helm倉庫
手動添加阿里云的charts倉庫

helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

3. Values 支持 JSON Schema 校驗器
當我們運行 helm install 、 helm upgrade 、 helm lint 、 helm template 命令時,JSON Schema 的校驗會自動運行,如果失敗就會立即報錯,這樣等于是先都校驗了一遍,再創建。

4. helm install 時需要指定 Release Name,開啟自動生成需要 --generate-name 參數

安裝helm

下載helm客戶端https://github.com/helm/helm/releases
helm安裝官方文檔https://helm.sh/docs/intro/install/
選擇對應系統的helm客戶端下載,我這里使用下面的命令下載:

# 下載helm
wget https://get.helm.sh/helm-v3.5.3-linux-amd64.tar.gz 
# 解壓
tar -zxvf helm-v3.5.3-linux-amd64.tar.gz
# 在解壓目錄下找到helm二進制文件,將helm移動到指定目錄
mv linux-amd64/helm /usr/local/bin/helm
# 驗證helm
helm version
version.BuildInfo{Version:"v3.5.3", GitCommit:"041ce5a2c17a58be0fcd5f5e16fb3e7e95fea622", GitTreeState:"dirty", GoVersion:"go1.15.8"}

helm使用簡單介紹
helm是k8s的包管理工具
helm的常用命令:

  • helm search: search for charts
  • helm pull: download a chart to your local directory to view
  • helm install: upload the chart to Kubernetes
  • helm list: list releases of charts
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容