天天看點

Minikube 在 Centos 7 部署 Kubernetes

文章目錄

  • ​​1. 安裝依賴 tools​​
  • ​​2. 安裝 docker​​
  • ​​3. 安裝 minikube​​
  • ​​4. 安裝 kubectl​​
  • ​​5. minikube 建立 kubernetes 叢集​​
  • ​​6. 檢視​​
  • ​​6.1 檢視叢集配置資訊​​
  • ​​6.2 檢視叢集狀态​​
  • ​​6.3 檢視 node​​
  • ​​6.4 檢視 pod​​
  • ​​6.5 檢視叢集資訊​​
  • ​​6.6 檢視叢集ip​​
  • ​​6.7 檢視插件​​
  • ​​7. 常用操作​​
  • ​​7.1 進入叢集節點​​
  • ​​7.2 停止叢集​​
  • ​​7.3 啟動叢集​​
  • ​​7.4 删除叢集​​
  • ​​8. 部署 dashboard​​
  • ​​9. 部署 NGINX Ingress Controller​​

1. 安裝依賴 tools

配置​​linux yum 源​​

yum -y update
yum -y install apt-transport-https ca-certificates curl software-properties-common conntrack      

2. 安裝 docker

你可以根據​​docker官方​​尋找合适的安裝方式

配置docker-ce源

sudo yum install -y yum-utils
 sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo      

檢視docker-ce版本

yum list docker-ce  --showduplicates | sort -r      

安裝

yum -y install docker-ce docker-ce-cli containerd.io      

配置加速器位址

Minikube 在 Centos 7 部署 Kubernetes
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
   "registry-mirrors": ["https://ckdhnbk9.mirror.aliyuncs.com"]
}
EOF

systemctl daemon-reload
systemctl start  docker
systemctl enable  docker      

檢視docker版本

$ docker version
Client: Docker Engine - Community
 Version:           20.10.14
 API version:       1.41
 Go version:        go1.16.15
 Git commit:        a224086
 Built:             Thu Mar 24 01:49:57 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.14
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.15
  Git commit:       87a90dc
  Built:            Thu Mar 24 01:48:24 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.5.11
  GitCommit:        3df54a852345ae127d1fa3092b95168e4a88e2f8
 runc:
  Version:          1.0.3
  GitCommit:        v1.0.3-0-gf46b6ba
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0      

3. 安裝 minikube

你可以根據​​官方安裝​​尋找适合自己的方式。

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo rpm -Uvh minikube-latest.x86_64.rpm      

你可以使用阿裡雲源

curl -Lo minikube "https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/latest/minikube-linux-amd64" && chmod +x minikube && sudo mv minikube /usr/local/bin/      

檢視版本

$ minikube version
minikube version: v1.25.2
commit: 362d5fdc0a3dbee389b3d3f1034e8023e72bd3a7      

4. 安裝 kubectl

在​​kubernetes官方尋找kubectl安裝方式​​​ 尋找國内合适的​​kubernetes yum源​​

yum -y install kubectl      

檢視版本

$ kubectl version --client -o json
{
  "clientVersion": {
    "major": "1",
    "minor": "23",
    "gitVersion": "v1.23.5",
    "gitCommit": "c285e781331a3785a7f436042c65c5641ce8a9e9",
    "gitTreeState": "clean",
    "buildDate": "2022-03-16T15:58:47Z",
    "goVersion": "go1.17.8",
    "compiler": "gc",
    "platform": "linux/amd64"
  }
}      

5. minikube 建立 kubernetes 叢集

沒有參數它會報以下錯誤:

minikube start
* Centos 7.9.2009 上的 minikube v1.25.2
* 自動選擇 docker 驅動。其他選項:none, ssh
* 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.      

正确的方式是:

minikube start --vm-driver=none --image-mirror-country=cn --registry-mirror='https://ckdhnbk9.mirror.aliyuncs.com' --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'      

輸出

* Centos 7.9.2009 上的 minikube v1.25.2
* 根據使用者配置使用 none 驅動程式

X Requested memory allocation (1819MB) is less than the recommended minimum 1900MB. Deployments may fail.


X The requested memory allocation of 1819MiB does not leave room for system overhead (total system memory: 1819MiB). You may face stability issues.
* 建議:Start minikube with less memory allocated: 'minikube start --memory=1819mb'

* 正在使用鏡像存儲庫 registry.cn-hangzhou.aliyuncs.com/google_containers
* Starting control plane node minikube in cluster minikube
* Running on localhost (CPUs=4, Memory=1819MB, Disk=17394MB) ...
* OS release is CentOS Linux 7 (Core)
* 正在 Docker 20.10.14 中準備 Kubernetes v1.23.3…
  - kubelet.housekeeping-interval=5m
    > kubeadm.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
    > kubelet.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
    > kubectl.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
    > kubeadm: 43.12 MiB / 43.12 MiB [---------------] 100.00% 1.23 MiB p/s 35s
    > kubectl: 44.43 MiB / 44.43 MiB [---------------] 100.00% 1.03 MiB p/s 43s
    > kubelet: 118.75 MiB / 118.75 MiB [-------------] 100.00% 2.12 MiB p/s 56s
  - Generating certificates and keys ...
  - Booting up control plane ...
  - Configuring RBAC rules ...
* 開始配置本地主機環境...
* 
! The 'none' driver is designed for experts who need to integrate with an existing VM
* Most users should use the newer 'docker' driver instead, which does not require root!
* For more information, see: https://minikube.sigs.k8s.io/docs/reference/drivers/none/
* 
! kubectl 和 minikube 配置将存儲在 /root 中
! 如需以您自己的使用者身份使用 kubectl 或 minikube 指令,您可能需要重新定位該指令。例如,如需覆寫您的自定義設定,請運作:
* 
  - sudo mv /root/.kube /root/.minikube $HOME
  - sudo chown -R $USER $HOME/.kube $HOME/.minikube
* 
* 此操作還可通過設定環境變量 CHANGE_MINIKUBE_NONE_USER=true 自動完成
* Verifying Kubernetes components...
  - Using image registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v5
* Enabled addons: default-storageclass, storage-provisioner
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default      

6. 檢視

6.1 檢視叢集配置資訊

$ kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority: /root/.minikube/ca.crt
    extensions:
    - extension:
        last-update: Mon, 28 Mar 2022 17:20:36 CST
        provider: minikube.sigs.k8s.io
        version: v1.25.2
      name: cluster_info
    server: https://192.168.211.51:8443
  name: minikube
contexts:
- context:
    cluster: minikube
    extensions:
    - extension:
        last-update: Mon, 28 Mar 2022 17:20:36 CST
        provider: minikube.sigs.k8s.io
        version: v1.25.2
      name: context_info
    namespace: default
    user: minikube
  name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
  user:
    client-certificate: /root/.minikube/profiles/minikube/client.crt
    client-key: /root/.minikube/profiles/minikube/client.key      

6.2 檢視叢集狀态

$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured      

6.3 檢視 node

$ kubectl get nodes
NAME                    STATUS   ROLES                  AGE     VERSION
localhost.localdomain   Ready    control-plane,master   5m24s   v1.23.3      

6.4 檢視 pod

$ kubectl get pods -A
NAMESPACE     NAME                                            READY   STATUS    RESTARTS   AGE
kube-system   coredns-65c54cc984-2cf5f                        1/1     Running   0          5m48s
kube-system   etcd-localhost.localdomain                      1/1     Running   0          6m2s
kube-system   kube-apiserver-localhost.localdomain            1/1     Running   0          6m
kube-system   kube-controller-manager-localhost.localdomain   1/1     Running   0          6m
kube-system   kube-proxy-khn4n                                1/1     Running   0          5m49s
kube-system   kube-scheduler-localhost.localdomain            1/1     Running   0          6m
kube-system   storage-provisioner                             1/1     Running   0          5m58s      

6.5 檢視叢集資訊

$ kubectl cluster-info
Kubernetes control plane is running at https://192.168.211.51:8443
CoreDNS is running at https://192.168.211.51:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.      

6.6 檢視叢集ip

$ minikube ip
192.168.211.51      

6.7 檢視插件

$ minikube addons list
|-----------------------------|----------|--------------|--------------------------------|
|         ADDON NAME          | PROFILE  |    STATUS    |           MAINTAINER           |
|-----------------------------|----------|--------------|--------------------------------|
| ambassador                  | minikube | disabled     | third-party (ambassador)       |
| auto-pause                  | minikube | disabled     | google                         |
| csi-hostpath-driver         | minikube | disabled     | kubernetes                     |
| dashboard                   | minikube | disabled     | kubernetes                     |
| default-storageclass        | minikube | enabled ✅   | kubernetes                     |
| efk                         | minikube | disabled     | third-party (elastic)          |
| freshpod                    | minikube | disabled     | google                         |
| gcp-auth                    | minikube | disabled     | google                         |
| gvisor                      | minikube | disabled     | google                         |
| helm-tiller                 | minikube | disabled     | third-party (helm)             |
| ingress                     | minikube | disabled     | unknown (third-party)          |
| ingress-dns                 | minikube | disabled     | google                         |
| istio                       | minikube | disabled     | third-party (istio)            |
| istio-provisioner           | minikube | disabled     | third-party (istio)            |
| kong                        | minikube | disabled     | third-party (Kong HQ)          |
| kubevirt                    | minikube | disabled     | third-party (kubevirt)         |
| logviewer                   | minikube | disabled     | unknown (third-party)          |
| metallb                     | minikube | disabled     | third-party (metallb)          |
| metrics-server              | minikube | disabled     | kubernetes                     |
| nvidia-driver-installer     | minikube | disabled     | google                         |
| nvidia-gpu-device-plugin    | minikube | disabled     | third-party (nvidia)           |
| olm                         | minikube | disabled     | third-party (operator          |
|                             |          |              | framework)                     |
| pod-security-policy         | minikube | disabled     | unknown (third-party)          |
| portainer                   | minikube | disabled     | portainer.io                   |
| registry                    | minikube | disabled     | google                         |
| registry-aliases            | minikube | disabled     | unknown (third-party)          |
| registry-creds              | minikube | disabled     | third-party (upmc enterprises) |
| storage-provisioner         | minikube | enabled ✅   | google                         |
| storage-provisioner-gluster | minikube | disabled     | unknown (third-party)          |
| volumesnapshots             | minikube | disabled     | kubernetes                     |
|-----------------------------|----------|--------------|--------------------------------|      

7. 常用操作

7.1 進入叢集節點

minikube ssh      

7.2 停止叢集

minikube stop      

7.3 啟動叢集

minikube start      

7.4 删除叢集

minikube delete      

8. 部署 dashboard

​​Dashboard​​ 是一個基于 Web 的 Kubernetes 使用者界面。您可以使用它來:

  • 将容器化應用程式部署到 Kubernetes 叢集
  • 對您的容器化應用程式進行故障排除
  • 管理叢集資源
  • 概覽在您的叢集上運作的應用程式
  • 建立或修改單個 Kubernetes 資源(例如 Deployment、Jobs、DaemonSets 等)

例如,您可以使用部署向導擴充部署、啟動滾動更新、重新啟動 pod 或部署新應用程式。

minikube dashboard      

這将啟用儀表闆插件,并在預設 Web 浏覽器中打開代理。

值得注意的是,Web 浏覽器通常不能以 root 使用者身份正常運作,是以如果您處于以 root 使用者身份運作的環境中,請參閱僅 URL選項。

要停止代理(使儀表闆保持運作),請中止已啟動的程序 ( ​

​Ctrl+C​

​)。

#僅擷取儀表闆 URL
minikube dashboard --url      

9. 部署 NGINX Ingress Controller

$ minikube addons enable ingress
  - Using image registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.1.1
  - Using image registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1
  - Using image registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1
* Verifying ingress addon...
* 啟動 'ingress' 插件


$ kubectl get pods -n ingress-nginx
NAME                                        READY   STATUS      RESTARTS   AGE
ingress-nginx-admission-create-6hf47        0/1     Completed   0          91s
ingress-nginx-admission-patch-5dpqz         0/1     Completed   0          91s
ingress-nginx-controller-6cfb67d797-gqj98   1/1     Running     0          91s