Kubernetes-1.18.4二进制高可用安装(下)

简介: Kubernetes-1.18.4二进制高可用安装(下)

12、后续操作

[root@k8s-master01 ~]# vim /etc/keepalived/keepalived.conf   #把两台master主机的keepalived文件的最后几行删除注释
! Configuration File for keepalived
global_defs {
    router_id LVS_DEVEL
}
vrrp_script chk_apiserver {
    script "/etc/keepalived/check_apiserver.sh"     
    interval 2
    weight -5
    fall 3  
    rise 2
}
vrrp_instance VI_1 {
    state MASTER
    interface ens32                  
    mcast_src_ip 192.168.100.202     
    virtual_router_id 51    
    priority 100                     
    advert_int 2
    authentication {
        auth_type PASS
        auth_pass K8SHA_KA_AUTH
    }
    virtual_ipaddress {
        192.168.100.204              
    }
    track_script {               #删除注释
       chk_apiserver
    }
}

二、Metrics、Dashboard部署


Dashboard介绍:


Dashboard用于展示集群中的各类资源,同时也可以通过Dashboard实时查看Pod的日志和在容器中执行一些命令等。web界面

Dashboard 是基于网页的 Kubernetes 用户界面。您可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。您可以使用 Dashboard 获取运行在集群中的应用的概览信息,也可以创建或者修改 Kubernetes 资源(如 Deployment,Job,DaemonSet 等等)。例如,您可以对 Deployment 实现弹性伸缩、发起滚动升级、重启 Pod 或者使用向导创建新的应用。


Metrics介绍:


在新版的Kubernetes中系统资源的采集均使用Metrics-server,可以通过Metrics采集节点和Pod的内存、磁盘、CPU和网络的使用率。


Kubernetes的早期版本依靠Heapster来实现完整的性能数据采集和监控功能,Kubernetes从1.8版本开始,性能数据开始以Metrics API的方式提供标准化接口,并且从1.10版本开始将Heapster替换为Metrics Server。在Kubernetes新的监控体系中,Metrics Server用于提供核心指标(Core Metrics),包括Node、Pod的CPU和内存使用指标。

对其他自定义指标(Custom Metrics)的监控则由Prometheus等组件来完成。


记得上传metrics-server metrics-scraper_v1.0.1到四个节点


(1)先安装Metrics

#在四个节点上都上传metrics-server和metrics-scraper_v1.0.1
[root@k8s-master01 ~]# ll  #在master01节点上上传
总用量 1001808
。。。。。。
-rw-r--r--  1 root root  40124928 6月  29 2020 metrics-scraper_v1.0.1.tar
-rw-r--r--  1 root root  41199616 6月  26 2020 metrics-server.tar.gz
。。。。。。
[root@k8s-master01 ~]# scp metrics-* root@192.168.100.203:/root/  #分别传给另外三台服务器
[root@k8s-master01 ~]# scp metrics-* root@192.168.100.205:/root/
[root@k8s-master01 ~]# scp metrics-* root@192.168.100.206:/root/
#四台节点上都上传镜像
docker load -i metrics-scraper_v1.0.1.tar
docker load -i metrics-server.tar.gz
#在master01上传components.yaml文件
[root@k8s-master01 ~]# ll | grep com
-rw-r--r--  1 root root      3509 6月  26 2020 components.yaml
[root@k8s-master01 ~]# kubectl apply -f components.yaml
[root@k8s-master01 ~]# kubectl -n kube-system get pods -l k8s-app=metrics-server  #这里为running即可
NAME                              READY   STATUS    RESTARTS   AGE
metrics-server-7b97647899-bt7wx   1/1     Running   0          77s
metrics-server-7b97647899-j9m4b   1/1     Running   0          77s
#master01查看资源监控
[root@k8s-master01 ~]# kubectl top nodes    #可以查看集群中所有节点的资源负载
NAME           CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
k8s-master01   155m         7%     1053Mi          27%       
k8s-master02   116m         5%     857Mi           22%       
k8s-node01     15m          1%     362Mi           19%       
k8s-node02     33m          3%     337Mi           17%    
[root@k8s-master01 ~]# kubectl top pods --all-namespaces   #查看所有pod的负载
NAMESPACE              NAME                                    CPU(cores)   MEMORY(bytes)   
kube-system            coredns-66bff467f8-l75z6                4m           13Mi            
kube-system            coredns-66bff467f8-x4crp                4m           13Mi            
kube-system            etcd-k8s-master01                       39m          84Mi            
kube-system            etcd-k8s-master02                       35m          83Mi            
kube-system            kube-apiserver-k8s-master01             51m          363Mi           
kube-system            kube-apiserver-k8s-master02             39m          355Mi           
kube-system            kube-controller-manager-k8s-master01    21m          43Mi            
kube-system            kube-controller-manager-k8s-master02    2m           20Mi            
kube-system            kube-flannel-ds-amd64-6rj6k             1m           11Mi            
kube-system            kube-flannel-ds-amd64-dnv8s             2m           12Mi            
kube-system            kube-flannel-ds-amd64-q8cgj             1m           11Mi            
kube-system            kube-flannel-ds-amd64-wl4d6             6m           15Mi            
kube-system            kube-proxy-66lsh                        1m           16Mi            
kube-system            kube-proxy-lfcfw                        1m           16Mi            
kube-system            kube-proxy-q7q45                        1m           17Mi            
kube-system            kube-proxy-zwwkc                        1m           17Mi            
kube-system            kube-scheduler-k8s-master01             2m           16Mi            
kube-system            kube-scheduler-k8s-master02             5m           20Mi            
kube-system            metrics-server-7b97647899-bt7wx         1m           11Mi            
kube-system            metrics-server-7b97647899-j9m4b         1m           11Mi            
kubernetes-dashboard   kubernetes-dashboard-7b544877d5-h5m9x   1m           16Mi     


(2)安装Dashboard

#下面的操作全部都是master01一台机器进行
#网络下载:(这个可能会失效,无法下载,下面的dashboard.yaml文件和这个recommended.yaml是相同的,只是名称不一样)
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
#下载后修改
[root@k8s-master01 ~]# ll
总用量 922376
-rw-------. 1 root root      1264 1月  12 2021 anaconda-ks.cfg
-rw-r--r--  1 root root  43932160 8月   4 13:21 coredns.tar.gz
-rw-r--r--  1 root root 290010624 8月   4 13:22 etcd.tar.gz
-rw-r--r--  1 root root  55390720 8月   4 13:22 flannel.tar.gz
-rw-r--r--  1 root root     14366 8月   3 16:07 flannel.yml
-rw-r--r--  1 root root 174554624 8月   4 13:22 kube-apiserver.tar.gz
-rw-r--r--  1 root root 163945984 8月   4 13:22 kube-controller-manager.tar.gz
-rw-r--r--  1 root root 119103488 8月   4 13:23 kube-proxy.tar.gz
-rw-r--r--  1 root root  96841216 8月   4 13:23 kube-scheduler.tar.gz
-rw-r--r--  1 root root    692736 8月   4 13:23 pause.tar.gz
-rw-r--r--  1 root root      7591 8月   4 15:23 dashboard.yaml     #上传这个
[root@k8s-master01 ~]# vim dashboard.yaml
。。。。。。
 37   name: kubernetes-dashboard
 38   namespace: kubernetes-dashboard
 39 spec:
 40   type: NodePort            #修改类型
 41   ports:
 42     - port: 443
 43       targetPort: 8443
 44       nodePort: 30001       #修改端口为30001
 45   selector:
 46     k8s-app: kubernetes-dashboard
 47 
 48 ---
#保存退出
[root@k8s-master01 ~]# kubectl create -f dashboard.yaml
[root@k8s-master01 ~]# kubectl get pod -n kubernetes-dashboard  #都是running即可
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-6b4884c9d5-mbfws   1/1     Running   0          46m
kubernetes-dashboard-7b544877d5-h5m9x        1/1     Running   0          46m
[root@k8s-master01 ~]# kubectl get pod,svc -n kubernetes-dashboard
NAME                                             READY   STATUS    RESTARTS   AGE
pod/dashboard-metrics-scraper-6b4884c9d5-mbfws   1/1     Running   0          46m
pod/kubernetes-dashboard-7b544877d5-h5m9x        1/1     Running   0          46m
NAME                                TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)         AGE
service/dashboard-metrics-scraper   ClusterIP   10.1.45.12    <none>        8000/TCP        46m
service/kubernetes-dashboard        NodePort    10.1.58.130   <none>        443:30001/TCP   46m

(3)创建serviceaccount和clusterrolebinding资源YAML文件

#下面的操作全部都是master01一台机器进行,默认Dashboard为最小RBAC权限,添加集群管理员权限以便从Dashboard操作集群资源
[root@k8s-master01 ~]# vim adminuser.yaml 
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard
#保存退出
[root@k8s-master01 ~]#  kubectl create -f adminuser.yaml   #做完这部即可
serviceaccount/admin-user created
clusterrolebinding.rbac.authorization.k8s.io/admin-user created

三、测试


(1)使用浏览器访问Dashboard UI



da8f45fcd6744250901881209c4953f8.png


#在master01上获取Token值
[root@k8s-master01 ~]# kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
Name:         admin-user-token-jgs6t
Namespace:    kubernetes-dashboard
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: admin-user
              kubernetes.io/service-account.uid: 8e0b1c00-814e-4984-900b-be3938e33642
Type:  kubernetes.io/service-account-token
Data
====
ca.crt:     1025 bytes
namespace:  20 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IjJzTEpWNDRoVkVrVHA0RExzUzFrdzk4ZmdSeUVqX0ZLRWNPWm10aUFKWWMifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWpnczZ0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI4ZTBiMWMwMC04MTRlLTQ5ODQtOTAwYi1iZTM5MzhlMzM2NDIiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.oelr-6lROucibVIcC3FNwI5ubm4FcrBT3BFRT2wDCSEmjqvOFvx_5KUrJjcsW6mHy7BGPHsHmeXZDgavOQKc9hB6cQOlI0BUFCP1FciCQw3rBXrOY2CYfapW8nztMaIzsCyZl0C0xO35jI0REyp9Gx7laoPb6-4-bFpWcQIR5WrQAoJ9sPuFbcYLWMLsdYVUdct8PKY4MzrYN-pEqteb-QNm96XfrUV98idyQ1bx2rvR8KyEfSvF8Glg2i627bD-GKkMsZuGRvlWs2cIw5CA0l1mkadiZgASpFK4CQaiPmxXK2W3fYBTmavaBWrmXhFV40cFgsPJccoWiH9V9Y__-Q

c37faf32c0324dd5a49604be47c56828.png

18c9f7955d4a4e6f8d13bfa67c430711.png


d38e709de5a648d78f73c52b722d675f.png


成功进入!!


(2)后续操作


#将Kube-proxy改为ipvs模式,因为在初始化集群的时候注释了ipvs配置,所以需要自行修改一下
[root@k8s-master01 ~]# kubectl edit cm kube-proxy -n kube-system
。。。。。。
     41     kind: KubeProxyConfiguration
     42     metricsBindAddress: ""
     43     mode: "ipvs"    #修改为ipvs
     44     nodePortAddresses: null
     45     oomScoreAdj:
。。。。。。
#保存退出
#更新Kube-Proxy的Pod
[root@k8s-master01 ~]# kubectl patch daemonset kube-proxy -p "{\"spec\":{\"template\":{\"metadata\":{\"annotations\":{\"date\":\"`date +'%s'`\"}}}}}" -n kube-system
#验证Kube-Proxy模式
[root@k8s-master01 ~]# curl 127.0.0.1:10249/proxyMode
ipvs             #这里是ipvs表示成功更换

四、Kubernetes集群初始化步骤

#先移除k8s集群中的所有主机
[root@k8s-master01 ~]# kubectl get nodes
NAME           STATUS   ROLES    AGE   VERSION
k8s-master01   Ready    master   19m   v1.18.4
[root@k8s-master01 ~]# kubectl delete node k8s-master01
node "k8s-master01" deleted
[root@k8s-master01 ~]# kubectl get nodes
No resources found in default namespace.
#所有工作节点删除工作目录,并且重置kubeadm,这里的工作节点是指已经加入集群并且移除集群的节点
[root@k8s-master01 ~]# rm -rf /etc/kubernetes/*
[root@k8s-master01 ~]# kubeadm reset
[reset] WARNING: Changes made to this host by 'kubeadm init' or 'kubeadm join' will be reverted.
[reset] Are you sure you want to proceed? [y/N]: y
#Master01节点删除工作目录,并重置kubeadm,然后重新创建
[root@k8s-master01 ~]# rm -rf /etc/kubernetes/*
[root@k8s-master01 ~]# rm -rf ~/.kube/*   
[root@k8s-master01 ~]# rm -rf /var/lib/etcd/*
[root@k8s-master01 ~]# kubeadm reset -f    


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
28天前
|
Kubernetes 网络协议 应用服务中间件
K8S二进制部署实践-1.15.5
K8S二进制部署实践-1.15.5
34 0
|
2月前
|
Kubernetes 数据安全/隐私保护 Docker
|
3月前
|
Kubernetes 调度 Docker
Kubernetes高可用集群二进制部署(五)kubelet、kube-proxy、Calico、CoreDNS
Kubernetes高可用集群二进制部署(五)kubelet、kube-proxy、Calico、CoreDNS
Kubernetes高可用集群二进制部署(五)kubelet、kube-proxy、Calico、CoreDNS
|
12天前
|
Kubernetes Linux 网络安全
kubeadm安装k8s
该文档提供了一套在CentOS 7.6上安装Docker和Kubernetes(kubeadm)的详细步骤,包括安装系统必备软件、关闭防火墙和SELinux、禁用swap、开启IP转发、设置内核参数、配置Docker源和加速器、安装指定版本Docker、启动Docker、设置kubelet开机启动、安装kubelet、kubeadm、kubectl、下载和配置Kubernetes镜像、初始化kubeadm、创建kubeconfig文件、获取节点加入集群命令、下载Calico YAML文件以及安装Calico。这些步骤不仅适用于v1.19.14,也适用于更高版本。
69 1
|
25天前
|
Kubernetes 安全 网络安全
搭建k8s集群kubeadm搭建Kubernetes二进制搭建Kubernetes集群
搭建k8s集群kubeadm搭建Kubernetes二进制搭建Kubernetes集群
108 0
|
30天前
|
Kubernetes 测试技术 API
ChaosBlade常见问题之安装K8S探针心跳检测失败如何解决
ChaosBlade 是一个开源的混沌工程实验工具,旨在通过模拟各种常见的硬件、软件、网络、应用等故障,帮助开发者在测试环境中验证系统的容错和自动恢复能力。以下是关于ChaosBlade的一些常见问题合集:
19 0
|
1月前
|
Kubernetes 应用服务中间件 nginx
Kubernetes服务网络Ingress网络模型分析、安装和高级用法
Kubernetes服务网络Ingress网络模型分析、安装和高级用法
36 5
|
1月前
|
存储 Kubernetes 监控
KubeSphere平台安装系列之一【Kubernetes上安装KubeSphere(亲测--实操完整版)】(1/3)
KubeSphere平台安装系列之一【Kubernetes上安装KubeSphere(亲测--实操完整版)】(1/3)
40 0
|
1月前
|
存储 Kubernetes 监控
K8S集群上安装KubeSphere的详细过程
K8S集群上安装KubeSphere的详细过程
29 0
|
1月前
|
Kubernetes Linux Docker
深度解析:Kubernetes 1.28.2集群安装过程中的关键步骤
本文旨在为读者提供一份详尽的Kubernetes 1.28.2集群安装指南,帮助您从零开始构建稳定、高效的Kubernetes集群。我们将从环境准备、软件安装、集群初始化到节点添加等各个环节进行逐步讲解,确保您能够顺利完成集群的搭建。

推荐镜像

更多