我这里准备三台本地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. 《HelloGitHub》第 83 期

    兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...

  2. 内容分发网络 CDN

    介绍 CDN 内容分发网络(英语:Content Delivery Network 或 Content Distribution Network,缩写:CDN)是建立并覆盖在承载网上,由不同区域的服务 ...

  3. P5318 【深基18.例3】查找文献题解(链式前向星)

    P5318 [深基18.例3]查找文献题解 用head记录这一起点的最后一条边, next记录这一起点的上一条边. 注意要按照参考文献的倒叙排序(要按顺序看,而链式前向星是逆着来的,也就是为什么最简单 ...

  4. Linux常用的性能分析

    参考文档:https://www.runoob.com/w3cnote/linux-common-command-2.html 一.ps -aux ps -aux ps -ef -a:所有进程. -u ...

  5. win10bug可导致系统崩溃

    1.使用浏览器访问访问路径:\\.\globalroot\device\condrv\kernelconnect会立刻导致系统崩溃.会影响Windows10 1709及以上版本 2.使用以下代码保存成 ...

  6. Deer_GF之【AssetsHotfix】和【AssetsNative】文件夹的区别

    Hi,今天介绍一下Deer_Gf里的[AssetsHotfix]和[AssetsNative]文件夹的区别:       框架介绍请移步[Deer_GF之框架介绍] 一.[AssetsHotfix] ...

  7. 微信JS-SDK自定义分享接入的注意点

    微信文档 ,https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html, 在用微信自定义分享,遇到了几个坑,记录一 ...

  8. HttpClient 提交 JSON数据

    常见数据格式 application/x-www-form-urlencoded 这也是最常见的 POST 提交数据的方式,一般是用来提交表单. multipart/form-data 上传文件时通常 ...

  9. Excel工具(批量生成txt)

    Sub txt() Dim i, j, arr(), brr(), myRow, myCol arr = Sheet1.UsedRange myRow = UBound(arr, 1) myCol = ...

  10. js-垃圾回收

    js 是垃圾回收的语言,也就是执行环境负责在代码执行时管理内存.1. 标记清理 垃圾回收程序时,会标记内存中存储的所有变量,然后会将所有在上下文中的变量,以及被在上下文中的变量引用的变量标记去掉.在此 ...