我这里准备三台本地vmware虚拟机,版本号centos7.9,一台master节点,一台node1,一台node2

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

一、初始化虚拟机环境(三台虚拟机都执行)

[root@k8s ~]# yum update #更新所有本地包,操作更新完成后建议快照一下。

二、操作所有节点

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
 
# 关闭 selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时
 
# 关闭 swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
 
# 根据规划设置主机名
vi /etc/hosts
192.168.10.1 k8s-master
192.168.10.2 k8s-node1
192.168.10.3 k8s-node2

# 将桥接的 IPv4 流量传递到 iptables 的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 生效
 
# 时间同步
yum install ntpdate -y
ntpdate time.windows.com

三、安装docker(三台虚拟机都执行)

1.wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
2.yum -y install docker-ce
3.systemctl enable docker && systemctl start docker
 
4.配置镜像下载加速器:
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
阿良教育:http://www.aliangedu.cn
}
EOF
5.systemctl restart docker #重启docker
6.docker info #查看docker详情
 

四、安装cri-dockerd(三台虚拟机都执行)

1. wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.5/cri-dockerd-0.2.5-3.el7.x86_64.rpm
2. rpm -ivh cri-dockerd-0.2.5-3.el7.x86_64.rpm
3. 指定依赖镜像地址:
    vi /usr/lib/systemd/system/cri-docker.service ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
4. systemctl daemon-reload
5. systemctl enable cri-docker && systemctl start cri-docker
 

五、添加阿里云 YUM 软件源(三台虚拟机都执行)

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

六、安装 kubeadm,kubelet 和 kubectl(三台虚拟机都执行)

由于版本更新频繁,这里指定版本号部署:
1. yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0
2. systemctl enable kubelet
 

七、 部署 Kubernetes Master (master节点执行)

1. 在 192.168.10.1(Master)执行。
   kubeadm init \
   --apiserver-advertise-address=192.168.10.1 \
   --image-repository registry.aliyuncs.com/google_containers \
   --kubernetes-version v1.25.0 \
   --service-cidr=10.96.0.0/12 \
   --pod-network-cidr=10.244.0.0/16 \
   --cri-socket=unix:///var/run/cri-dockerd.sock \
   --ignore-preflight-errors=all
 
注释:
  • --apiserver-advertise-address 集群通告地址
  • --image-repository 由于默认拉取镜像地址 k8s.gcr.io 国内无法访问,这里指定阿里云镜像仓库地址
  • --kubernetes-version K8s 版本,与上面安装的一致阿良教育:http://www.aliangedu.cn
  • --service-cidr 集群内部虚拟网络,Pod 统一访问入口
  • --pod-network-cidr Pod 网络,与下面部署的 CNI 网络组件 yaml 中保持一致
  • --cri-socket 指定 cri-dockerd 接口,如果是 containerd 则使用--cri-socket unix:///run/containerd/containerd.sock
2. 初始化完成后,最后会输出一个 join 命令,先记住,下面用。
    拷贝 kubectl 使用的连接 k8s 认证文件到默认路径:
    1)mkdir -p $HOME/.kube
    2)sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    3)sudo chown $(id -u):$(id -g) $HOME/.kube/config
    查看工作节点:
    4)kubectl get nodes
         NAME STATUS ROLES AGE VERSION
         k8s-master NotReady control-plane,master 20s v1.25.0
注:由于网络插件还没有部署,还没有准备就绪 NotReady,先继续参考资料:
  https://kubernetes.io/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file
  https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#initializing-your-control-plane-node

八、加入 Kubernetes Node (node1,node2执行)

在 192.168.10.2/3(Node)执行。
向集群添加新节点,执行在 kubeadm init 输出的 kubeadm join 命令并手动加上 --cri-socket=unix:///var/run/cri-dockerd.sock:
1. kubeadm join 192.168.10.1:6443 --token 7gqt13.kncw9hg5085iwclx \ --discovery-token-ca-cert-hash sha256:66fbfcf18649a5841474c2dc4b9ff90c02fc05de0798ed690e1754437be35a01 --cri-socket=unix:///var/run/cri-dockerd.sock
  默认 token 有效期为 24 小时,当过期之后,该 token 就不可用了。这时就需要重新创建 token,
  可以直接使用命令快捷生成:阿良教育:http://www.aliangedu.cn。kubeadm token create --print-join-command 参考资料:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-join/

九、 部署容器网络(CNI)(master节点执行)

Calico 是一个纯三层的数据中心网络方案,是目前 Kubernetes 主流的网络方案。下载 YAML:
1. wget https://docs.projectcalico.org/manifests/calico.yaml
  下载完后还需要修改里面定义 Pod 网络(CALICO_IPV4POOL_CIDR),与前面 kubeadm init 的 --pod-network-cidr 指定的一样。
  修改完后文件后,部署:
2. kubectl apply -f calico.yaml
3. kubectl get pods -n kube-system
  等 Calico Pod 都 Running,节点也会准备就绪。
  注:以后所有 yaml 文件都只在 Master 节点执行。
  安装目录:/etc/kubernetes/
  组件配置文件目录:/etc/kubernetes/manifests/
  参考资料:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network

十、 部署 Dashboard(master节点执行)

Dashboard 是官方提供的一个 UI,可用于基本管理 K8s 资源。YAML 下载地址:
1. https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
课件中文件名是:kubernetes-dashboard.yaml
默认 Dashboard 只能集群内部访问,修改 Service 为 NodePort 类型,暴露到外部:阿良教育:http://www.aliangedu.cn
1. vi recommended.yaml
  ...
  kind: Service
  apiVersion: v1
  metadata:
  labels:
  k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
  spec:
  ports:
  - port: 443
  targetPort: 8443
  nodePort: 30001
  selector:
  k8s-app: kubernetes-dashboard
  type: NodePort
  ...
2. kubectl apply -f recommended.yaml
3. kubectl get pods -n kubernetes-dashboard

十一、部署完成访问地址

访问地址:https://IP:30001
 

本地部署一套k8s集群的更多相关文章

  1. 使用kubeadm快速部署一套K8S集群

    一.Kubernetes概述 1.1 Kubernetes是什么 Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S. K8S用于容器化应用程序的 ...

  2. 在node节点部署kubectl管理k8s集群

    感谢!原文链接:https://blog.csdn.net/sinat_35930259/article/details/79994078 kubectl是k8s的客户端程序,也是k8s的命令行工具, ...

  3. 快速搭建一套k8s集群环境

    参考官网 kubeadm是官方提供的快速搭建k8s集群的开源工具,对于非运维人员学习k8s,kubeadm方式安装相对更简单. kubeadm创建一个集群:https://kubernetes.io/ ...

  4. Kubeadm部署高可用K8S集群

    一 基础环境 1.1 资源 节点名称 ip地址 VIP 192.168.12.150 master01 192.168.12.48 master02 192.168.12.242 master03 1 ...

  5. Rancher 2.2.2 - HA 部署高可用k8s集群

    对于生产环境,需以高可用的配置安装 Rancher,确保用户始终可以访问 Rancher Server.当安装在Kubernetes集群中时,Rancher将与集群的 etcd 集成,并利用Kuber ...

  6. kubeadm部署高可用K8S集群(v1.14.2)

    1. 简介 测试环境Kubernetes 1.14.2版本高可用搭建文档,搭建方式为kubeadm 2. 服务器版本和架构信息 系统版本:CentOS Linux release 7.6.1810 ( ...

  7. kubespray -- 快速部署高可用k8s集群 + 扩容节点 scale.yaml

    主机 系统版本      配置       ip Mater.Node,ansible CentOS 7.2                                             4 ...

  8. 使用Rancher Server部署本地多节点K8S集群

    当我第一次开始我的Kubernetes之旅时,我一直在寻找一种设置本地部署环境的方式.很多人常常会使用minikube或microk8s,这两者非常适合新手在单节点集群环境下进行操作.但当我已经了解了 ...

  9. Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务

         前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行.当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for deskto ...

  10. 企业运维实践-还不会部署高可用的kubernetes集群?使用kubeadm方式安装高可用k8s集群v1.23.7

    关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 文章目录: 0x00 前言简述 ...

随机推荐

  1. JZOJ 3207.Orthogonal Anagram

    \(\text{Problem}\) 给出一个字符串,求经过重新排列的另一个字典序最小的字符串,满足:相同的位置上 原串与结果串的字符不同.不存在则输出空串. \(\text{Solution}\) ...

  2. 精华推荐 |【算法数据结构专题】「延时队列算法」史上非常详细分析和介绍如何通过时间轮(TimingWheel)实现延时队列的原理指南

    时间轮的介绍 时间轮(TimeWheel)是一种实现延迟功能(定时器)的精妙的高级算法,其算法应用范围非常广泛,在Java开发过程中常用的Dubbo.Netty.Akka.Quartz.ZooKeep ...

  3. CCRD_TOC_2007年11月_总第12期

    中信国健临床通讯 2007年11月, 总第12期 目 录   类风湿关节炎 1 MRI证实Etanercept治疗的RA患者中尽管关节炎症还在持续但是骨侵蚀进展停止 Dohn UM, et al. C ...

  4. 02#Web 实战:实现树形控件

    前言 这是一篇个人练习 Web 前端各种常见的控件.组件的实战系列文章.本篇文章将介绍个人通过 JQuery + 无序列表 + CSS 动画完成一个简易的树形控件. 最终实现的效果是: 这样结构比较复 ...

  5. vitis笔记1

    安装vitis2021.1 配置环境 添加环境变量 下载包 install 注意:切换到<install_dir>/Vitis//scripts/installLibs.sh,执行指令时候 ...

  6. Java面向对象之封装详解

    封装详解 封装 该露的露,该藏的藏 1.我们程序设计要追求"高内聚.低耦合".高内聚:类的内部数据操作细节自己完成,不允许外部干涉:低耦合:仅暴露少量的方法给外部使用. 封装(数据 ...

  7. linux rpm 命令

    # 产看软件包信息[root@devops201 k8s_install]# rpm -qi yum-utilsName : yum-utilsVersion : 1.1.31Release : 54 ...

  8. SqlServer基礎

    REVERSE(欄位) 反轉 CHARINDEX(篩選字符,欄位,[start]) 例:CHARINDEX('/',ProImage,13) 從13位查詢/所在索引 SUBSTRING(欄位,star ...

  9. Telerik GridView ----Pdf

    ExportToPDF exporter = new ExportToPDF(this.radGridView1); exporter.FileExtension = "pdf"; ...

  10. JDK下载很慢

    方法1.直接百度jdk镜像,搜到华为镜像:https://repo.huaweicloud.com/java/jdk/ 方法2.到官网拷贝下载的url:https://download.oracle. ...