目录

一、多 Maser 集群架构的了解

二、master2 节点部署

1、从 master01 节点上拷贝证书文件、各master组件的配置文件和服务管理文件到 master02 节点

2、修改配置文件kube-apiserver中的IP

3、在 master02 节点上启动各服务并设置开机自启

4、查看node节点状态

三、负载均衡部署

1、配置nginx的官方在线yum源,配置本地nginx的yum源

2、修改nginx配置文件,配置四层反向代理负载均衡,指定k8s群集2台master的节点ip和6443端口

3、检查配置文件语法

4、启动nginx服务,查看已监听6443端口

 5、部署keepalived服务

6、修改keepalived配置文件

7、创建nginx状态检查脚本

8、启动keepalived服务(一定要先启动了nginx服务,再启动keepalived服务)

9、修改node节点上的bootstrap.kubeconfig,kubelet.kubeconfig配置文件为VIP

10、重启kubelet和kube-proxy服务

11、测试创建pod

12、查看Pod的状态信息

13、在对应网段的node节点上操作,可以直接使用浏览器或者curl命令访问

14、这时在master01节点上查看nginx日志

四、部署 Dashboard UI


一、多 Maser 集群架构的了解

Kubernetes作为容器集群系统,通过健康检查+重启策略实现了Pod故障自我修复能力,通过调度算法实现将Pod分布式部署,并保持预期副本数,根据Node失效状态自动在其他Node拉起Pod,实现了应用层的高可用性。

针对Kubernetes集群,高可用性还应包含以下两个层面的考虑:Etcd数据库的高可用性和Kubernetes Master组件的高可用性。而Etcd我们已经采用3个节点组建集群实现高可用,本篇博客将对Master节点高可用进行说明和实施。

Master节点扮演着总控中心的角色,通过不断与工作节点上的Kubelet进行通信来维护整个集群的健康工作状态。如果Master节点故障,将无法使用kubectl工具或者API做任何集群管理。

Master节点主要有三个服务kube-apiserver、kube-controller-mansger和kube-scheduler,其中kube-controller-mansger和kube-scheduler组件自身通过选择机制已经实现了高可用,所以Master高可用主要针对kube-apiserver组件,而该组件是以HTTP API提供服务,因此对他高可用与Web服务器类似,增加负载均衡器对其负载均衡即可,并且可水平扩容。

二、master2 节点部署

接上篇博客进行实验

环境准备:

节点 IP地址 安装
master01 192.168.2.66 kube-apiserver,kube-controller-manager,kube-scheduler,etcd
node1 192.168.2.200 kubelet,kube-proxy,docker, etcd
node2 192.168.2.77 kubelet,kube-proxy,docker, etcd
master02 192.168.2.22 kube-apiserver,kube-controller-manager,kube-scheduler,etcd
lb01 192.168.2.11 Nginx L4 ,keepalived
lb02 192.168.2.33 Nginx L4 ,keepalived

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

关闭swap

swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab

根据规划设置主机名

hostnamectl set -hostname master02

在master节点以及各个Node节点均添加hosts

cat >>  /etc/hosts <<EOF
192.168.2.66 master01
192.168.2.200 node01
192.168.2.77 node02
192.168.2.22 master02
EOF

将桥接的IPv4流量传递到iptables的链

cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF<br>sysctl --system

时间同步

yum -y install ntpdate
ntpdate time.windows.com

1、从 master01 节点上拷贝证书文件、各master组件的配置文件和服务管理文件到 master02 节点

scp -r /opt/etcd/ root@192.168.2.22:/opt/
scp -r /opt/kubernetes/ root@192.168.2.22:/opt
scp /usr/lib/systemd/system/{kube-apiserver,kube-controller-manager,kube-scheduler}.service root@192.168.2.22:/usr/lib/systemd/system/  

2、修改配置文件kube-apiserver中的IP

vim /opt/kubernetes/cfg/kube-apiserver
KUBE_APISERVER_OPTS="--logtostderr=true \
--v=4 \
--etcd-servers=https://192.168.2.66:2379,https://192.168.2.200:2379,https://192.168.2.77:2379 \
--bind-address=192.168.229.22 \ #修改
--secure-port=6443 \
--advertise-address=192.168.229.22 \    #修改
......

3、在 master02 节点上启动各服务并设置开机自启

systemctl daemon-reload
systemctl enable --now kube-apiserver.service kube-controller-manager.service kube-scheduler.service

4、查看node节点状态

ln -s /opt/kubernetes/bin/* /usr/local/bin/
kubectl get nodes
scp -r .kube/ 192.168.2.22:/root  #添加kubectl认证
kubectl get nodes
kubectl get nodes -o wide   #-o=wide:输出额外信息;对于Pod,将输出Pod所在的Node名  

此时在master02节点查到的node节点状态仅是从etcd查询到的信息,而此时node节点实际上并未与master02节点建立通信连接,因此需要使用一个VIP把node节点与master节点都关联起来

回到顶部

三、负载均衡部署

配置load balancer集群双机热备负载均衡(nginx实现负载均衡,keepalived实现双机热备)

##### 在lb01、lb02节点上操作 #####

1、配置nginx的官方在线yum源,配置本地nginx的yum源

cat > /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
EOFyum install nginx -y

  

2、修改nginx配置文件,配置四层反向代理负载均衡,指定k8s群集2台master的节点ip和6443端口

vim /etc/nginx/nginx.conf
events {
worker_connections 1024;
}#添加
stream {upstream k8s-apiserver {
server 192.168.2.11:6443;
server 192.168.2.33:6443;
}
server {
listen 6443;
proxy_pass k8s-apiserver;
}
}http {
......

 

3、检查配置文件语法

nginx -t

  

4、启动nginx服务,查看已监听6443端口

systemctl start nginx
systemctl enable nginx
netstat -natp | grep nginx

 5、部署keepalived服务

yum install keepalived -y

  

6、修改keepalived配置文件

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {
# 接收邮件地址
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
# 邮件发送地址
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id NGINX_MASTER  #lb01节点的为 NGINX_MASTER,lb02节点的为 NGINX_BACKUP
}#添加一个周期性执行的脚本
vrrp_script check_nginx {
script "/etc/keepalived/check_nginx.sh" #指定检查nginx存活的脚本路径
}vrrp_instance VI_1 {
state MASTER    #lb01节点的为 MASTER,lb02节点的为 BACKUP
interface ens33 #指定网卡名称 ens33
virtual_router_id 51    #指定vrid,两个节点要一致
priority 100    #lb01节点的为 100,lb02节点的为 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.67/24    #指定 VIP
}
track_script {
check_nginx #指定vrrp_script配置的脚本
}
}
其他多余的配置删除

7、创建nginx状态检查脚本

vim /etc/keepalived/check_nginx.sh
#!/bin/bash
#egrep -cv "grep|$$" 用于过滤掉包含grep 或者 $$ 表示的当前Shell进程ID
count=$(ps -ef | grep nginx | egrep -cv "grep|$$")if [ "$count" -eq 0 ];then
systemctl stop keepalived
fichmod +x /etc/keepalived/check_nginx.sh

 

8、启动keepalived服务(一定要先启动了nginx服务,再启动keepalived服务)

systemctl start keepalived
systemctl enable keepalived
ip a    #查看VIP是否生成

  

9、修改node节点上的bootstrap.kubeconfig,kubelet.kubeconfig配置文件为VIP

cd /opt/kubernetes/cfg/
vim bootstrap.kubeconfig
server: https://192.168.2.67:6443vim kubelet.kubeconfig
server: https://192.168.2.67:6443vim kube-proxy.kubeconfig
server: https://192.168.2.67:6443

三个配置文件修改相同,都修改为虚拟VIP即可,这里只展示一个文件的修改;两个Node节点都需要修改  

10、重启kubelet和kube-proxy服务

systemctl restart kubelet.service
systemctl restart kube-proxy.service

 

======在 master02节点上操作 ======

11、测试创建pod

kubectl create deployment redis-master02 --image=redis  

12、查看Pod的状态信息

kubectl get pods
nginx-dbddb74b8-nf9sk 0/1 ContainerCreating 0 33s #正在创建中
kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-dbddb74b8-nf9sk 1/1 Running 0 80s #创建完成,运行中kubectl get pods -o wide
//READY为1/1,表示这个Pod中有1个容器

  

13、在对应网段的node节点上操作,可以直接使用浏览器或者curl命令访问

curl 10.244.1.3

  

14、这时在master01节点上查看nginx日志

kubectl logs nginx-matser02-9fbbbc86c-2ztgd

回到顶部

四、部署 Dashboard UI

Dashboard 介绍

仪表板是基于Web的Kubernetes用户界面。您可以使用仪表板将容器化应用程序部署到Kubernetes集群,对容器化应用程序进行故障排除,并管理集群本身及其伴随资源。

您可以使用仪表板来概述群集上运行的应用程序,以及创建或修改单个Kubernetes资源(例如部署,作业,守护进程等)。

例如,您可以使用部署向导扩展部署,启动滚动更新,重新启动Pod或部署新应用程序。仪表板还提供有关群集中Kubernetes资源状态以及可能发生的任何错误的信息。
====== 在 node 节点上操作 ======

上传镜像文件

====== 在 master1 节点上操作 ======

上传recommended.yaml文件到/opt/k8s日录中
vim recommended.yaml
kubectl apply-f recommended.yaml

#创建service account并绑定默认cluster-admin管理员集群角色
kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl get secret -n kube-system
kubectl describe secret dashboard-admin-token-5mwwc -n kube-system

K8S多节点二进制部署相关推荐

  1. Linux运维容器篇 k8s单节点二进制部署(1) ECTD部署+CA证书制作

    文章目录 一.环境配置 二.制作CA证书 1.传入脚本 2.创建CA证书 3 指定节点通讯证书 三 部署etcd集群 1 安装etcd包并传入证书 配置etcd启动脚本并生成cfg文件 配置node节 ...

  2. 生产环境---K8s单节点二进制部署

    文章目录 一.K8s单master群集环境介绍 二.Master节点组件介绍 三.node节点组件介绍 四.实验步骤 五.Etcd群集部署 六.Flannel网络部署 七.Master节点部署 八.n ...

  3. K8S——单master节点和基于单master节点的双master节点二进制部署(本机实验,防止卡顿,所以多master就不做3台了)

    K8S--单master节点和基于单master节点的双master节点二进制部署 一.准备 二.ETCD集群 1.master节点 2.node节点 三.Flannel网络部署 四.测试容器间互通 ...

  4. Kubernetes多节点二进制部署

    Kubernetes多节点二进制部署 一.部署master02 节点 修改主机名,关闭防火墙 在k8smaster01上操作 在k8smaster02上操作 二.部署负载均衡 1.配置nginx的官方 ...

  5. 认识kubernetes(k8s),k8s单节点etcd部署

    认识kubernetes(k8s),k8s单节点etcd部署 一.k8s概述 (一).k8s简介 (二).k8s特性 (三).k8s群集架构与组件 (四).k8s核心概念 (五).k8s三种部署方式 ...

  6. k8s多节点master部署

    k8s多节点master部署 多节点master2节点部署 从master01节点上拷贝证书文件.配置文件和服务管理文件到master02 修改配置文件kube-apiserver中的IP 在mast ...

  7. Kubernetes学习之路(四)之Node节点二进制部署

    K8S Node节点部署 1.部署kubelet (1)二进制包准备 [root@linux-node1 ~]# cd /usr/local/src/kubernetes/server/bin/[ro ...

  8. k8s集群二进制部署 1.17.3

    K8s简介 Kubernetes(简称k8s)是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容 ...

  9. k8s动力节点的部署

    What is Kubernetes? Kubernetes这个单词来自于希腊语,含义是 舵手 或 领航员: Production-Grade Container Orchestration Auto ...

最新文章

  1. Line上半年扭亏为盈 用户及营收遇瓶颈
  2. python连接linux服务器并使用命令_python基于paramiko模块实现远程连接Linux虚拟机(服务器)并执行指定命令返回输出结果...
  3. 实现无线AP无缝漫游
  4. 北京内推 | 微软亚洲研究院机器学习组招聘AI for Health实习生
  5. [HNOI2008]神奇的国度
  6. windbg 符号表
  7. 记录一次大对象导致的Java堆内存溢出问题
  8. 新手学html 第一节:html简介
  9. 浪潮业务稳定连续性获Global Data唯一“Leader”评级 蝉联数据中心整体能力“Very Strong”评级
  10. 一文带你看完ZooKeeper!
  11. SQL Server外连接、内连接、交叉连接
  12. h710阵列卡支持最大硬盘_戴尔PowerEdge RAID控制卡使用示例(PERC H710P为例)
  13. 嘌呤含量高的食物大全
  14. 客户端动态化系列之——URLRoute
  15. 产业分析:工业机器人市场研究
  16. 产生分类中的双月问题的数据集
  17. 计算机综合布线考试试题A,综合布线试题A
  18. Architect架构师简历模板
  19. PHP 多行文字内容的重复检测功能并统计重复次数
  20. [直流有刷电机步进电机]驱动芯片AS4950完美替代A4950/DRV8870/AT8870/TMI8870/G2057

热门文章

  1. 【Bluetooth蓝牙开发】三、蓝牙调试工具【集合汇总】
  2. html5页面拨打电话,5.添加页面/设置点击拨打电话
  3. 2022年618有哪些蓝牙耳机值得买?四款降噪效果好的蓝牙耳机测评
  4. 全网超详细的VMware虚拟机安装Kali Linux系统以及首次启动Kali Linux系统的注意事项
  5. 第二十五章《图书管理系统》第1节:图书管理系统简介
  6. 论文写作各种图片格式转成eps格式(inkscape)
  7. 电子商务数据分析的认识
  8. 电脑丢失的dll文件怎么一键修复?修复dll方法分享
  9. 人工智能深度神经网络的研究
  10. Modbus家族之 ASCII