文章目录

  • 前言
  • 安装master节点
  • 一、安装docker
  • 二、基本环境设置
  • 三、安装kubelet、kubeadm、kubectl
  • 四、初始化master节点
    • 4.1 下载镜像
    • 4.2 初始化
    • 4.3初始化成功
    • 4.4
  • 五、安装Calico网络插件
  • worker节点
    • 一、安装docker (同master节点)
    • 二、基本环境设置 (同master节点)
    • 三、安装kubelet、kubeadm、kubectl (同master节点)
    • 四、执行master初始化之后的命令

前言

使用 kubeadm 创建集群
kubeadm

Kubeadm 是一个K8s 部署工具,提供kubeadm init 和kubeadm join,用于快速部署Kubernetes 集群。

使用的是3台阿里云ecs云服务器,系统是CentOS 7.6,配置是2核4G。

k8s的来源,部署方式的演变

  1. 传统部署

所有应用 部署在一台物理机器上,每个应用都要占用资源,容易相互影响

  1. 虚拟化部署

在一台物理机上划分多个虚拟机,每个虚拟机上都可以运行程序,互不影响,缺点是每台虚拟机都要有操作系统,有可能操作系统所占资源比部署的程序还多

  1. 容器化部署

解决了虚拟化部署的弊端,共用一套操作系统,应用程序运行在容器中,比如docker。如果某个容器挂了,如何快速重启一个容器,或者某一时刻访问量大增,如何新增一个容器呢,这就是k8s要解决的问题。简单来说,k8s就是一个管理容器集合的工具,它的工作就是对容器进行编排。


安装master节点

一、安装docker

k8s要管理容器,首先容器要有可执行的环境,比如docker,假设有三台服务器,一个master节点,两个node节点,这三台服务器都要安装docker。

sudo yum remove docker*
sudo yum install -y yum-utils#配置docker的yum地址
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#安装指定版本
sudo yum install -y docker-ce-19.03.10 docker-ce-cli-19.03.10 containerd.io#    启动&开机启动docker
systemctl enable docker --now# docker加速配置
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

二、基本环境设置

#设置每个机器自己的hostname
hostnamectl set-hostname xxx# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config#关闭swap
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab#允许 iptables 检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOFcat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system

三、安装kubelet、kubeadm、kubectl

#配置k8s的yum源地址,这里配置的是阿里云的
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF#安装 kubelet,kubeadm,kubectl
sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9#启动kubelet
sudo systemctl enable --now kubelet#所有机器配置master域名
echo "自己服务器的内网ip  k8s-master" >> /etc/hosts

centos查看内网ip: ip a

四、初始化master节点

4.1 下载镜像

sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(kube-apiserver:v1.20.9kube-controller-manager:v1.20.9kube-scheduler:v1.20.9kube-proxy:v1.20.9pause:3.2etcd:3.4.13-0coredns:1.7.0
)
for imageName in ${images[@]};dodocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
EOF
# 添加可执行权限
chmod +x ./images.sh && ./images.sh

4.2 初始化

kubeadm init \
--apiserver-advertise-address=172.31.0.4 \ #master节点的内网ip
--control-plane-endpoint=k8s-master \ #master节点的hostname
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \ #k8s的aliyun镜像
--kubernetes-version v1.20.9 \ # 版本
--service-cidr=10.96.0.0/16 \ #不懂不要改
--pod-network-cidr=192.168.0.0/16 #不懂不要改

4.3初始化成功

保存下来这些日志

Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/#使节点成为master节点,多主模式下用
You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:kubeadm join k8s-master:6443 --token 7sb9v9.wz6f3vm6vi1tdgcq \--discovery-token-ca-cert-hash sha256:2433d488be14c479d24ae6d5790b1974712f970b95b83d46dfc9746eb9067486 \--control-plane# 使节点成为worker节点
Then you can join any number of worker nodes by running the following on each as root:kubeadm join k8s-master:6443 --token 7sb9v9.wz6f3vm6vi1tdgcq \--discovery-token-ca-cert-hash sha256:2433d488be14c479d24ae6d5790b1974712f970b95b83d46dfc9746eb9067486

4.4

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

有了上面的配置后,kubectl命令才能执行。

kubectl get nodes #查看节点


这里的状态是NotReady是因为没有配置网络插件。

五、安装Calico网络插件

curl https://docs.projectcalico.org/manifests/calico.yaml -Okubectl apply -f calico.yaml

master节点安装完毕,接下来安装worker节点


worker节点

一、安装docker (同master节点)

二、基本环境设置 (同master节点)

三、安装kubelet、kubeadm、kubectl (同master节点)

四、执行master初始化之后的命令

# 使节点成为worker节点
Then you can join any number of worker nodes by running the following on each as root:kubeadm join k8s-master:6443 --token 7sb9v9.wz6f3vm6vi1tdgcq \--discovery-token-ca-cert-hash sha256:2433d488be14c479d24ae6d5790b1974712f970b95b83d46dfc9746eb9067486

成功加入

#使用kubectl get nodes 命令在主节点查看

k8s集群搭建(一主多从)相关推荐

  1. K8S集群搭建:利用kubeadm构建K8S集群

    master主服务器配置 #--kubernetes-version=v1.14.1指定版本 #--pod-network-cidr=10.244.0.0/16 指定虚拟IP的范围(以10.244开头 ...

  2. k8s集群搭建普若米修斯,监控rabbitmq集群

    背景 这几天在做关于容器化部署的工作,这里做一个简单的分享,给容器内的rabbitmq集群+一个普若米修斯监控服务 先决条件: 拥有一个k8s集群(一主2从) k8s集群上已经搭建了rabbitmq集 ...

  3. MySQL集群搭建--多主模式

    MySQL集群搭建--多主模式 本文使用的是Galera搭建的MYSQL集群,实现的是每个MYSQL都是主服务器,不存在主从之分. 环境: 三台mysql5.7服务器. 安装mysql集群: 安装前准 ...

  4. 2019最新k8s集群搭建教程 (centos k8s 搭建)

    2019-k8s-centos 2019最新k8s集群搭建教程 (centos k8s 搭建) 网上全是要么过时的,要么残缺的,大多数都是2016年,2017年的文档,照着尝试了N次,各种卸了重装,最 ...

  5. 记一次在K8s集群搭建的MySQL主从无法正常启动之数据迁移恢复实践

    本章目录:记一次在K8s集群搭建的MySQL主从无法正常启动之数据迁移恢复实践 描述:在K8s集群中里利用bitnami提供的mysql:5.7.32-debian-10-r61镜像并利用helm进行 ...

  6. k8s集群搭建-1mater2node

    k8s安装以及安装过程中遇到的问题 背景:因为公司需要针对operator进行开发,Operator 是 Kubernetes API 的客户端,充当自定义资源的的控制器.自己之前没有搞过k8s,所以 ...

  7. 本地k8s集群搭建保姆级教程(4)-安装k8s集群Dashboard

    安装k8s集群管理UI 1 Dashboard安装 1.1 参考文档 Dashboard 是基于网页的 Kubernetes 用户界面. 你可以使用 Dashboard 将容器应用部署到 Kubern ...

  8. @以最缓和的方式 解决 K8S 集群搭建过程中遇到的问题

    以最缓和的方式解决 K8S 集群搭建过程中遇到的问题 问题描述 启用 minikube dashboard之后,用 kubectl proxy 命令遇到错误 kubectl proxy error: ...

  9. K8S集群搭建(kubeadm)

    目录 引言: 一.部署规划 二.部署环境(以下操作需要每一台设备都进行相应的修改) 1.关闭防火墙等安全策略 2.修改主机名 3.映射 三.部署(每一台设备都进行相同操作) 1.安装docker(并设 ...

  10. MySQL 学习 - Replication集群 - 搭建 - 双主双从

    前言 我们这里说的是双主双从集群搭建,当然这个是看你实际业务,说白了一点 两个主节点双向同步,A集群挂掉时,B集群因为双向同步,立即可以开始工作,实现高可用 基本原理 具体流程 主库将变更写入到主库的 ...

最新文章

  1. PHP连接数据库并创建一个表
  2. Himmelblau函数优化实战
  3. 分割候选区域--FastMask: Segment Multi-scale Object Candidates in One Shot
  4. 技术向:一文读懂卷积神经网络
  5. Cache与主存的三种映射
  6. flex3提示mysql2_Flex中的MySQL管理(2)_MySQL
  7. 安装工程造价课程设计_安装工程造价课程设计的图纸-上海装修报价
  8. Java 实验5 T5
  9. Security+ 学习笔记50 取证技术
  10. 幕客网学习摘要记录1
  11. PID公式的推导过程及实现代码
  12. 华为云mysql教程_华为云+NextCloud(私人云盘搭建)
  13. 利用jsoup解析网站网页
  14. YYDS!大神自己动手制造游戏机
  15. 目标检测:YOLO V1、YOLO V2、YOLO V3 算法
  16. 编程路上,送给处于迷茫中的你和自己
  17. java 动态代理实现原理
  18. OpenFalcon线上初步部署
  19. python scipy安装失败的解决方法
  20. 雷达感应模组,自动播放讲解仪雷达应用,雷达传感器技术

热门文章

  1. biopython1_序列操作
  2. 接口测试及服务器性能压测,接口测试及服务器性能压测
  3. 容器技术Docker K8s 9 容器服务ACK应用场景
  4. 极客大学架构师训练营 毕业典礼 奉献优秀架构师升级攻略
  5. iOS网络请求架构图URL Loading System
  6. 决策树算法中导致递归返回的三种情况
  7. 矩阵论作业13,14,15讲
  8. ai背景合成_视频素材不好找!图片也能生成视频啦,AI剪辑助力原创短视频创作...
  9. Aho-Corasick
  10. 使用Caronte在CTF比赛中完成网络流量分析