kubernetes学习(一)

178 阅读3分钟

1.MiniKube基本使用

我使用的是MiniKube进行学习k8s的第一步

首先看一下Minikube的特点

  • 支持最新的 Kubernetes 版本(+6 个以前的次要版本)
  • 跨平台(Linux,macOS,Windows)
  • 部署为 VM、容器或裸机上
  • 多个容器运行时(CRI-O、containerd、docker)
  • 直接 API 端点,用于快速加载和构建映像
  • 高级功能,如负载平衡器、文件系统挂载、功能门和网络策略
  • 用于易于安装的 Kubernetes 应用程序的插件
  • 支持常见的 CI 环境

在单机下,使用minikube是可以帮助学习k8s的人群作为一个入门。

安装minikube需要有以下条件

1.1 安装docker

# 1.移除旧版本
sudo yum remove docker*
​
# 2.设置docker yum源
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
​
# 3.docker版本列表
yum list docker-ce --showduplicates | sort -r
# 4.下载docker 可以根据上面的命令进行版本替换
yum install -y docker-ce-20.10.20  docker-ce-cli-20.10.20 containerd.io
​
# 5.设置开机自动启动
systemctl start docker
systemctl enable docker
​
# 6.配置加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["可以去阿里云镜像服务进行配置"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

1.2安装kubectl

# 1.下载kubectl
curl -LO "https://dl.k8s.io/release/v1.23.8/bin/linux/amd64/kubectl"

# 2.安装kubectl
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

# 3.验证kubectl安装是否成功
kubectl version -o=yaml

# 输出 可以看到go版本和git版本等信息
clientVersion:
  buildDate: "2023-02-22T13:39:03Z"
  compiler: gc
  gitCommit: fc04e732bb3e7198d2fa44efa5457c7c6f8c0f5b
  gitTreeState: clean
  gitVersion: v1.26.2
  goVersion: go1.19.6
  major: "1"
  minor: "26"
  platform: linux/amd64
kustomizeVersion: v4.5.7

1.3 安装minikube

# 1.安装minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
​
# 2.查看minikube版本
sudo minikube version
# 输出
minikube version: v1.29.0
commit: ddac20b4b34a9c8c857fc602203b6ba2679794d3
​
# 3.启动minikube 需要耐心等待一段时间
# --kubernetes-version 指定k8s版本 这里不要用新版!!!新版太多坑了,我被坑麻了
# --image-repository 镜像源
# --image-mirror-country 使用国内源
# --driver=docker 使用docker
minikube start \
--kubernetes-version=v1.23.8 \
--image-mirror-country=cn \
--image-repository="registry.cn-hangzhou.aliyuncs.com/google_containers" \
--force \
--driver=docker
​
# 4.查看minikube状态
sudo minikube status
# 输出
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
​
# 5.访问minikube的dashboard 直接访问不了的 是需要加一层代理(云服务器情况下)
minikube dashboard
​
# 6.kubectl proxy代理
kubectl proxy --port=9527 --address='10.0.12.8' --accept-hosts='^.*' &
​
# 浏览器输入
http://ip:port/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/statefulset?namespace=default

1.4 Minikube常用集群命令

暂停 Kubernetes 而不影响已部署的应用程序:

sudo minikube pause

取消暂停暂停的实例:

sudo minikube unpause

停止集群:

sudo minikube stop

重新启动集群

sudo minikube start

更改默认内存限制(需要重新启动):

minikube config set memory 9001

浏览易于安装的 Kubernetes 服务插件目录:

sudo minikube addons list
​
#输出 可以看出有很多关于k8s的插件可以进行下载
|-----------------------------|----------|--------------|--------------------------------|
|         ADDON NAME          | PROFILE  |    STATUS    |           MAINTAINER           |
|-----------------------------|----------|--------------|--------------------------------|
| ambassador                  | minikube | disabled     | 3rd party (Ambassador)         |
| auto-pause                  | minikube | disabled     | Google                         |
| cloud-spanner               | minikube | disabled     | Google                         |
| csi-hostpath-driver         | minikube | disabled     | Kubernetes                     |
| dashboard                   | minikube | enabled ✅   | Kubernetes                     |
| default-storageclass        | minikube | enabled ✅   | Kubernetes                     |
| efk                         | minikube | disabled     | 3rd party (Elastic)            |
| freshpod                    | minikube | disabled     | Google                         |
| gcp-auth                    | minikube | disabled     | Google                         |
| gvisor                      | minikube | disabled     | Google                         |
| headlamp                    | minikube | disabled     | 3rd party (kinvolk.io)         |
| helm-tiller                 | minikube | disabled     | 3rd party (Helm)               |
| inaccel                     | minikube | disabled     | 3rd party (InAccel             |
|                             |          |              | [info@inaccel.com])            |
| ingress                     | minikube | disabled     | Kubernetes                     |
| ingress-dns                 | minikube | disabled     | Google                         |
| istio                       | minikube | disabled     | 3rd party (Istio)              |
| istio-provisioner           | minikube | disabled     | 3rd party (Istio)              |
| kong                        | minikube | disabled     | 3rd party (Kong HQ)            |
| kubevirt                    | minikube | disabled     | 3rd party (KubeVirt)           |
| logviewer                   | minikube | disabled     | 3rd party (unknown)            |
| metallb                     | minikube | disabled     | 3rd party (MetalLB)            |
| metrics-server              | minikube | disabled     | Kubernetes                     |
| nvidia-driver-installer     | minikube | disabled     | Google                         |
| nvidia-gpu-device-plugin    | minikube | disabled     | 3rd party (Nvidia)             |
| olm                         | minikube | disabled     | 3rd party (Operator Framework) |
| pod-security-policy         | minikube | disabled     | 3rd party (unknown)            |
| portainer                   | minikube | disabled     | 3rd party (Portainer.io)       |
| registry                    | minikube | disabled     | Google                         |
| registry-aliases            | minikube | disabled     | 3rd party (unknown)            |
| registry-creds              | minikube | disabled     | 3rd party (UPMC Enterprises)   |
| storage-provisioner         | minikube | enabled ✅   | Google                         |
| storage-provisioner-gluster | minikube | disabled     | 3rd party (Gluster)            |
| volumesnapshots             | minikube | disabled     | Kubernetes                     |
|-----------------------------|----------|--------------|--------------------------------|

创建运行旧 Kubernetes 版本的第二个集群:

minikube start -p aged --kubernetes-version=v1.16.1

删除所有minikube集群:

minikube delete --all