Kubeadm搭建高可用K8S(二)安装高可用master

【kubernetes篇】教你kubeadm方式搭建kubernetes 集群。单master节点集群,多master节点集群说明。 文章目录kubernetes集群搭建1. 集群分类2. 集群搭建硬件要求3. 集群搭建方式4. kubeadm部署方式4.1 安装要求4.2 初始化工作4.3 安装Docker/kubeadm/kubelet4.4 部署Kubernetes Master4.5 加入Kubernetes Node4.6 部署CNI网络插件4.7 测试kubernetes集群 kubernetes集群搭建 1. 集群分类 kubernetes集群分为单Master节点集群和多Master节点集群。在实际应用中我们一般采用多Ma 阅读详情

安装Docker服务

# 安装(二进制安装,master节点不需要安装Docker)
# 二进安装控制节点不需要Pod启动插件
yum install docker-ce-20.10.6 docker-ce-cli-20.10.6 containerd.io  -y
# 启动以/开机自启/查看状态
systemctl start docker && systemctl enable docker && systemctl status docker

配置docker镜像加速器和驱动

# 编辑文件
vim  /etc/docker/daemon.json
# 内容:(可以使用自己的阿里云镜像加速器)
{
 "registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com", "https://rncxm540.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
} 
# 以上同时配置修改docker文件驱动为systemd,默认为cgroupfs,kubelet默认使用systemd,两者必须一致才可以
systemctl daemon-reload  && systemctl restart docker && systemctl status docker

初始化K8S软件包

# 安装(每一台虚拟机都要操作)
yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6
# 开启开机自启和查看状态
systemctl enable kubelet && systemctl start kubelet
systemctl status kubelet

#上面可以看到kubelet状态不是running状态,这个是正常的,不用管,等k8s组件起来这个kubelet就正常了
# Kubeadm:  kubeadm是一个工具,用来初始化k8s集群的
# kubelet:   安装在集群所有节点上,用于启动Pod的
# kubectl:   通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件

k8s apiserver节点高可用(重点)

通过keepalive+nginx实现

配置epel源,这样才能安装keepalived和nginx

# 把epel.repo上传到[各个虚拟机]的/etc/yum.repos.d目录下
# lrz 或者 scp都可
# 只需要在master节点上安装即可
yum install nginx keepalived -y

修改nginx配置文件:主备一样

vim /etc/nginx/nginx.conf
user nginx;  
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

# 四层负载均衡,为两台Master apiserver组件提供负载均衡
stream {

    log_format  main  '$remote_addr $upstream_addr - [$time_local] $status $upstream_bytes_sent';

    access_log  /var/log/nginx/k8s-access.log  main;

    upstream k8s-apiserver {
       # 需要修改的地方
       server 192.168.40.180:6443;   # Master1 APISERVER IP:PORT
       server 192.168.40.181:6443;   # Master2 APISERVER IP:PORT
    }
    
    server {
       listen 16443; # 由于nginx与master节点复用,这个监听端口不能是6443,否则会冲突
       proxy_pass k8s-apiserver;
    }
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    server {
        listen       80 default_server;
        server_name  _;

        location / {
        }
    }
}

keepalive配置,主备稍有差别

vim  /etc/keepalived/keepalived.conf 
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 "/etc/keepalived/check_nginx.sh"
}

vrrp_instance VI_1 {  
    state MASTER         # 主节点配置:MASTER、备用节点配置:BACKUP
    interface ens33      # 修改为实际网卡名
    virtual_router_id 51 # VRRP 路由 ID实例,每个实例是唯一的 
    priority 100         # 优先级,备服务器设置 90 
    advert_int 1         # 指定VRRP 心跳包通告间隔时间,默认1秒 
    authentication { 
        auth_type PASS      
        auth_pass 1111 
    }  
    # 虚拟IP
    virtual_ipaddress { 
        192.168.40.199/24
    } 
    track_script {
        check_nginx
    } 
}

#vrrp_script:指定检查nginx工作状态脚本(根据nginx状态判断是否故障转移)
#virtual_ipaddress:虚拟IP(VIP)
# 编写上述脚本,内容如下:
vim  /etc/keepalived/check_nginx.sh 

# 编写完成后赋予可执行权限
chmod +x  /etc/keepalived/check_nginx.sh
#注:keepalived根据脚本返回状态码(0为工作正常,非0不正常)判断是否故障转移。
#!/bin/bash
count=$(ps -ef |grep nginx | grep sbin | egrep -cv "grep|$$")
if [ "$count" -eq 0 ];then
    systemctl stop keepalived
fi

启动服务

# 在所有master上执行
yum install nginx-mod-stream -y
systemctl daemon-reload
# 启动和自启、状态查看
systemctl start nginx
systemctl start keepalived
systemctl enable nginx keepalived
systemctl status keepalived

测试vip是否绑定成功

# 在主master上使用IP查看命令,会看到虚拟IP存在
ip addr
# 停掉主master的Nginx(keepalived会一起停掉)
service nginx stop
# 在备用节点上执行IP查看,会看到虚拟IP飘到了备用节点
# 再次重启主节点Nginx和keepalived
# 虚拟IP又会飘回来 --->> 说明主备配置成功

初始化K8S集群

# 在root目录下操作,文件内容如下:
# 单节点部署时候可以直接在命令中制定参数
vim kubeadm-config.yaml 
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.20.6
# 虚拟IP
controlPlaneEndpoint: 192.168.40.199:16443
imageRepository: registry.aliyuncs.com/google_containers
apiServer:
 certSANs:
 # 自己指定的IP(?)
 - 192.168.40.180
 - 192.168.40.181
 - 192.168.40.182
 - 192.168.40.199
networking:
  # 规划的Pod网络资源
  podSubnet: 10.244.0.0/16
  serviceSubnet: 10.10.0.0/16
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind:  KubeProxyConfiguration
mode: ipvs

上传离线镜像包到根目录,并解压(镜像包很大)

# 每一台虚拟机都要上传&解压,可以使用SCP
docker load -i k8simage-1-20-6.tar.gz
# 命令行启动(单节点启动)
kubeadm init --kubernetes-version=1.20.6 --apiserver-advertise-address=192.168.31.90 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=SystemVerification

在Master主节点执行:

kubeadm init --config kubeadm-config.yaml --ignore-preflight-errors=SystemVerification

# --image-repository registry.aliyuncs.com/google_containers:手动指定仓库地址为registry.aliyuncs.com/google_containers。kubeadm默认从k8s.grc.io拉取镜像,但是k8s.gcr.io访问不到,所以需要指定从registry.aliyuncs.com/google_containers仓库拉取镜像。

安装完成后,注意保存相关提示性操作

#配置kubectl的配置文件config,相当于对kubectl进行授权,这样kubectl命令可以使用这个证书对k8s集群进行管理

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes

# 此时集群状态还是NotReady状态,因为没有安装网络插件。

扩容Master节点

证书拷贝

# 在备用节点操作
cd /root && mkdir -p /etc/kubernetes/pki/etcd &&mkdir -p ~/.kube/
scp /etc/kubernetes/pki/ca.crt master2:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/ca.key master2:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/sa.key master2:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/sa.pub master2:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/front-proxy-ca.crt master2:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/front-proxy-ca.key master2:/etc/kubernetes/pki/
scp /etc/kubernetes/pki/etcd/ca.crt master2:/etc/kubernetes/pki/etcd
scp /etc/kubernetes/pki/etcd/ca.key master2:/etc/kubernetes/pki/etcd/

Token失效及解决方案

#如果过期可先执行此命令
#重新生成token
kubeadm token create
# 生成token并打印Join命令
kubeadm token create --print-join-command

#列出token
kubeadm token list  | awk -F" " '{print $1}' |tail -n 1

# 获取CA公钥的哈希值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed  's/^ .* //'

# 再次执行加入
kubeadm join 192.168.40.8:6443 --token token填这里   --discovery-token-ca-cert-hash sha256:哈希值填这里
kubeadm join 192.168.74.110:16443 --token xxxx \
    --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxx \
    --control-plane \
    --ignore-preflight-errors=SystemVerification
# --control-plane表示是控制节点
# 及时查看节点状态
kubectl get nodes

注意:安装完成后,由于没有安装网络插件,所以当前的节点状态是不可用的

K8S安装部署的详细步骤与注意事项! k8s是一个多宿主机的容器集群管理软件,编排多台宿主机上的容器,它是一个开源的系统,可以自动部署、扩缩、管理容器的应用程序。本文将为大家详细介绍k8s部署的详细过程与注意事项。 阅读详情

相关推荐

Kubernetes(k8s)超详细的安装步骤

验证:kubectl get node。

wuds_158的博客 2万+

K8S1.20.6集群监控资源镜像清单及镜像合集

原文链接:https://blog.youkuaiyun.com/m0_37814112/article/details/122170537 说明:资源列表如下 drwxr-xr-x. 7 root root 83 12月 30 11:33 alertmanager drwxr-xr-x. 3 root root 99 1月 11 14:19 grafana drwxr-xr-x 2 root root 216 1月 14 11:06 grafana-dashborard drwxr-xr-x. 5 root root 93 12月 27 17:59 kube-state-metrics drwxr-xr-x. 4 root root 90 1月 11 15:32 nfs drwxr-xr-x. 2 root root 78 1月 12 13:55 node-exporter drwxr-xr-x. 3 root root 121 1月 12 13:49 prometheus-kubernetes drwxr-xr-x. 3 root root 121 1月 12 14:18 prometheus-kube-state-metrics drwxr-xr-x. 3 root root 121 1月 12 16:01 prometheus-node-exporter drwxr-xr-x. 3 root root 121 1月 14 11:00 prometheus-ssl-exporter -rw-r--r--. 1 root root 2230 12月 27 16:51 README.txt drwxr-xr-x 4 root root 93 1月 14 09:47 ssl-exporter -rw-r--r-- 1 root root 123 1月 11 15:31 version drwxr-xr-x. 5 root root 116 1月 11 15:52 webhook-dingtalk

在欧拉系统上用Kubeadm方式部署(k8s)kubernetes多master高可用集群

1.1 Kubernetes高可用集群部署1.1.1 集群架构1. 高可用拓扑可以设置 HA 集群:使用堆叠(stacked)控制平面节点,其中 etcd 节点与控制平面节点共存;使用外部 etcd 节点,其中 etcd 在与控制平面不同的节点上运行;在设置 HA 集群之前,应该仔细考虑每种拓扑的优缺点。2. 堆叠(Stacked) etcd 拓扑主要特点:etcd 分布式数据存储集群堆叠在 kubeadm 管理的控制平面节点上,作为控制平面的一个组件运行。

Richardlygo的博客 2845

kubernetes 部署

k8s是一个开源的系统,可以自动的去部署,扩缩,管理容器的应用程序。k8s是一个多宿主机的容器集群管理软件,编排多台宿主机上的容器。k8s 是Google推动的一个项目--》CNCF 云原生基金会。Prometheus是CNCF的第2个大项目。

qq_60271706的博客 537

kubeadm安装K8s高可用集群之集群初始化及master/node节点加入calico网络插件安装

记录用kubeadm部署搭建keepalive+nginx方式实现高可用集群 kubeadm安装K8s集群之集群初始化及master/node节点加入集群calico网络插件安装

诚不我欺的博客 1906

(一)k8s------kubeadm方式安装 , init流程,master高可用,dashboard, k8s升级,kubeadm命令

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。最新整理面试题上述的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题最新整理电子书最新整理大厂面试文档以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取然后将这个文件下载到桌面。

2401_84692405的博客 1486

以k8s为核心构建一个高可用的web集群(一)

需要准备三台4G, 4核,200G(推荐)的虚拟机,作为k8s集群的master, node-1和node-2。

qq_64063925的博客 446

在CentOS7上用kubeadm HAProxy Keepalived 安装多Master节点的高可用Kubernetes集群

文章目录在CentOS7上用kubeadm安装多Master节点的高可用Kubernetes集群前言部署规划资源规划集群规划部署负载均衡服务器部署第一个节点拉取k8s-deploy项目安装Kubernetes克隆服务器作为基准镜像部署第一个Master节点初始化集群安装Calico网络组件部署Worker节点部署第二个Master节点查看集群部署情况Troubleshooting用VMWare试验时怎么设置主机名和IP官方Yum源安装太慢,可使用阿里云Yum源服务器上不了网,可通过HTTP Proxy正向代

锐意工作室 3867

【云原生 • Kubernetes】搭建 k8s 集群(Kubeadm 方式)

kubeadm 方式搭建 k8s 集群,包含详细步骤及解析。

商务合作 | 共同学习 | 携手共进 7万+

kubeadm 安装k8s高可用集群 (3master)

kubeadm 安装k8s高可用集群 (3master) 介绍 生产环境需要高可用的k8s集群 我们将 APIserver ETCD 核心组件多节点部署进行负载均衡达到高可用方案 架构 etcd 高可用安装 apiserver 负载方式nginx+keepalived 资源准备 hostname 节点类型 系统版本 配置 预配置IP地址 master1 master centos7.8 2c4g 192.168.21.128 master2 master centos7.8 2c

二立的博客 2966

kubernetes(K8S)学习(一):K8S集群搭建(1 master 2 worker)

本文详细介绍了使用kubeadm搭建1个master节点和2个worker节点组成的Kubernetes集群。主要内容包括:环境准备(统一Docker 18.09.0和K8S v1.14.0版本,系统要求CentOS 7+)、3台虚拟机配置(2核2GB内存)、网络互通验证;集群搭建步骤:更新yum、安装依赖包、配置Docker仓库和镜像加速器。所有操作需在3台机器上执行,为后续K8S组件安装奠定基础。

꯭ 瞎꯭扯꯭蛋꯭的博客 3064

【kubernetes】k8s高可用集群搭建(三主三从)

【kubernetes】k8s高可用集群搭建(三主三从)

共产主义接班人 1万+

使用kubeadm部署高可用的k8s集群

使用kubeadm部署k8s高可用集群 部署k8s集群方式有很多种,包括二进制文件部署,kubespray,rancher,kubeadm等等。 纯粹的二进制文件部署非常复杂和麻烦,而使用良好的工具来达到“偷懒”的目的是我们程序员的天性,因此自动化部署工具才是我们的首选。 关于部署工具的选用逻辑也很简单,kubeadm是官方提供和推荐的,因此可以认为kubeadm是可用而且可靠的,文档也足够全面,...

momoudong的博客 5554

Kubernetes(K8s)使用 kubeadm 方式搭建多 master 高可用 K8s 集群

以上就是搭建高可用k8s集群全部的内容,步骤讲解得非常详细,比较适合初学者学习,我们一起共同学习,共同进步。httpshttpshttpshttpshttpshttpshttpshttps。

养歌的博客 1万+

Kubeadm安装K8S单master节点集群

本文主要讲解通过kubeadm安装k8s集群环境所需要的操作有哪些,例如集群环境的规划、机器的配置、初始化集群、扩容集群添加节点,网络组建calico的安装以及验证等。

JIAWAP的专栏 1692

K8S集群kubeadm搭建(多master单node)

架构图: k8s环境规划: podSubnet(pod网段) 10.244.0.0/16 serviceSubnet(serivce网段) 10.10.0.0/16 实验环境规划: 操作系统: Centos7.9 配置: 2G内存/4vCPU/40G磁盘 网络:NAT模式 开启虚拟机的虚拟化 集群ip以及常见的需要安装的组件 常见的两种安装方式: kubeadm以及二进制安装 目前是按照kubeadm安装#修改/etc/sysconfig/network-scrips/ifcfg-ens33文件

Aaron.无剑 2505

kubeadm搭建生产环境的单master节点的k8s集群

使用kubeadm快速搭建生产环境的单master节点的k8s集群

qq_38882630的博客 2745

告别眼疲劳!保姆级教程:给你的SecureCRT v8.7.2换上护眼高亮配色(附透明背景设置)

本文提供了一份详细的SecureCRT v8.7.2护眼高亮配色方案教程,帮助程序员缓解眼疲劳问题。通过科学调整配色方案、动态环境自适应设置以及字体渲染优化,显著提升终端使用的舒适度和工作效率。特别推荐Solarized Dark和One Dark Pro医学适配版配色方案,适合长时间编码工作。

weixin_42549496的博客 353
上一篇: Kubeadm搭建高可用K8S(一)环境准备
下一篇: Kubeadm搭建高可用K8S(三)搭建worker节点和网络插件
AlgebraFly
博客等级 码龄9年 260粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlgebraFly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值