部署 Dashboard
Dashboard 是官方提供的一个UI,可用于基本管理K8s资源。
# 在master节点执行
#
wget \
https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
vi recommended.yaml
增加 nodePort: 30001 和 type: NodePort
......
spec:
ports:
- port: 443
targetPort: 8443
nodePort: 30001
selector:
k8s-app: kubernetes-dashboard
type: NodePort
......
kubectl apply -f recommended.yaml
kubectl get pods -n kubernetes-dashboard
如果顺利,则可以访问 https://192.168.15.81:30001
界面提示需要输入 token,先不要输入,因为还没创建用户,接下去我们创建用户
K8S有两种用户:User 和 Service Account,User 给人用,Service Account 给进程用,让进程有相关权限,Dashboard 是一个进程,我们就可以创建一个Service Account 给它
# 创建service account并绑定默认cluster-admin管理员集群角色:
# 创建用户
kubectl create serviceaccount dashboard-admin -n kube-system
# 用户授权
kubectl create clusterrolebinding dashboard-admin-binding --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
# kubernetes v1.24.0 更新之后进行创建 ServiceAccount 不会自动生成 Secret 需要对其手动创建
cat<<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
name: dashboard-admin
annotations:
kubernetes.io/service-account.name: "dashboard-admin"
namespace: kube-system
EOF
# 查看token是否正确生成
kubectl describe serviceaccounts dashboard-admin -n kube-system
如果顺利会出现下述输出
...
Tokens: dashboard-admin
...
# 获取用户Token
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
取得token后就可以使用token登录Dashboard了
https://192.168.15.81:30001
安装metrics
安装完之后,可以看到k8s所有组件,但各组件cpu内存使用量没有值,还需要安装metrics组件才行,安装完metric就可以看到各node以及pod的cpu/mem实时使用量了
下面是如何安装metrics
下载Metrics Server 配置文件
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml -O metrics.yaml
修改配置文件,修改以下内容
......
spec:
containers:
- args:
- --cert-dir=/tmp
- --secure-port=10250
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --kubelet-use-node-status-port
- --metric-resolution=15s
- --kubelet-insecure-tls # 增加这行,禁用 TLS 证书验证。生产环境禁用这个选项并配置了正确的 TLS 证书和签名
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.7.1 # 改为从阿里云代理拉取镜像
......
kubectl apply -f ./metrics.yaml
过1-2分钟,然后验证安装
kubectl get apiservice | grep metrics
确保 `v1beta1.metrics.k8s.io` 的状态为 `True`。
如果不是,则运行下面命令排查错误
kubectl get pods -n kube-system | grep metrics-server
kubectl logs metrics-server-75d7968c55-qxlcr -n kube-system
kubectl get events --sort-by='.metadata.creationTimestamp' -n kube-system | tail -n10
如果一切ok,则可以查看节点和 Pod 的 CPU 使用情况
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
node-1 500m 25% 1024Mi 50%
node-2 300m 15% 512Mi 25%
node-3 700m 35% 2048Mi 75%
kubectl top pods --all-namespaces
NAMESPACE NAME CPU(cores) MEMORY(bytes)
default my-app-deployment-7d9f6d89d9-abcde 100m 128Mi
kube-system coredns-64897985d-vfx8s 5m 12Mi
kube-system metrics-server-85f4b44d5c-mr4tj 10m 24Mi
此时再次打开dashborad,就可以看到node和pod的cpu内存使用情况。
配置k8s dns
在 Kubernetes 集群中,CoreDNS 是默认的 DNS 服务器,它负责处理集群内所有的 DNS 请求。
kubectl edit cm coredns -n kube-system (此命令修改coredns 配置)
kubectl describe cm coredns -n kube-system(此命令查看coredns 配置)
出现类似以下结果
apiVersion: v1
data:
Corefile: |
.:53 {
errors
health {
lameduck 5s
}
ready
kubernetes cluster.local in-addr.arpa ip6.arpa {
标签:metalLB,kubectl,--,system,metrics,dashboard,kube
From: https://blog.csdn.net/weilaozongge/article/details/139432233