Kubernetes集群web界面搭建
Kubernetes集群web界面搭建在前几期的博客中我已经详细的搭建出了Kubernetes多节点集群,但是我们需要通过命令行(kubectl)去管理k8s集群。所以也可以通过web界面得方式去管理k8s集群。所以 本期就来详细的搭建一下k8s的webui界面。部署UI界面1.下载资源UI界面的下载地址https://github.com/kubernetes/kubernetes/t...
·
Kubernetes集群web界面搭建
在前几期的博客中我已经详细的搭建出了Kubernetes多节点集群,但是我们需要通过命令行(kubectl)去管理k8s集群。所以也可以通过web界面得方式去管理k8s集群。所以 本期就来详细的搭建一下k8s的webui界面。
部署UI界面
1.下载资源
UI界面的下载地址
https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dashboard
需要下载以上文件到任意master节点之中。
2.搭建ui界面
创建一个工作目录,并将官方文件拷贝只其中。
mkdir dashboard
接着我们在工作目录中需要创建这六个官方文件。在这之前我们查看一下命令。
kubectl create --help
#这里截取了一段官方的解释
[root@master_01 dashboard]# kubectl create --help
Create a resource from a file or from stdin.
#需要用.json或者.yaml的文件才可以使用。
JSON and YAML formats are accepted.
#需要在命令后面-f指定文件
Examples:
# Create a pod using the data in pod.json.
kubectl create -f ./pod.json
# Create a pod based on the JSON passed into stdin.
cat pod.json | kubectl create -f -
# Edit the data in docker-registry.yaml in JSON then create the resource using the edited data.
kubectl create -f docker-registry.yaml --edit -o json
#一些可用的命令
Available Commands:
clusterrole Create a ClusterRole.
clusterrolebinding 为一个指定的 ClusterRole 创建一个 ClusterRoleBinding
configmap 从本地 file, directory 或者 literal value 创建一个 configmap
deployment 创建一个指定名称的 deployment.
job Create a job with the specified name.
namespace 创建一个指定名称的 namespace
poddisruptionbudget 创建一个指定名称的 pod disruption budget.
priorityclass Create a priorityclass with the specified name.
quota 创建一个指定名称的 quota.
role Create a role with single rule.
rolebinding 为一个指定的 Role 或者 ClusterRole创建一个 RoleBinding
secret 使用指定的 subcommand 创建一个 secret
service 使用指定的 subcommand 创建一个 service.
serviceaccount 创建一个指定名称的 service account
下面我们开始创建:
#角色需要有权限访问api-server
kubectl create -f dashboard-rbac.yaml
#安全功能
kubectl create -f dashboard-secret.yaml
#配置
kubectl create -f dashboard-configmap.yaml
#控制
kubectl create -f dashboard-controller.yaml
#service发布
kubectl create -f dashboard-service.yaml
3.查看创建的pod
这时UI界面已经创建好了,但是我们需要查看一下指定的命名空间。
#这里-n代表指定的命令空间,如不指定则默认使用default命令空间,可以清楚的看到创建在那个node节点之中
[root@master_01 dashboard]# kubectl get pods -n kube-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
kubernetes-dashboard-65f974f565-xshhv 1/1 Running 0 9m34s 172.17.59.3 192.168.80.134 <none>
然而我们并不能看到web界面对外提供的端口,所以我们需要另一个命令。
kubectl get pods service -n kube-system
[root@master_01 dashboard]# kubectl get service -n kube-system -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes-dashboard NodePort 10.0.0.223 <none> 443:30001/TCP 11m k8s-app=kubernetes-dashboard
#当然我们也可以与get pods一起使用
[root@master_01 dashboard]# kubectl get pods,service -n kube-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
pod/kubernetes-dashboard-65f974f565-xshhv 1/1 Running 0 11m 172.17.59.3 192.168.80.134 <none>
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/kubernetes-dashboard NodePort 10.0.0.223 <none> 443:30001/TCP 11m k8s-app=kubernetes-dashboard
我们可以通过访问node节点IP地址:30001进行web的访问。然而如图:
4.创建tls证书
在当前目录下创建dashboard-cert的证书生成脚本。
vim dashboard-cert.sh
cat > dashboard-csr.json <<EOF
{
"CN": "Dashboard",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing"
}
]
}
EOF
#定义变量,k8s集群证书所在路径
K8S_CA=$1
#创建证书
cfssl gencert -ca=$K8S_CA/ca.pem -ca-key=$K8S_CA/ca-key.pem -config=$K8S_CA/ca-config.json -profile=kubernetes dashboard-csr.json | cfssljson -bare dashboard
kubectl delete secret kubernetes-dashboard-certs -n kube-system
kubectl create secret generic kubernetes-dashboard-certs --from-file=./ -n kube-system
#运行此脚本生成秘钥
bash dashboard-cert.sh /root/k8s/k8s-cert/
#dashboard-controller.yaml需要重新编写一部分,48-49行进行插入
vim dashboard-controller.yaml
45 args:
46 # PLATFORM-SPECIFIC ARGS HERE
47 - --auto-generate-certificates
48 - --tls-key-file=dashboard-key.pem
49 - --tls-cert-file=dashboard.pem
#重新部署
kubectl apply -f dashboard-controller.yaml
再次打开站点前需要再次查看pod所在node节点因为会变动。
kubectl get pods,svc -o wide -n kube-system
5.产生令牌
生成令牌
kubectl create -f k8s-admin.yaml
#查找生成的令牌
kubectl get secret -n kube-system
NAME TYPE DATA AGE
dashboard-admin-token-7h6ls kubernetes.io/service-account-token 3 7m18s
default-token-hntt4 kubernetes.io/service-account-token 3 7d22h
kubernetes-dashboard-certs Opaque 11 25m
kubernetes-dashboard-key-holder Opaque 2 57m
kubernetes-dashboard-token-7zp86 kubernetes.io/service-account-token 3 57m
kubectl describe secret dashboard-admin-token-7h6ls -n kube-system
6.登录到UI界面
这样一个web的UI界面就搭建好了。
更多推荐
已为社区贡献5条内容
所有评论(0)