首先要安装一系列Kubernetes软件kubelet kubeadm kubectl,可以在官网看教程,或者阿里云社区镜像里也有说明。
安装好容器docker。
其次要准备好镜像文件。k8s.gcr.io是Kubernetes官网的镜像,但是被Q了。可以从docker仓库或者阿里云下载然后改名。网上也有很多教程。
获取所需的镜像kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.23.4
k8s.gcr.io/kube-controller-manager:v1.23.4
k8s.gcr.io/kube-scheduler:v1.23.4
k8s.gcr.io/kube-proxy:v1.23.4
k8s.gcr.io/pause:3.6
k8s.gcr.io/etcd:3.5.1-0
k8s.gcr.io/coredns/coredns:v1.8.6
docker pull registry.aliyuncs.com/google_containers/etcd:3.4.13-0
docker tag registry.aliyuncs.com/google_containers/etcd:3.4.13-0 k8s.gcr.io/etcd:3.4.13-0
docker pull registry.aliyuncs.com/coredns/coredns:v1.8.0
docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.21.3
docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.21.3
docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.21.3
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.21.3
docker pull registry.aliyuncs.com/google_containers/pause:3.4.1
节点也需要下载好image,所以准备好image之后我是用导出文件再导入,可以快速解决问题。
sudo docker save -o images.tar ...
sudo docker load -i images.tar
可能需要做kubeadm reset一次重置,比如这个节点是做node,现在做master。按照提示的文件手动清理一些文件。
进入正题kubeadm init
使用的完整命令 sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.22.0
--pod-network-cidr=10.244.0.0/16 指定网络,使用网络组件flannel
--kubernetes-version=v1.22.0 指定kubernets镜像版本,否则会下载最新版本,又是卡住。
成功的画面是这样的:
这里面也有玄机。
安装提示,使cluster启动。
部署flannel kubectl apply -f kube-flannel.yml
把yml下载到本地,下载镜像sudo docker pull quay.io/coreos/flannel:v0.14.0
https://github.com/flannel-io/flannel
在flannel部署文件里这么一块,所以初始化需要设置网段
net-conf.json: |
{
"Network": "10.244.0.0/16",
"Backend": {
"Type": "vxlan"
}
}
到这里基本工作完成了,看一下组件都起来了。
安装监控图像工具dashboard
下载镜像 sudo docker pull kubernetesui/dashboard:v2.3.1
sudo docker pull kubernetesui/metrics-scraper:v1.0.7
部署 kubectl apply -f recommended.yaml
https://github.com/kubernetes/dashboard
部署之后service默认是ClusterIP,不能从外部直接访问,可以改成NodePort。
第二个方法是使用NGINX Ingress Controller
先用上一种方法,查看暴露的端口
sudo kubectl get svc -A
访问的路径是https://:41113/
创建用户kubectl apply -f dashboard-adminuser.yaml
获取token
sudo kubectl -n kube-system describe $(sudo kubectl -n kube-system get secret -n kube-system -o name | grep namespace) | grep token
登陆成功
看到满眼绿色,一路成功了。