由于我的笔记本使用vmware安装虚拟机老是有问题,本次我使用的是Oracle VM VirtualBox虚拟机。下载地址:https://www.virtualbox.org/wiki/Downloads
双击下载的.exe文件即可,建议不要安装在C盘,原因大家都懂的。
通过“里巴巴开源镜像站”https://developer.aliyun.com/mirror/进行下载,我本次下载的是Centos 7.9
创建虚拟机的过程此次省略,不懂的可以去百度就可以了。
我设置的虚拟机网络环境为“桥接模式”
host配置如下图所示,IP地址使用自己的IP地址
192.168.1.7 k8s-master
192.168.1.8 k8s-node01
192.168.1.9 k8s-node02
执行一下命令完成操作
systemctl stop firewalld
systemctl disable firewalld
执行一下命令进行配置
cat > /etc/sysctl.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
参考我的另一篇博文:CentOS 7.8 Docker安装、卸载与Docker-Compose的安装
执行一下命令进行配置
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
所有虚拟机执行以下命令进行安装kubelet、kubeadm和kubectl。
yum -y install kubelet-1.20.0 kubeadm-1.1.20.0 kubectl-1.20.0
systemctl enable kubelet
使用以下命令进行matser节点初始化
kubeadm init --apiserver-advertise-address=192.168.1.7 --apiserver-bind-port=6443 --pod-network-cidr=192.168.1.0/16 --service-cidr=10.96.0.0/12 --kubernetes-version=1.20.0 --image-repository registry.aliyuncs.com/google_containers
matser节点初始化成功之后,安装日志会输出接下来操作的提示,执行如下命令创建文件夹、复制文件并给予权限
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
执行matser节点初始化安装成功后,安装日志会输出安装node节点的命令,复制命令,在其他两个node节点中执行。
kubeadm join 192.168.1.7:6443 --token ysjwr1.ii05kwoyv823gdqe --discovery-token-ca-cert-hash sha256:7c6240a7b293068427e031f5d072e4b4c3ab1048fa947a52b8f882b10cca0914
至此,如果顺利的话,kubernetes的安装就完成了,可以使用一下命令检查是否安装成功
kubectl get nodes
kubectl get pods -A
执行以下命令安装kubernetes-dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
执行以下命令
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
type: ClusterIP 改为 type: NodePort
使用以下命令进行查询。
kubectl get svc -A |grep kubernetes-dashboard
访问: https://集群任意IP:端口 例如:https://192.168.1.7:31820/
执行以下命令创建访问账号。
vi dash.yaml
# 内容如下:
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
1. kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
然后执行以下命令
kubectl apply -f dash-usr.yaml
执行以下命令生成令牌。
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"
本次搭建kubernetes集群差不多花了一天半了时间。主要在以下几个地方耗费了比较多的时间。
cannot find valid baseurl for repobase/7/x86_64
解决办法:
执行以下命令,
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
将onboot修改为“yes”,如下图所示
2. master节点初始化
在参考 Kubernetes集群部署中执行kubeadm init --config=init-config.yaml时,一直报如下错误
错误一:
Failed to start Docker Application Container Engine.
错误二:
k8s-master node not found.
解决方案:
卸载kubernetes旧版本,使用如下脚本
yum remove kube*
modprobe -r ipip
lsmod
rm -rf /etc/kubernetes/
rm -rf /etc/cni
rm -rf /var/lib/etcd
yum clean all
使用如下命令进行初始化并升级kubernetes的版本
kubeadm init --apiserver-advertise-address=192.168.1.7 --apiserver-bind-port=6443 --pod-network-cidr=192.168.1.0/16 --service-cidr=10.96.0.0/12 --kubernetes-version=1.20.0 --image-repository registry.aliyuncs.com/google_containers
补充:kubernetes-dashboard卸载
master节点初始化重置命令
kubeadm reset
补充:kubernetes-dashboard卸载
删除现有的dashboard服务
kubectl delete service kubernetes-dashboard --namespace=kubernetes-dashboard
kubectl delete service dashboard-metrics-scraper --namespace=kubernetes-dashboard
删除现有的dashboard pod
kubectl delete deployment kubernetes-dashboard --namespace=kubernetes-dashboard
kubectl delete deployment dashboard-metrics-scraper --namespace=kubernetes-dashboard
强制删除现有的dashboard pod命令
kubectl delete pods kubernetes-dashboard-658485d5c7-qnp55 -n kubernetes-dashboard --grace-period=0 --force