k8s多master节点使用二进制部署群集

2023-05-16

目录

  • 一、K8S 多节点部署
    • 1.1 拓补图与主机分配
    • 1.2 mster02部署
      • 1.2.1 复制master中的三个组件启动脚本kube-apiserver.service kube-controller-manager.service kube-scheduler.service
      • 1.2.2 修改配置文件kube-apiserver中的IP
      • 1.2.3 拷贝etcd证书给master02使用
      • 1.2.4 启动master02中的三个组件服务
      • 1.2.5 增加环境变量
      • 1.2.6 查看节点
    • 1.3 nginx负载均衡集群部署
      • 1.3.1 安装nginx 并开启四层转发(nginx02 同)
      • 1.3.1 启动nginx服务
      • 1.3.2 两台nginx主机部署keepalived服务(nginx01的操作,nginx02有细微区别 )
      • 1.3.2 创建监控脚本,启动keepalived服务,查看VIP地址
      • 1.3.3 漂移地址的验证与恢复
      • 1.3.4 修改两个node节点配置文件(ootstrap.kubeconfig 、)
      • 1.3.5 重启两个node节点的服务
      • 1.3.6 在nginx01上查看k8s日志
    • 1.4 master节点测试创建pod

一、K8S 多节点部署

1.1 拓补图与主机分配

在这里插入图片描述

主机名IP地址所需部署组件
master01192.168.233.100kube-apiserver、kube-controller-manager、kube-scheduler、etcd
node01192.168.233.200kubelet、kube-proxy、docker、flannel、etcd
node02192.168.233.180kubelet、kube-proxy、docker、flannel、etcd
VIP192.168.233.110
master02192.168.233.50apiserver、scheduler、controller-manager
nginx01192.168.233.30nginx、keepalived
nginx02192.168.233.127nginx、keepalived

1.2 mster02部署

//在master01上操作
//复制kubernetes目录到master02
[root@master01 k8s]# scp -r /opt/kubernetes/ root@192.168.233.50:/opt

1.2.1 复制master中的三个组件启动脚本kube-apiserver.service kube-controller-manager.service kube-scheduler.service

[root@master01 k8s]# scp /usr/lib/systemd/system/{kube-apiserver,kube-controller-manager,kube-scheduler}.service root@192.168.233.50:/usr/lib/systemd/system/

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

[root@master02 ~]# cd /opt/kubernetes/cfg/
[root@master02 cfg]# vim kube-apiserver
--bind-address=192.168.233.50 \
--advertise-address=192.168.233.50 \

1.2.3 拷贝etcd证书给master02使用

## master02一定要有etcd证书
[root@master01 k8s]# scp -r /opt/etcd/ root@192.168.233.50:/opt/

1.2.4 启动master02中的三个组件服务

[root@master02 cfg]# systemctl start kube-apiserver.service 
[root@master02 cfg]# systemctl start kube-controller-manager.service 
[root@master02 cfg]# systemctl start kube-scheduler.service 

1.2.5 增加环境变量

[root@master01  cfg]# vim /etc/profile
#末尾添加
export PATH=$PATH:/opt/kubernetes/bin/
[root@master01 cfg]# source /etc/profile

1.2.6 查看节点

[root@master02 ~]# kubectl get node
NAME              STATUS   ROLES    AGE   VERSION
192.168.233.200   Ready    <none>   23h   v1.12.3
192.168.233.180   Ready    <none>   23h   v1.12.3

1.3 nginx负载均衡集群部署

  • 关闭防火墙和核心防护,编辑nginx yum源
[root@nginx01 ~]# systemctl stop firewalld && systemctl disable firewalld	'//关闭防火墙与核心防护'
[root@nginx01 ~]# setenforce 0 && sed -i "s/SELINUX=enforcing/SELNIUX=disabled/g" /etc/selinux/config	
[root@nginx01 ~]# vi /etc/yum.repos.d/nginx.repo 	'//编辑nginx的yum源'
[nginx]
name=nginx.repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
enabled=1
gpgcheck=0
[root@nginx01 ~]# yum clean all

1.3.1 安装nginx 并开启四层转发(nginx02 同)

[root@nginx01 ~]# yum -y install nginx	'//安装nginx'
[root@nginx01 ~]# vi /etc/nginx/nginx.conf 
...省略内容
13  stream {
14 
15     log_format  main  '$remote_addr $upstream_addr - [$time_local] $status $upstream_bytes_sent';
16      access_log  /var/log/nginx/k8s-access.log  main;        ##指定日志目录
17 
18      upstream k8s-apiserver {
19  #此处为master的ip地址和端口 
20          server 192.168.233.100:6443;	'//6443是apiserver的端口号'
21  #此处为master02的ip地址和端口
22          server 192.168.233.50:6443;
23      }
24      server {
25                  listen 6443;
26                  proxy_pass k8s-apiserver;
27      }
28      }
。。。省略内容

1.3.1 启动nginx服务

[root@nginx01 ~]# nginx -t	'//检查nginx语法'
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@nginx01 ~]# systemctl start nginx	'//开启服务'
[root@nginx01 ~]# systemctl status nginx
[root@nginx01 ~]# netstat -ntap |grep nginx	'//会检测出来6443端口'
tcp        0      0 0.0.0.0:6443            0.0.0.0:*               LISTEN      1849/nginx: master  
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1849/nginx: master 

1.3.2 两台nginx主机部署keepalived服务(nginx01的操作,nginx02有细微区别 )

[root@nginx01 ~]# yum -y install keepalived 
[root@nginx01 ~]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived 

global_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 
} 

vrrp_script check_nginx {
   script "/usr/local/nginx/sbin/check_nginx.sh"	'//keepalived服务检查脚本的位置'
}

vrrp_instance VI_1 { 
   state MASTER 	'//nginx02设置为BACKUP'
   interface ens33
   virtual_router_id 51 # VRRP 路由 ID实例,每个实例是唯一的   nginx02 与nginx01一样
   priority 100    '//优先级,nginx02设置 90' 
   advert_int 1    '//指定VRRP 心跳包通告间隔时间,默认1秒 '
   authentication { 
       auth_type PASS      
       auth_pass 1111 
   }  
   virtual_ipaddress { 
       192.168.233.100/24 	'//VIP地址'
   } 
   track_script {
       check_nginx
   } 
}

1.3.2 创建监控脚本,启动keepalived服务,查看VIP地址

[root@nginx01 ~]# mkdir -p /usr/local/nginx/sbin/	'//创建监控脚本目录'  nginx02 也要写
[root@nginx01 ~]# vim /usr/local/nginx/sbin/check_nginx.sh	'//编写监控脚本配置文件'  
count=$(ps -ef |grep nginx |egrep -cv "grep|$$")

if [ "$count" -eq 0 ];then
   systemctl stop keepalived
fi
[root@nginx01 ~]# chmod +x /usr/local/nginx/sbin/check_nginx.sh	'//给权限'
[root@nginx01 ~]# systemctl start keepalived	'//开启服务'
[root@nginx01 ~]# systemctl status keepalived
[root@nginx01 ~]# ip a	'//两个nginx服务器查看IP地址'
   VIP在nginx01上
[root@nginx02 ~]# ip a

1.3.3 漂移地址的验证与恢复

[root@nginx01 ~]# pkill nginx	'//关闭nginx服务'
[root@nginx01 ~]# systemctl status keepalived	'//发现keepalived服务关闭了'
[root@nginx02 ~]# ip a	'//现在发现VIP地址跑到nginx02上了'
[root@nginx01 ~]# systemctl start nginx
[root@nginx01 ~]# systemctl start keepalived	'//先开启nginx,在启动keepalived服务'
[root@nginx01 ~]# ip a	'//再次查看,发现VIP回到了nginx01节点上'

1.3.4 修改两个node节点配置文件(ootstrap.kubeconfig 、)

[root@node01 ~]# vi /opt/k8s/cfg/bootstrap.kubeconfig 
    server: https://192.168.233.110:6443	'//此地址修改为VIP地址'
[root@node01 ~]# vi /opt/k8s/cfg/kubelet.kubeconfig 
    server: https://192.168.233.110:6443	'//此地址修改为VIP地址'
[root@node01 ~]# vi /opt/k8s/cfg/kube-proxy.kubeconfig 
    server: https://192.168.233.110:6443	'//此地址修改为VIP地址'

1.3.5 重启两个node节点的服务

[root@node01 ~]# systemctl restart kubelet
[root@node01 ~]# systemctl restart kube-proxy
[root@node01 ~]# cd /opt/k8s/cfg/
[root@node01 cfg]# grep 100 *	'//VIP修改成功'
bootstrap.kubeconfig:    server: https://192.168.233.110:6443
kubelet.kubeconfig:    server: https://192.168.233.110:6443
kube-proxy.kubeconfig:    server: https://192.168.233.110:6443

1.3.6 在nginx01上查看k8s日志

[root@nginx01 ~]# tail /var/log/nginx/k8s-access.log 	'//下面的日志是重启服务的时候产生的'
192.168.233.200 192.168.233.100:6443 - [01/May/2020:01:25:59 +0800] 200 1121
192.168.233.200 192.168.233.100:6443 - [01/May/2020:01:25:59 +0800] 200 1121

1.4 master节点测试创建pod

[root@master01 ~]# kubectl run nginx --image=nginx	'//创建一个nginx测试pod'
kubectl run --generator=deployment/apps.v1beta1 is DEPRECATED and will be removed in a future version. Use kubectl create instead.
deployment.apps/nginx created
[root@master01 ~]# kubectl get pods	'//查看状态,是正在创建'
NAME                    READY   STATUS              RESTARTS   AGE
nginx-dbddb74b8-5s6h7   0/1     ContainerCreating   0          13s
[root@master02 ~]# kubectl get pods	'//稍等一下再次查看,发现pod已经创建完成,在master02节点也可以查看'
NAME                    READY   STATUS    RESTARTS   AGE
nginx-dbddb74b8-5s6h7   1/1     Running   0          23s
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s多master节点使用二进制部署群集 的相关文章

  • KVM-7、KVM 虚拟机创建的几种方式

    通过对 qemu kvm libvirt 的学习 总结三种创建虚拟机的方式 1 通过 qemu kvm 创建 2 通过 virt install 创建 3 通过 virt manager 创建 在使用这三种创建虚拟机前提是 宿主机必须支持
  • 基于hostpath的k8s pod日志持久化

    基于hostpath的k8s pod日志持久化 前置条件 step1 修改服务的yaml文件 step2 推送日志到minio版保存 step3 优化 附加 简单了解 前置条件 考虑到pod的多副本 但同时需要将日志集中收集起来 所以采用h
  • 从Docker到Kubernetes——Kubernetes设计解读之Pod

    文章目录 Kubernetes是个什么样的项目 Kubernetes的设计解读 典型案例 GuestBook pod设计解读 pod使用实例 pod内容器网络与通信 Kubernetes是个什么样的项目 简单的说 k8s是一个管理跨主机容器
  • Liveness、Readiness 和 Startup Probes

    liveness apiVersion v1 kind Pod metadata labels test liveness name liveness exec spec containers name liveness image k8s
  • 二进制部署K8s

    一 环境需求 节点IP 节点名称 所需组件 192 168 248 11 k8s master docker etcd apiserver controller manager scheduler kube proxy flannel 19
  • K8s-yaml的使用及命令

    YAML配置文件管理对象 对象管理 创建deployment资源 kubectl create f nginx deployment yaml 查看deployment kubectl get deploy 查看ReplicaSet kub
  • k8s删除Terminating 的命名空间等资源

    背景 在k8s中执行删除命名空间后 命名空间没有被删除而是处于Terminating状态 此时再执行删除仍然删除不掉 解决 将要删除的命名空间信息导出为json数据 下面traefik v2 替换成你需要删除的命名空间名称 kubectl
  • calico分配网络使k8s节点指定固定网段

    文章目录 calico分配网络使k8s节点指定固定网段 1 配置calicoctl 1 1 下载calicoctl 1 2 配置calicoctl 1 3 测试calicoctl 2 配置ippool 3 添加ippool 4 创建pod测
  • k8s部署之ETCD集群

    k8s部署之ETCD集群 1 etcd下载 etcd下载地址 https github com coreos etcd releases 从github etcd的发布页面选取相应的版本用 wget url 来下载 如 wget https
  • k8s之nginx-ingress做tcp或udp的4层网络负载

    检查nginx ingress是否开启tcp udp转发 test test02 ingress kubectl get pod n ingress nginx o yaml grep i configmap configmap POD N
  • kubeadm构建(Calico+Dashboard+Containerd)

    文章目录 前言 一 环境 二 部署容器网络 CNI master操作 1 下载yamll 2 修改yaml 3 部署 三 部署 Dashboard 1 下载yaml 2 修改yaml 3 部署 4 创建管理员 四 切换容器引擎为Contai
  • k8s基础5——Pod常用命令、资源共享机制、重启策略和健康检查、环境变量、初始化容器、静态pod

    文章目录 一 基本了解 二 管理命令 三 yaml文件参数大全 四 创建pod的工作流程 五 资源共享机制 5 1 共享网络 5 2 共享存储 六 生命周期 重启策略 健康检查 七 环境变量 八 Init Containe初始化容器 九 静
  • Kubernetes + Dashboard 集群搭建

    1 环境说明 基于kubeadm工具部署k8s 集群 还有基于二进制的部署方式但是需要单独部署k8s的每个组件比较繁琐 kubeadm是 Kubernetes官 提供的 于快速部署Kubernetes集群的 具 基于Kubernetes v
  • k8s问题 CrashLoopBackOff

    我们创建资源发现资源出现CrashLoopBackOff解决 CrashLoopBackOff 告诉我们 Kubernetes 正在尽力启动这个 Pod 但是一个或多个容器已经挂了 或者正被删除 root localhost kubectl
  • Kubernets原理分解

    主节点 master 快速介绍 master也要装kubelet和kubeproxy 前端访问 UI CLI kube apiserver scheduler controller manager etcd kubelet kubeprox
  • K8S暴露服务的三种方式

    文章目录 暴露服务的三种方式 NodePort LoadBalane Ingress 内容参考 暴露服务的三种方式 NodePort 将服务的类型设置成NodePort 每个集群节点都会在节点上打 开 一 个端口 对于NodePort服务
  • kubeadm集群化部署多master节点(生产环境适用)

    一 背景介绍 k8s通过master集中式管理worknode的容器编排系统 而在生产环境为了维护高可用性 master的地位起到举无轻重的作用 一旦master节点失守 则会导致整个集群服务不可用 因此配置多master集群在生产环境非常
  • 从Docker到Kubernetes——Kubernetes设计解读之ReplicationController、Service

    文章目录 Kubernetes的设计解读 replication controller 设计解读 replication controller 使用示例 service的设计解读 service的使用示例 Kubernetes的设计解读 r
  • k8s部署Prometheus抓取pods的metrics

    1 暴露pods给Prometheus抓取 spec replicas app replicas template metadata annotations prometheus io scrape true prometheus io p
  • flannel和calico区别

    k8s网络模式 Flannel数据包在主机间转发是由backend实现的 目前已经支持UDP VxLAN host gw等多种模式 VxLAN 使用内核中的VxLAN模块进行封装报文 也是flannel推荐的方式 host gw虽然VXLA

随机推荐

  • SPI总线

    1 spi总线简介 xff1a SPI xff08 Serial Peripheral Interface xff09 是串行外设接口的缩写 xff0c SPl是一种高速的 全双工 同步的串行通信总线 xff1b SPl采用主从 方式工作
  • 【C语言】链表——圈中游戏问题(数到3退出)

    问题描述 xff1a 有n个人围成一圈 xff0c 从第1个人开始报数1 2 3 xff0c 每报到3的人退出圈子 使用链表找出最后留下的人 分析 xff1a 1 用动态链表 2 链表中每个结点的数据域按顺序赋值1 2 3 xff0c 用指
  • MySQL数据库JSON数组拆分

    用SQL将 34 name 34 34 25岁及以下 34 34 value 34 1 34 name 34 34 36 40岁 34 34 value 34 2 34 name 34 34 31 35岁 34 34 value 34 3
  • python中类的定义、实例化、封装以及私有变量/方法

    1 定义类 python中定义一个类的格式如下 xff1a class MyClass object def init self data1 data2 self data1 61 data1 self data2 61 data2 def
  • 代码规范之Alibaba Java Coding Guidelines

    一 Alibaba Java Coding Guidelines 1 整体介绍 xff1a Alibaba Java Coding Guidelines 专注于Java代码规范 xff0c 目的是让开发者更加方便 快速规范代码格式 该插件在
  • 虚拟机上的备份与还原(有图)

    一 虚拟机上的C盘备份到D盘 xff08 1 xff09 将事先做好pe的u盘插入真机 xff0c 在弹出的对话框上选择连接到虚拟机上 如图1 1 xff08 2 xff09 登陆上虚拟机的win10重启 xff0c 在开始重新启动同时按下
  • vscode中使用C++实现mysql数据库编程(附带相关案例)

    windows下vscode连接Linux中的MySQL教程见 xff1a https blog csdn net weixin 47156401 article details 129469835 spm 61 1001 2014 300
  • 二进制移动

    二进制移动 1 算术左移 逻辑左移 算 术左移和逻辑左移一样都是右边补0 xff1a 比如 xff1a 00101011 算术左移一位 01010110 逻辑左移一位 01010110 对于二进制的数值来说左移n位等于原来的数值乘以2的n次
  • VMware虚拟机ubuntu等系统的安装(含镜像下载链接)

    本文将讲述VMware虚拟机ubuntu等系统的安装 xff0c 超详细的教程 xff0c 每一个步骤都会配图片 同时为了方便大家找到这些镜像 xff0c 直接把镜像直接放到百度网盘中 xff0c 供大家下载使用 由于博主个人原因 xff0
  • 全球首发,国产开源「文本-视频生成」模型!免费在线体验,一键实现视频生成自由...

    来源 xff1a 新智元 去年4月 xff0c OpenAI发布的DALL E 2用更高的分辨率 更真实的图像生成以及更准确地理解自然描述 xff0c 横扫整个AIGC领域 不过图像生成真正进入全民化还要数Stable Diffusion的
  • 1、回文判断(java数据结构)

    回文判断 回文是指正读反读均相同的字符序列 xff0c 如 abba 和 abdba 均是回文 xff0c 但 good 不是回文 编写一个程序 xff0c 使用栈判定给定的字符序列是否为回文 输入格式 输入待判断的字符序列 xff0c 按
  • 12、栈、队列和字符串的基本操作(Java数据结构)

    栈 队列和字符串的基本操作 使用栈与队列逐个处理字符串中的每个字符 将输入的字符串的字符依次入栈 xff0c 然后输出栈中元素个数与栈顶元素 xff0c 以空格分隔 然后将栈中元素依次出栈并输出 xff0c 出栈时将不等于指定字符的元素依次
  • 在虚拟机上使用Ghost备份/恢复操作系统

    课堂作业 xff1a Windows10备份与恢复 实验目的 xff1a 使用Ghost备份 恢复操作系统 需求描述 用Ghost软件为Windows 10样机制作备份镜像 将制作的Gho文件备份到本机其他磁盘 xff0c 以备不时之需 环
  • 如何利用抓包验证 三次握手,四次挥手

    三次握手 xff0c 四次挥手 1 打开Centos 7 6 虚拟机设置 xff0c 自定义网卡VMnet8 2 打开控制面板 网络和internet 网络连接 xff0c 查看VMnet8网卡IPV4地址 3 开启虚拟机 xff0c 点击
  • VMware、linux虚拟机设置网络实现虚拟机与主机网络互通

    需要配置三个方面才可以 xff0c 即 xff1a WMware网络配置 windows主机网络配置 虚拟机网络配置 首先 xff0c 确认VMware虚拟机设置中配置的网络连接方式为 xff1a NAT模式 可以在VMware上方的菜单中
  • 单臂路由的使用及详细配置命令

    实验环境 xff1a 需求描述 xff1a 使各个vlan之间都能ping通 操作步骤 xff1a 1 LSW1划分vlan xff0c 讲对应的端口划分到对应的vlan 里面 xff0c 进入g0 0 1 xff0c 端口设置为trunk
  • 学习华为特殊端口模式Hybrid(带配置命令)

    目录 HybridHybrid接口工作原理实验环境 xff1a 实验步骤 xff1a 一 交换机的配置1 SW1的配置2 SW2的配置 二 PC地址配置三 PC互ping xff0c 简述PC互ping流程 Hybrid Hybrid接口工
  • ENSP 单臂路由的配置(带配置命令)

    目录 单臂路由原理实验环境 xff1a 需求描述 xff1a 操作步骤 xff1a 一 LSW1的配置二 R1的配置三 配置PC IP地址四 验证 单臂路由原理 在路由器的一个接口上通过配置逻辑接口的方式和E trunk多链路汇聚 xff0
  • Samba服务的匿名访问用户访问以及权限控制

    目录 一 samba服务概述二 Samba服务的配置2 1 安装DHCP服务2 2 win10通过DHCP 获取地址2 3 安装并配置Samba服务2 3 1 修改samba配置文件 匿名访问2 3 2 启动Samba服务2 3 4用户密码
  • k8s多master节点使用二进制部署群集

    目录 一 K8S 多节点部署1 1 拓补图与主机分配1 2 mster02部署1 2 1 复制master中的三个组件启动脚本kube apiserver service kube controller manager service ku