马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
一、Metrics 摆设
在新版的 Kubernetes 中系统资源的采集均使⽤ Metrics-server,可 以通过 Metrics 采集节点和 Pod 的内存、磁盘、CPU和⽹络的使⽤ 率。
(1)复制证书到所有 node 节点
将 master 节点的 front-proxy-ca.crt 复制到所有 Node 节点,每有 ⼀个节点执⾏⼀次,仅需修改命令内的 node 节点主机名即可。
- [root@k8s-master calico]# scp
- /etc/kubernetes/pki/front-proxy-ca.crt k8snode01:/etc/kubernetes/pki/front-proxy-ca.crt
- # 向node01节点发送代理证书
- front-proxy-ca.crt
- 100% 1123 937.0KB/s 00:00
- [root@k8s-master calico]# scp
- /etc/kubernetes/pki/front-proxy-ca.crt k8snode02:/etc/kubernetes/pki/front-proxy-ca.crt
- # 向node02节点发送代理证书
- front-proxy-ca.crt
- 100% 1123 957.4KB/s 00:00
- # 若有其他node节点,按照格式执⾏下⾯命令,这⾥不⽤执⾏,因
- 为node只有两台主机
- [root@k8s-master calico]# scp
- /etc/kubernetes/pki/front-proxy-ca.crt k8snode03:/etc/kubernetes/pki/front-proxy-ca.crt
复制代码 (2)安装 metrics server
- [root@k8s-master calico]# cd /root/k8s-hainstall/kubeadm-metrics-server
- # 添加metric server的pod资源
- [root@k8s-master] kubeadm-metrics-server]# kubectl create -f comp.yaml
复制代码 (3)查看 metrics server 状态
- # 在kube-system命名空间下查看metrics server的pod运⾏状态
- [root@master kubeadm-metrics-server]# kubectl get po -n kube-system -l k8s-app=metrics-server
- NAME READY STATUS
- RESTARTS AGE
- metrics-server-8df99c47f-mkbfd 1/1 Running 0 34s
- # 查看node节点的系统资源使⽤情况
- [root@master kubeadm-metrics-server]# kubectl top node
- NAME CPU(cores) CPU% MEMORY(bytes)
- MEMORY%
- k8s-node01 51m 1% 831Mi 23%
- k8s-node02 55m 1% 931Mi 25%
- master 107m 2% 1412Mi 39%
-
- [root@master kubeadm-metrics-server]# kubectl top po -A
复制代码 二、Dashboard摆设
Dashboard ⽤于展示集群中的各类资源,同时也可以通过 Dashboard 实时查看 Pod 的⽇志和在容器中执⾏⼀些命令等。
(1)安装组件
- [root@master kubeadm-metrics-server]# cd /root/k8s-ha-install/dashboard/
- # 建⽴dashboard的pod资源
- [root@master dashboard]# kubectl create -f .
复制代码 (2)登录 dashboard
如果是⾕歌欣赏器,需要在启动⽂件中加⼊下⾯的启动参数,⽤于解决⽆法访问 Dashboard的问题
--test-type --ignore-certificate-errors
(3)更改 svc 模式
- [root@master dashboard]# kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
- # edit:进⼊kubernetes的⽂本编辑器
- # svc:指定某个服务项,这⾥指定的是kubernetes-dashboard
- # -n:指定命名空间,kubernetes-dashboard
- # 命令执⾏后相当于进⼊vim⽂本编辑器,不要⽤⿏标滚轮,会输出乱码的!
- #可以使⽤“/”搜索,输⼊“/type”找到⽬标,如果已经为NodePort,忽略此步骤
- ......省略部分内容......
- selector:
- k8s-app: kubernetes-dashboard
- sessionAffinity: None
- type: NodePort
复制代码 图示:
(4)查看访问端⼝号
- # 获取kubernetes-dashboard状态信息,包含端⼝,服务IP等
- [root@master dashboard]# kubectl get svc kubernetes-dashboard -n kubernetes-dashboard
复制代码 找到端⼝号后,通过 master 的 IP+端⼝即可访问 dashboard(端⼝ 为终端查询到的端⼝,要⽤ https 协议访问)
(5)创建登录 token
- [root@master dashboard]# kubectl create token admin-user -n kube-system
复制代码 在“输⼊ token *”内输⼊终端⽣成的 token
三、摆设Kube-proxy
(1)改为 ipvs模式
- [root@master ~]# kubectl edit cm kube-proxy -n kube-system
- # 使⽤“/”找到“mode”,按照如下修改
- mode: ipvs
复制代码 (2)更新 Kube-Proxy 的 Pod
- [root@master ~]# kubectl patch daemonset kubeproxy -p "{"spec":{"template":{"metadata":{"annotations":{"date":"`date +'%s'`"}}}}}" -n kube-system
- daemonset.apps/kube-proxy patched
- [root@master ~]# curl 127.0.0.1:10249/proxyMode
- ipvs
复制代码 四、集群可⽤性验证
1. 验证节点
- # 全部为Ready,是正常
- [root@master ~]# kubectl get node
- NAME STATUS ROLES AGE
- VERSION
- k8s-node01 Ready <none> 156m v1.28.2
- k8s-node02 Ready <none> 155m v1.28.2
- master Ready control-plane 157m v1.28.2
复制代码 2. 验证 Pod
- # 全部为running,表示正常
- [root@master ~]# kubectl get po -A
- NAMESPACE NAME READY STATUS RESTARTS AGE
- kube-system calico-kube-controllers6d48795585-wj8g5 1/1 Running 0 156m
- kube-system calico-node-bk4p5 1/1 Running 0 156m
- kube-system calico-node-kmsh7 1/1 Running 0 156m
- kube-system calico-node-qthgh 1/1 Running 0 156m
- kube-system coredns-6554b8b87f-jdc2b 1/1 Running 0 159m
- kube-system coredns-6554b8b87f-thftb 1/1 Running 0 159m
- kube-system etcd-master 1/1 Running 0 159m
- kube-system kube-apiserver-master 1/1 Running 0 159m
- ............................
复制代码 3. 验证集群⽹段是否冲突
- # 查看服务的⽹段
- [root@master ~]# kubectl get svc
- NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
- kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 160m
- # 查看所有命名空间下的所有⽹段,再与服务的⽹段进⾏⽐较
- [root@master ~]# kubectl get po -A -owide
复制代码 4. 验证是否可正常创建参数
- # 已创建,表示正常
- [root@master ~]# kubectl create deploy clustertest--
- image=registry.cnbeijing.aliyuncs.com/dotbalo/debug-tools
- -- sleep 3600 deployment.apps/cluster-test created
- [root@master ~]# kubectl get po
- NAME READY STATUS RESTARTS AGE
- cluster-test-66bb44bd88-sq8fx 1/1 Running 0 41s
- [root@master ~]# kubectl get po -owide
- NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
- cluster-test-66bb44bd88-sq8fx 1/1 Running 0 48s 172.16.58.196 k8s-node02 <none> <none>
复制代码 5. Pod 必须可以或许解析 Service
同 namespace 和跨 namespace
(1)nslookup kubernetes
- # 进⼊pod下的某个容器
- [root@master ~]# kubectl exec -it cluster-test66bb44bd88-sq8fx -- bash
- (06:36 cluster-test-66bb44bd88-sq8fx:/) nslookup kubernetes
- Server: 10.96.0.10
- Address: 10.96.0.10#53
- Name: kubernetes.default.svc.cluster.local
- Address: 10.96.0.1
- # 可以解析到server的IP地址说明同namespace可以解析
复制代码 (2)nslookup kube-dns.kube-system
- (06:36 cluster-test-66bb44bd88-sq8fx:/) nslookup kube-dns.kube-system
- Server: 10.96.0.10
- Address: 10.96.0.10#53
- Name: kube-dns.kube-system.svc.cluster.local
- Address: 10.96.0.10
- # 可以解析到server的第⼗个ip,说明可以解析到kube-dns,说明跨namespace也可解析
复制代码 6. 确认是否可访问 Kubernetes 的 443 和 kube-dns 的 53
每个节点都必须能访问 Kubernetes 的 kubernetes svc 443 和 kube-dns 的 service 53
- [root@master ~]# curl https://10.96.0.1:443
- curl: (60) SSL certificate problem: unable to get local issuer certificate
- More details here:
- https://curl.haxx.se/docs/sslcerts.html
- curl failed to verify the legitimacy of the server and therefore could not
- establish a secure connection to it. To learn more about this situation and
- how to fix it, please visit the web page mentioned above.
- [root@master ~]# curl 10.96.0.10:53
- curl: (52) Empty reply from server
复制代码 7. 确认各 Pod 之间是否可正常通讯
同 namespace 和跨 namespace
- [root@master ~]# kubectl get po -nkube-system -owide
- [root@master ~]# kubectl get po -owide
- [root@master ~]# kubectl exec -it cluster-test66bb44bd88-sq8fx -- bash
复制代码 同呆板和跨呆板
- [root@master ~]# kubectl get po -owide
- [root@master ~]# ping 172.16.58.196 -c 3
复制代码
五、注意事项
注意:kubeadm 安装的集群,证书有效期默认是⼀年。master 节点 的 kube-apiserver、kube-scheduler、kube-controller-manager、 etcd 都是以容器运⾏的。
可以通过 kubectl get po -n kube-system 查看。
启动和⼆进制不同的是,kubelet 的配置⽂件在 /etc/sysconfig/kubelet 和/var/lib/kubelet/config.yaml
修改后需要重启 kubelet 进程。
其他组件的配置⽂件在 /etc/kubernetes/manifests ⽬录下,⽐如 kube-apiserver.yaml,该 yaml ⽂件更改后,kubelet 会⾃动革新配 置,也就是会重启 pod。不能再次创建该⽂件
kube-proxy 的配置在 kube-system 命名空间下的 configmap 中, 可以通过:
kubectl edit cm kube-proxy -n kube-system
进⾏更改,更改完成后,可以通过 patch 重启 kube-proxy:
kubectl patch daemonset kube-proxy -p "{\"spec\": {\"template\":{\"metadata\":{\"annotations\": {\"date\":\"`date +'%s'`\"}}}}}" -n kube-system
Kubeadm 安装后,master 节点默认不允许摆设 Pod,可以通过以 下⽅式删除 Taint,即可摆设 Pod:
kubectl taint node -l noderole.kubernetes.io/control-plane noderole.kubernetes.io/control-plane:NoSchedule-
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |