当前位置: 首页 > news >正文

kubernetes (K8S)集群安装部署

一. 基于阿里云的ECS环境搭建,使用了三台服务器用来安装搭建集群:

 

主机 ip 配置
master 192.168.102.110 8核,16g内存,500g SSD
node1 192.168.102.111 8核,16g内存,500g SSD
node2 192.168.102.112 8核,16g内存,500g SSD

1.修改HOSTS,并做SSH免密登录配置:

     vim /etc/hosts

     192.168.102.110  k8s-master

     192.168.102.111  k8s-node1

     192.168.102.112  k8s-node2

2.配置免密登陆,三台服务器都要配置互相免密登陆

   ssh-copy-id -p22 root@k8s-master

   ssh-copy-id -p22 root@k8s-node1

    ssh-copy-id -p22 root@k8s-node2

3.K8S安装过程中需要关闭SWAP分区,所有服务器节点上都需要关闭

    swapoff -a    注:临时关闭

4.所有节点修改内核参数

    vim /etc/profile  

         modprobe br_netfilter

   修改完成重新加载配置:source /etc/profile

 vim /etc/sysctl.d/k8s.conf

     net.bridge.bridge-nf-call-ip6tables = 1

     net.bridge.bridge-nf-call-iptables  =  1

重新加载配置:sysctl -p /etc/sysctl.d/k8s.conf

5. 如果你是物理机或内部云网络可能还需要安装ntpdate服务用来保证集群间服务器时间的一致性,我这里用的阿里云就不需要安装ntpdate服务,阿里云自有的ntpdate会完成时间同步

6. 在所有服务器的节点上配置k8s的yum源,我这里使用的全是阿里云的

   vim /etc/yum.repos.d/kubernetes.repo

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0

二.  以上配置完成后需要先完成docker的安装

1.如果服务器上有自带的docker,那就需要先卸载掉

yum remove docker \  

docker-client \

docker-client-latest \

docker-common \

docker-latest \

docker-latest-logrotate \

docker-logrotate

2. 配置DOCKER的yum仓库,所有节点都需要配置 

yum install -y yum-utils device-mapper-persistent-data lvm2
Dokcer镜像源换成阿里云的,默认的国外源速度太慢:
yum-config-manager  --add-repo  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3.配置完成后所有节点安装docker 

    yum install docker-ce-20.10.9-3.el7 docker-ce-cli-20.10.9-3.el7 docker-compose-plugin containerd.io

4.安装完成后启动docker,并设置为开机自启动

      #启动docker

      systemctl start docker
     #设置开机自启
      systemctl enable docker
     #验证安装
      docker -v

5.Docker安装完成后,配置上阿里云镜像的加速器,阿里云的加速地址只支持阿里云的产品使用,使用介绍:https://help.aliyun.com/zh/acr/user-guide/accelerate-the-pulls-of-docker-official-images?spm=a2c4g.11186623.help-menu-60716.d_2_14_0.147f62466GFIBl&scm=20140722.H_60750._.OR_help-T_cn~zh-V_1

vim /etc/docker/daemon.json

{
"registry-mirrors": ["https://p59n3y39.mirror.aliyuncs.com"]
}

重新加载并重启
sudo systemctl daemon-reload
sudo systemctl restart docke

 

三. Docker安装完成后,开始安装K8S

1.K8S主要有 kubeadm、kubelet、kubectl 这三大组件,所有节点都需要执行以下的安装

        kubeadm:初始化k8s集群

        kubelet: 在集群的每个节点上用来启动 Pod 和容器

        kubectl:k8s集群通信的命令行工具,查看,创建,更新和删除各种资源

2. 执行安装,会根据镜像源中的资源安装最新的版本

     yum install -y kubelet*   kubeadm*   kubectl*

3. 安装完成后所有节点设置开机自启动

     systemctl enable kubelet

4. 将主节点的集群HOSTS解析添加到所有服务器上

     192.168.102.110  cluster-endpoint

5. 在Master节点上对K8S集群进行初始化操作

kubeadm init \

--apiserver-advertise-address=192.168.102.110 \

--control-plane-endpoint=cluster-endpoint \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version v1.23.17 \
--service-cidr=10.10.0.0/12 \
--pod-network-cidr=172.1.0.0/16

初始化执行后出现以下提示说明初始化成功:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

6. 在别外两台服务器上执行初始化生成的添加命令,将两个 k8snode节点加入到集群中

    kubeadm join cluster-endpoint:6443 --token e8enii.joiejbxxxxxxxxx \

                   -discovery-token-ca-cert-hash sha256:3369575651862xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

也可以用命令再次自定义生成token :

kubeadm token create --print-join-command
 7. 安装Calico网络插件,所有节点上都需要安装
     下载calico.yml文件,并保存到本地,下载地址:https://docs.projectcalico.org
     vim /opt/calico.yml   在文件中查找到 name: CALICO_IPV4POOL_CIDR将网络地址修改为172.1.0.0/16  如下所示
      - name: CALICO_IPV4POOL_CIDR
        value: "172.20.0.0/16"
 8. 用kubectl进行安装;
        kubectl apply -f calico.yaml
安装完成后可以用  kubectl get pod -A | grep calico  检查一下安装是否成功。
 
四. 安装 kuboard图形化工具,只在master节点安装既可
       下载kuboard:   wget  https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
         安装kuboard: kubectl apply -f kuboard-v3.yaml
安装完成后可以使用 kubectl get pods -n kuboard  查看一下安装状态
http://www.vanclimg.com/news/454.html

相关文章:

  • PyTorch边界感知上下文神经网络BA-Net在医学图像分割中的应用
  • Qt注册类对象单例与单类型区别
  • 学习笔记:RMAN CATALOG命令手动注册磁带库中的备份片
  • 《构建之法》读后感
  • 达梦增加备份作业 报错-3503 无效的函数参数
  • 读书笔记:Oracle共享池:数据库内存管理的心脏
  • Python类的定义_类和对象的关系_对象的内存模型
  • Python对2028奥运奖牌预测分析:贝叶斯推断、梯度提升机GBM、时间序列、随机森林、二元分类教练效应量化研究
  • 学习笔记:MySQL:Innodb统计信息参数
  • 库卡气体保护焊机器人省气的方法
  • 物联网技术对于农业的运营都起到了哪些作用
  • [07.28学习笔记] Self-attetion Cross-attetion - Luna
  • 【LLM】Transformer各模块PyTorch简单实现Demo
  • 如何在FastAPI中玩转Schema版本管理和灰度发布?
  • C++ Qt开发QUdpSocket网络通信组件
  • fhq-treap学习笔记
  • 7/28
  • Bruce Momjian 深圳 meetup 回顾
  • 贪心
  • sqlite3 本地数据库可视化工具
  • [题解] P5743 【深基7.习8】猴子吃桃
  • gds 格式文档
  • 微服务学习-02-微服务技术栈整理
  • JUC线程池: ScheduledThreadPoolExecutor详解
  • [题解] P5735 【深基7.例1】距离函数
  • uv命令怎么安装并且让gitlab-runner用户可以执行
  • NRF54L15 TAMPC — Tamper controller 作用介绍
  • 线上故障的排查清单,运维小哥拿走不谢!
  • NRF54L15 AAR作用介绍
  • NRF54L15 CCM功能