目录
二、k8s双主架构集群的部署
1.另一台Master同样做初始化配置
2.配置 Master02
3.配置负载均衡器(nginx+keepalived)
4.修改k8s集群配置
三、安装Dashboard前端管理软件
1.Dashboard介绍
2.安装Dashboard
四、创建pod
1.使用kubectl创建pod
2.使用Dashboard创建pod
k8s集群master01:192.168.116.10
k8s集群master02:192.168.116.20(第二部分高可用架构会加入)k8s集群node01:192.168.116.30
k8s集群node02:192.168.116.40etcd集群节点1:192.168.116.10(etcd集群原则上单独部署,此实验为方便部署在节点上)
etcd集群节点2:192.168.116.30
etcd集群节点3:192.168.116.40负载均衡nginx+keepalive01(master):192.168.116.50
负载均衡nginx+keepalive02(backup):192.168.116.60
在master01上操作
#将master所需文件复制给master02
cd /opt/
scp -r etcd/ kubernetes/ master02:/opt/
cd
scp -r .kube/ master02:/root
cd /usr/lib/systemd/system
scp kube-* master02:`pwd`
在master02上操作
#修改apiserver配置文件(其他组件配置文件监听地址为127.0.0.1,所以不需要修改)
cd /opt/kubernetes/cfg/
vim kube-apiserver
#将通告和监听地址改为本机ip
--bind-address=192.168.116.20 \
--secure-port=6443 \
--advertise-address=192.168.116.20 \
然后启动3个组件服务
将k8s命令做软连接,使用kubectl查看etcd集群状态(此时完成了master02与etcd集群的对接)
初始化,并下载nginx和keepalived
systemctl disable --now firewalld.servive
setenforce 0
#准备nginx官方源
cd /etc/yum.repos.d/
vim nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
#下载nginx和keepalived
yum makecache
yum install nginx keepalived.x86_64
修改nginx配置,检查并启动服务
准备keepalive健康检查脚本(记得给执行权限)
修改keepalived配置文件(两个个不一样)
分别启动服务,并查看网卡(vip在主上)
修改node节点组件配置文件
修改master节点组件配置文件
在负载均衡器查看,会发现k8s集群会与nginx负载均衡器建立连接
至此k8s的多主架构集群部署完成
Dashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源 (如 Deployment,Job,DaemonSet 等等)。 例如,你可以对 Deployment 实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创建新的应用。
Dashboard 同时展示了 Kubernetes 集群中的资源状态信息和所有报错信息。
官方使用以下命令配置,但是默认情况使用的是Cluster ip 只能在集群内部使用浏览器访问
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.1/aio/deploy/recommended.yaml
所以我们手动进行配置
首先在node节点上准备dashboard和metrics-scraper的镜像
在master节点准备 recommended.yaml 用于部署Dashboard
#上传 recommended.yaml 文件到 /opt/k8s 目录中
cd /opt/k8s
vim recommended.yaml
#默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部:
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
ports:
- port: 443
targetPort: 8443
nodePort: 30001 #添加
type: NodePort #添加
selector:
k8s-app: kubernetes-dashboard
修改完后执行命令部署
浏览器访问(我们修改配置设置的是使用NodePort的30001端口)
在高级中点击继续即可,会出现以下页面(需要获取token)
在master创建service account并绑定默认cluster-admin管理员集群角色
kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
将获取到的token输入页面即可进入dashboard
kubectl run pod名称 --image=镜像名
kubectl get pods [选项] #查看默认命名空间的pods
-A #查看所有命名空间的pods
-o wide #查看详细信息
注:一开始创建处于 ContainerCreating 状态,之后Running 才是pods启动无误的状态,如果为 ImagePullBackOff 可以尝试添加国内镜像源。