git clone https://github.com/cookcodeblog/k8s-deploy.git
注意:这个项目是别人的,这里下载后.sh文件的类型为doc,我们需要把文件类型改为liux可执行文件类型
vi 文件名
按esc
:set ff #查看当前文本的模式类型,一般为dos,unix
:set ff=unix #设置为linux可执行文件
这里我已经修改好了放在同目录*
链接:https://pan.baidu.com/s/142TdV8b0a1TucSISagMz7Q
提取码:oaa6
./kubeadm_init_master.sh
*克隆(或复制)相应目录到node机器上,以root用户运行chmod u+x .sh 。
将上面kubeadm init 的输出中的kubeadm join 的内容放到kubeadm_join_node.sh的最后。vi kubeadm_join_node.sh后放到最后加入即可
./kubeadm_join_node.sh
kubeadm token create --print-join-command
**在成功安装上面的证书后,通过浏览器访问:
https://:/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
可以通过运行kubectl cluster-info 来查看master-ip和apiserver-port。
输入上面的token就可以访问Dashboard了。
如果不安装证书直接访问上面的地址会出现“403 system:anonymous”的错误。
网上说的可以通过–anonymous-auth=false 参数设置,亲测在过一段时间后会导致API
Server无法访问,并且设置后仍然会遇到“401 Unauthorized”的错误。
网上说的通过basic_auth_file方法来访问方法需要明文写死用户名密码,也不推荐使用。 正确的做法应该是:浏览器安装用户证书
- Service Account Token。 另外,Kubernetes官方不推荐使用NodePort和kubectl proxy方法访问,因为有安全风险。
(4)如果token忘记了,可以运行下面命令来获取admin-user的Service Account的token:
kubectl -n kube-system describe secret $(kubectl -n kube-system get
secret | grep admin-user | awk ‘{print $1}’)
(5)监控Kubernetes集群 在Kubernetes Dashboard中监控 按照上面的步骤,打开Kubernetes Dashboard,选择Namespaces为“All namespaces”,打开Overview菜单,就可以看到Heapster采集的CPU usage和Memory usage指标。 在Grafana中监控 Kubernetes Dashboard中的Heapster监控比较简单原始,集成Grafana+InfluxDB后可以实现更强大的集群监控。 打开Grafana的Service URL, 比如:https://192.168.37.132:6443/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
可以通过运行kubectl cluster-info 查看Grafana的Service URL。
登录Grafana,缺省的用户名/密码是:admin/admin。
打开内置的Cluster的Grafana Dashboard,可以查看整个Kubernetes集群或指定的Kubernete节点的CPU和内存使用情况。**
打开内置的Pods的Grafana Dashboard,可以查看指定Pod的CPU和内存使用情况。
⦁ 脚本中dashboard.yml文件下载不到这里将重新改脚本下载ymal文件
⦁ 访问出现403,然后安装证书即可
⦁ 访问不到试着:iptables -P FORWARD ACCEPT
⦁ 访问dashboard并没有现实Heapster,图形界面,排错如下:
1、 创建heapster时,查看日志总是下面的错误
kubectl logs heapster-f64999bc-25tvv -n kube-system E0326
06:25:05.009902 1 manager.go:101] Error in scraping containers
from kubelet:192.168.10.77:10255: failed to get all container stats
from Kubelet URL “http://192.168.10.77:10255/stats/container/”: Post
http://192.168.10.77:10255/stats/container/: dial tcp
192.168.10.77:10255: getsockopt: connection refused
2 .kubectl top 命令也获取不到想要的结果
[ryuser@cdh-master metrics]$ kubectl top node error: metrics not
available yet
解决办法:
#在heapster.yaml清单文件中进行如下修改
改后:
- –source=kubernetes:https://kubernetes.default?kubeletHttps=true&kubeletPort=10250&insecure=true
#这条修改在本次并没有加只供参考
原来:
kubectl delete -f heapster.yaml kubectl apply -f heapster.yaml
4.再次查看日志
[ryuser@cdh-master metrics]$ kubectl logs -f heapster-5fcf457b-zq99c
-n kube-system 报错: 403 Forbidden", response: “Forbidden (user=system:serviceaccount:kube-system:heapster, verb=create,
resource=nodes, subresource=stats)”
解决:
查看ClusterRole: system:heapster的权限,发现的确没有针对Resource: nodes/stats 的create权限
[ryuser@cdh-master metrics]$ kubectl describe clusterrole
system:heapster 如下: Name: system:heapster Labels:
kubernetes.io/bootstrapping=rbac-defaults Annotations:
kubectl.kubernetes.io/last-applied-configuration:
{“apiVersion”:“rbac.authorization.k8s.io/v1",“kind”:“ClusterRole”,“metadata”:{“annotations”:{"rbac.authorization.kubernetes.io/autoupdate”…
rbac.authorization.kubernetes.io/autoupdate: true PolicyRule: Resources Non-Resource URLs Resource
Names Verbs --------- -----------------
-------------- ----- events [] [] [get list watch] namespaces [] []
[get list watch] nodes/stats [] []
[get list watch] nodes [] []
[get list watch] pods [] []
[get list watch] deployments.extensions [] []
[get list watch]
修改ClusterRole: system:heapster的权限
生成清单文件
kubectl get clusterrole system:heapster -o yaml > heapster_modify.yaml
修改文件,增加verbs:create权限,增加resources:nodes/stats,下面 # 注释的为增加的
vi heapster_modify.yaml
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"rbac.authorization.k8s.io/v1","kind":"ClusterRole","metadata":{"annotations":{"rbac.authorization.kubernetes.io/autoupdate":"true"},"creationTimestamp":"2019-02-12T10:41:33Z","labels":{"kubernetes.io/bootstrapping":"rbac-defaults"},"name":"system:heapster","resourceVersion":"70","selfLink":"/apis/rbac.authorization.k8s.io/v1/clusterroles/system%3Aheapster","uid":"c3bd303a-2eb2-11e9-9c98-005056be639a"},"rules":[{"apiGroups":[""],"resources":["events","namespaces","nodes","pods"],"verbs":["create","get","list","watch"]},{"apiGroups":["extensions"],"resources":["deployments"],"verbs":["get","list","watch"]}]}
rbac.authorization.kubernetes.io/autoupdate: "true" creationTimestamp: "2019-02-12T10:41:33Z" labels:
kubernetes.io/bootstrapping: rbac-defaults name: system:heapster resourceVersion: "4109335" selfLink: /apis/rbac.authorization.k8s.io/v1/clusterroles/system%3Aheapster uid: c3bd303a-2eb2-11e9-9c98-005056be639a rules:
- apiGroups:
- "" resources:
- events
- namespaces
- nodes
- pods
- nodes/stats # 增加 verbs:
- create #增加
- get
- list
- watch
- apiGroups:
- extensions resources:
- deployments verbs:
- get
- list
- watch
删除heapster重新部署
kubectl delete -f heapster.yaml
kubectl apply -f heapster.yaml
再次查看日志:
[ryuser@cdh-master metrics]$ kubectl logs -f heapster-5fcf457b-vhrxf
-n kube-system
这次没有报错了
kubectl top
[ryuser@cdh-master metrics]$ kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
cdh-master.rongyi.com 158m 3% 2550Mi 69%
cdh-slave.rongyi.com 79m 1% 2386Mi 64%
cdh-slave2.rongyi.com 820m 41% 3136Mi 84%
[ryuser@cdh-master metrics]$ kubectl top pods
NAME CPU(cores) MEMORY(bytes)
curl-66959f6557-bvn9r 0m 0Mi
dep-httpd-5b774f45df-vtv59 0m 21Mi
dep-httpd-5b774f45df-wd5kf 0m 15Mi
myapp-0 0m 1Mi
myapp-1 0m 3Mi
myapp-2 0m 1Mi
myapp-3 0m 1Mi
myapp-4 0m 1Mi
pod-demo 499m 138Mi
(4)另外还有一个问题,就是grafana,dashboard没有图片信息,因为是不显示数据。 经过上面的折腾有数据了。因为他们都依赖于Heapster 、InfluxDB和Grafana,需要先删除再次启动这时看到效果了