准备两台服务器K8Smaster和K8Sminion
分别在两台服务器上执行以下代码
#添加hosts解析;
cat >/etc/hosts<<EOF
127.0.0.1 localhost localhost.localdomain
192.168.45.133 master1
192.168.45.135 node2
EOF
#临时关闭selinux和防火墙;
sed -i '/SELINUX/s/enforcing/disabled/g' /etc/sysconfig/selinux
setenforce 0
systemctl stop firewalld.service
systemctl disable firewalld.service
#同步节点时间;
yum install ntpdate -y
ntpdate pool.ntp.org
#修改对应节点主机名;
hostname `cat /etc/hosts|grep $(ifconfig|grep broadcast|awk '{print $2}')|awk '{print $2}'`;su
#关闭swapoff;
swapoff -a
执行完成后,主节点名称改为master1,monion节点名称变为node2
分别在两台服务器master1、node2节点进行如下配置:
cat > /etc/modules-load.d/ipvs.conf <<EOF
# Load IPVS at boot
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4
EOF
systemctl enable --now systemd-modules-load.service
#确认内核模块加载成功
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
#安装ipset、ipvsadm
yum install -y ipset ipvsadm
#配置内核参数;
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
在node1、node2节点进行如下配置:
# 安装依赖软件包
yum install -y device-mapper-persistent-data lvm2
yum install -y docker
#修改docker配置文件
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"registry-mirrors": ["https://uyah70su.mirror.aliyuncs.com"]
}
EOF
# 注意,由于国内拉取镜像较慢,配置文件最后增加了registry-mirrors
mkdir -p /etc/systemd/system/docker.service.d
# 重启docker服务
systemctl daemon-reload
systemctl enable docker.service
systemctl start docker.service
ps -ef|grep -aiE docker
看到进程就说明配置成功
在两台服务器Kubernetes上添加部署源
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
EOF
在两台你服务器上执行以下配置
#安装Kubeadm;
yum install -y kubeadm-1.20.4 kubelet-1.20.4 kubectl-1.20.4
#启动kubelet服务
systemctl enable kubelet.service
systemctl start kubelet.service
systemctl start docker.service
执行完检查是否安装完毕
在master1进行如下配置,执行kubeadm init初始化安装Master相关软件
kubeadm init --control-plane-endpoint=192.168.45.133:6443 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.20.4 --service-cidr=10.10.0.0/16 --pod-network-cidr=10.244.0.0/16 --upload-certs
看到这条语句说明初始化成功
在master1执行以下配置
在node执行以下命令,添加节点
在master上执行以下命令
删除节点命令如下
重置kube,重新执行添加节点命令
因为网络没有连通,所以显示notready
在主节点上需要进行网络节点的配置,下载calico.yaml文件,下载网络插件wget https://docs.projectcalico.org/v3.10/manifests/calico.yaml
上传四个镜像文件
将主键加载到容器列表
将calico.yaml里面镜像修改为自己私有仓库的地址、修改镜像下载策略为使用本地;
在node上同时上传四个镜像文件,并加载到docker容器中
在主节点加calico.yaml配置文件
之后发现网络连通状态为ready
查看Flanneld网络组建是否部署成功;
部署Dashboard所有指令在master上执行即可,下载Dashboard配置文件;
备份下载的recommended.yaml文件,修改文件recommended.yaml的39行内容,#因为默认情况下,service的类型是cluster IP,需更改为NodePort的方式,便于访问,也可映射到指定的端口。
修改文件recommended.yaml的195行内容,#因为默认情况下Dashboard为英文显示,可以设置为中文。
删除默认image下载策略,添加新的策略使用本地镜像
在所有节点master和node1上导入dashboard镜像;
ls k8s-dashboard.tar k8s-metrics-scraper.tar
for i in $(ls *.tar);do docker load -i $i ;done
执行以下命令
#执行kubectl apply -f recommended.yaml;
kubectl apply -f recommended.yaml
删除recommended.yaml文件的命令,kubectl delete -f recommended.yaml
删除完可重新加载:kubectl apply -f recommended.yaml
查看Dashboard运行状态;
kubectl get pod -n kubernetes-dashboard
kubectl get svc -n kubernetes-dashboard
#创建Dashboard的管理用户;
kubectl create serviceaccount dashboard-admin -n kube-system
#将创建的dashboard用户绑定为管理用户;
kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
此时访问K8S前台页面显示如下
此时在Token中输入token值
成功登录前台页面
此时K8S前台UI界面显示成功,配置成功