一、先安装docker
二、安装kubectl
1.在根目录下,下载kubectl
#进入根目录
cd ~
下载地址可参考官方介绍
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
2.使文件可执行
#下载完成会在根目录下多一个kubectl文件,执行下列命令让文件可执行
chmod +x ./kubectl
3.移动到系统目录
`mv ./kubectl /usr/local/bin/kubectl`
4.查看kubectl的版本
kubectl version
三、安装minikube
1.下载minikube
# 在根目录~下全复制如下命令执行,执行完会在/usr/local/bin/下生成一个minikube文件
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
通过minikube version命令可以查看 minikube 的版本。
2.启动minikube
直接执行 minikube start 命令即可进行部署,但是国内会被墙,可能拉取不了镜像,需要设置代理。
# image-mirror-country指定国内源
minikube start --image-mirror-country=cn
问题1:
执行如下命令
minikube start --image-mirror-country=cn --driver=none
问题2:
需要安装 conntrack
yum install conntrack
再次执行
minikube start --image-mirror-country=cn --driver=none
问题3:
从K8S 1.24开始,dockershim已经从kubelet中移除,但因为历史问题Docker却不支持K8S主推的CRI(容器运行时接口)标准,所以Docker不能再作为K8S的容器运行时了,即从K8S 1.24开始不再使用Docker了。但是如果想继续使用Docker的话,可以在kubelet和Docker之间加上一个中间层cri-docker。
需要安装cri-dockerd。
项目地址:https://github.com/Mirantis/cri-dockerd
#解压
tar -xvf cri-dockerd-0.2.3.amd64.tgz
#拷贝到目录
cp cri-dockerd/cri-dockerd /usr/local/bin/
#授权
chmod +x /usr/local/bin/cri-dockerd
#确认已安装版本
cri-dockerd --version
配置启动文件
- 创建cri-docker.service配置文件
vi /lib/systemd/system/cri-docker.service
内容:
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket
[Service]
Type=notify
ExecStart=/usr/local/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
- 创建cri-docker.socket配置文件
vi /lib/systemd/system/cri-docker.socket
内容:
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service
[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
- 启动cri-docker
systemctl daemon-reload
systemctl start docker.service
systemctl enable cri-docker
systemctl status docker.service
再次执行
minikube start --image-mirror-country=cn --driver=none
问题4
需要安装crictl,我们可以参考官方安装步骤:crictl官网安装步骤
VERSION="v1.25.0"
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz
sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin
rm -f crictl-$VERSION-linux-amd64.tar.gz
再次执行启动minikube
minikube start --image-mirror-country=cn --driver=none
如果还报问题4错误,sudo crictl version找不到命令
cp /usr/local/bin/crictl /usr/bin/crictl
再次执行启动minikube
minikube start --image-mirror-country=cn --driver=none
会下载东西,如果网络不好,会下载失败,重复执行几遍,应该可以下载成功
3.测试minikube
minikube status
获取集群所有节点(机器)
kubectl get nodes
获取集群所有命名空间
kubectl get namespaces
查看集群所有 Pod
kubectl get pods -A
问题:节点status显示NotReady
解决步骤:
1.查看节点详细信息
kubectl describe nodes 节点名
之前显示kubeletNotReady,需要安装kubelet。
2.安装 kubeadm、kubelet 和 kubectl
kubeadm:用来初始化集群的指令。
kubelet:在集群中的每个节点上用来启动 Pod 和容器等。
kubectl:用来与集群通信的命令行工具。
修改镜像源
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
#kubernetes的镜像在国外,速度比较慢,这里切换成国内的镜像源
#baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
#gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF
开始进行安装
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
重启服务
systemctl enable --now kubelet
配置 kubelet 的 cgroup 驱动
vim /etc/sysconfig/kubelet, 添加下面的配置
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"
查看节点状态
kubectl get nodes
四、启动minikube dashboard
minikube dashboard
这里启动的地址只能本机访问,可以理解为minikube虚拟机代理到宿主机上,并没有提供外网访问的途径
# 使用kubectl提供代理,需要另开一个终端执行此命令
kubectl proxy --address='0.0.0.0' --accept-hosts='^*$' --port=8009
执行完毕后即可通过
http://宿主机ip:8009/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
五、管理集群
#暂停k8s不影响部署的应用
minikube pause
#取消暂停
minikube unpause
#停止 Minikube 虚拟机
minikube stop
#删除 Minikube 虚拟机
minikube delete