K8s 部署
# 前言
官方中文文档:Kubernetes 文档 | Kubernetes (opens new window)
系统配置:CentOS 7.9
# Docker
# 安装
官方文档:Install Docker Engine on CentOS | Docker Docs (opens new window)
执行如下安装脚本即可
#!/bin/bash
set -e
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl start docker
sudo systemctl enable docker
sudo docker run hello-world
2
3
4
5
6
7
8
9
# 配置加速
阿里云镜像加速地址:容器镜像服务_镜像构建_镜像授权_镜像托管-阿里云 (aliyun.com) (opens new window)
然后复制上面地址,执行如下命令
# 更换镜像为阿里云
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
systemctl restart docker
docker info
2
3
4
5
6
7
8
# kubeadm、kubelet 和 kubectl
kubeadm:用来初始化集群的指令。
kubelet:在集群中的每个节点上用来启动 Pod 和容器等。
kubectl:用来与集群通信的命令行工具。
使用如下命令安装
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
systemctl enable kubelet
2
3
4
5
6
7
8
9
10
11
# 单机部署
# Minikube
Minikube 是一种轻量级的 Kubernetes 实现,可在本地计算机上创建 VM 并部署仅包含一个节点的简单集群。 Minikube 可用于 Linux、macOS 和 Windows 系统。 Minikube CLI 提供了用于引导集群工作的多种操作,包括启动、停止、查看状态和删除
# 环境要求
- 至少 2 个 CPU
- 至少 2 GB 可用内存
- 至少 20 GB 可用硬盘存储
- 已连接互联网
- 至少安装了下列容器或虚拟机管理软件中的一种,如:Docker、QEMU、Podman、VirtualBox 或 VMware Workstation
# 安装
官方文档:minikube start | minikube (k8s.io) (opens new window)
下载链接:latest release (storage.googleapis.com) (opens new window)
执行 minikube-installer.exe
后,然后添加minikube.exe
到 PATH 中(一般是安装脚本中默认添加)
# 启动
启动集群(需要具有管理员权限)
该命令将会下载镜像并创建一个单节点 k 8 s 集群
minikube start
之后启动集群成功可以使用 minikube ssh
进入集群,并使用 docker ps
查看运行容器实例
然后我们退出集群之后,执行 minikube dashboard
即可查看仪表盘
# 问题
# 镜像拉取过慢
如果镜像拉取过慢,可以使用如下命令
注:下面这种做法实测失效,可能是因为 minikube 版本过新(旧版本是可行的),国内阿里云镜像未同步更新,导致一直使用失败,所以成功做法还是使用
minikube start
,使用国外谷歌镜像仓库,不过可以开全局代理加速访问
minikube start --image-mirror-country='cn' --driver='docker'
这里国内还是国外唯一区别就是 --image-mirror-country='cn'
参数,如果之前配置默认为国内可以省略,国内默认镜像为 registry.cn-hangzhou.aliyuncs.com/google_containers
--driver='docker'
是把所有的镜像 pull 到 minikube 内部的 docker,而 --driver='none'
而 none 则直接使用宿主机 docker。导致的结果:docker 驱动需要用 minikube cache add registry.cn-hangzhou.aliyuncs.com/google_containers/k8s-minikube/storage-provisioner:v5
结果发现启动失败,找不到这个基础镜像
那么就指定这个为基础镜像,然后启动即可,然后依旧失败
minikube start --image-mirror-country='cn' --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers' --driver='docker' --base-image='registry.cn-hangzhou.aliyuncs.com/google_containers/kicbase:v0.0.42'
# GUEST_STATUS 问题
使用 minikube ssh
进入集群爆出 Exiting due to GUEST_STATUS: state: unknown state "minikube": docker container inspect minikube --format=: exit status 1
如果是 linux 用户解决方案如下
sudo chmod 666 /var/run/docker.sock
sudo usermod -aG docker ${USER}”
2
但是很明显 windows 用户并不行
# kubectl
kubectl 是 Kubernetes 的命令行工具(CLI),是 Kubernetes 用户和管理员必备的管理工具,kubectl 提供了大量的子命令,方便管理 Kubernetes 集群中的各种功能
# 安装
官方文档:在 Windows 上安装 kubectl | Kubernetes (opens new window)
注:kubectl 版本和集群版本之间的差异必须在一个小版本号内。例如:v 1.24 版本的客户端能与 v 1.23、 v 1.24 和 v 1.25 版本的控制面通信
kubectl 1.28.4 下载地址:kubectl 1.28.4 (k8s.io) (opens new window)
将 kubectl
二进制文件夹追加或插入到你的 PATH
环境变量中,测试一下,确保此 kubectl
的版本和期望版本一致
注:某些版本 Docker Desktop 会将其自带版本的
kubectl
添加到PATH
,可能需要把此PATH
条目置于 Docker Desktop 安装的条目之前,或者直接删掉 Docker Desktop 的kubectl
kubectl version --client
# 配置
为了让 kubectl 能发现并访问 Kubernetes 集群,你需要一个 kubeconfig 文件,该文件在 kube-up. sh 创建集群时,或成功部署一个 Minikube 集群时,均会自动生成。通常,kubectl 的配置信息存放于文件 ~/. kube/config 中
kubectl 默认会从$HOME/. kube 目录下查找文件名为 config 的文件,也能通过设置环境变量 KUBECONFIG 或者通过设置去指定其它 kubeconfig 文件,kubeconfig 就是为访问集群所作的配置。我们也可以把线上 kubernetes 集群的配置信息放入 config 文件中去,这样我们就可以用 kubectl 直接访问 kubernetes 集群
# 进入当前用户目录
cd
# 创建目录 .kube
mkdir .kube
# 切换到新创建的目录 .kube
cd .kube
2
3
4
5
6
7
8
# 问题
如果出现 Unable to load cached images
问题,可能是没有配置国内阿里云镜像,或是在配置镜像仓库之前执行 minikube start
需要先清除缓存,然后再配置镜像,最后再启动
如果是使用的是 Docker Desktop 的话,直接上面图形化配置镜像即可,然后执行如下
# 必须清除缓存
minikube delete
minikube start
2
3
如果是命令行可以参考如下
minikube delete # 必需先清除缓存后再继续
minikube start --image-mirror-country='cn' --driver docker
2
参考官方链接:在 Windows 上安装 kubectl | Kubernetes (opens new window)
# 补充
# 镜像缓存
# Docker
单独清除镜像命令 docker rm i
,但是该命令无法删除docker build
的缓存镜像,即 Build Cache
我们可以使用 docker system df
查看缓存情况,然后执行如下命令清除所有未使用的镜像(包括 Build Cache)
docker system prune -a --force
# Minikube
使用 minikube 时间比较长,就会发现~/.minikube
占用空间很大,这其中占用空间比较大的就是镜像缓存,位置在 ~/.minikube/cache/images
查看本地镜像缓存
minikube cache list
删除指定缓存
minikube cache delete <image name>
# 彻底删除
如何彻底删除 minikube 环境
# 停止运行
minikube stop
# 执行卸载
minikube delete
rm -rf ~/.minikube
rm /usr/local/bin/minikube /usr/local/bin/kubectl
2
3
4
5
6