Kubernetes kubeadm部署

一、Docker的安装与设置

1. 安装Docker

安装yum-utils,并更新docker稳定版的源

sudo yum install -y yum-utils
sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker

2. 配置Docker

设置Docker仓库镜像

  • 阿里云镜像加速器 (推荐, 需要注册用户)

    注册地址: https://cr.console.aliyun.com/cn/instances/mirrors

  • DaoCloud镜像加速器

    加速器地址: https://f1361db2.m.daocloud.io

  • 七牛云镜像加速器

    加速器地址: https://reg-mirror.qiniu.com

设置Docker启动方式为systemd

cat <<EOF > /etc/docker/daemon.json
{"registry-mirrors": ["https://f644ijwu.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2"
}
EOF

或者

vim /etc/docker/daemon.json
{"registry-mirrors": ["https://f644ijwu.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2"
}

重启docker

sudo systemctl daemon-reload
sudo systemctl restart docker

3. Kubernetes下载

Kubernetes 是一个开源系统,用于容器化应用的自动部署、扩缩和管理。它将构成应用的容器按逻辑单位进行分组以便于管理和发现。

  • Debian / Ubuntu
apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
  • CentOS / RHEL / Fedora
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet

4. kubeadm config

kubeadm config upload from-file:由配置文件上传到集群中生成 ConfigMap。
kubeadm config upload from-flags:由配置参数生成 ConfigMap。
kubeadm config view:查看当前集群中的配置值。
kubeadm config print init-defaults:输出 kubeadm init 默认参数文件的内容。
kubeadm config print join-defaults:输出 kubeadm join 默认参数文件的内容。
kubeadm config migrate:在新旧版本之间进行配置转换。
kubeadm config images list:列出所需的镜像列表。
kubeadm config images pull:拉取镜像到本地。

获取默认的初始化参数文件

kubeadm config print init-defaults > init.default.yaml

kuberbetes master 初始化文件,将下面的内容保存为init-config.yaml备用。

cat << EOF > ./init-config.yaml
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
imageRepository: registry.aliyuncs.com/google_containers
kubernetesVersion: v1.22.0
networking:podSubnet: "192.168.0.0/16"
EOF

vim ./init-config.yaml
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
imageRepository: registry.aliyuncs.com/google_containers
kubernetesVersion: v1.22.0
networking:podSubnet: "192.168.0.0/16"

目前我找到了如下镜像库:

  • googlecontainersmirror

  • registry.aliyuncs.com/google_containers

5. 镜像拉取

通过kubeadm config images pull 拉取进行

kubeadm config images pull --config=init-config.yaml

镜像拉取过程中coredns的tag会有异常

docker image pull registry.aliyuncs.com/google_containers/coredns:1.8.4
docker tag registry.aliyuncs.com/google_containers/coredns:1.8.4 registry.aliyuncs.com/google_containers/coredns:v1.8.4

6. 运行kubeadm init 命令安装Master

进行master初始化

kubeadm init --config=init-config.yaml

配置.kube

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

这样就在Master上安装了Kubernetes,但在集群内还是没有可用的工作Node,并缺乏对容器网络的配置。
这里需要注意kubeadm init命令执行完成后的最后几行提示信息,其中包含加入节点的指令(kubeadm join)和所需的Token。
此时可以用kubectl命令验证在ConfigMap:

kubectl get -A configmap

可以看到其中生成了名为kubeadm-config的ConfigMap对象。

7. 安装Node,加入集群

在新机器中重复步骤1-5。

  • 安装kubeadm和相关工具:
yum install kubelet kubeadm --disableexcludes=kubernetes
systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet
  • 为kubeadm命令生成配置文件。创建文件join-config.yaml,内容如下:
apiVersion: kubeadm.k8s.io/v1beta3
kind: JoinConfiguration
discovery:bootstrapToken:apiServerEndpoint: xx.xx.xx.xx:6443token: xxxxxunsafeSkipCAVerification: truetlsBootstrapToken: xxxxx
  • 执行kubeadm join命令,将本Node加入集群:
kubeadm join --config=join-config.yaml
  • 或者直接执行master中的输出
kubeadm join 172.24.131.78:6443 --token ghhetg.8v3lhwc9nj9qjp3h \--discovery-token-ca-cert-hash sha256:e9e42677c831d12d594bce6a9ae9b3b5b20fda8d1afa22534099e5fceda93295

8. CNI网络配置

执行kubectl get nodes命令,会发现Kubernetes提示Master为NotReady状态,这是因为还没有安装CNI网络插件:

  • 使用 Kubernetes API 数据存储安装 Calico,50 个或更少节点
  1. 下载 Kubernetes API 数据存储的 Calico 网络清单。
curl https://docs.projectcalico.org/manifests/calico.yaml -O
  1. 如果您使用的是 pod CIDR 192.168.0.0/16,请跳到下一步。如果您在 kubeadm 中使用不同的 pod CIDR,则无需更改 - Calico 将根据运行配置自动检测 CIDR。对于其他平台,请确保取消对清单中的 CALICO_IPV4POOL_CIDR 变量的注释,并将其设置为与您选择的 pod CIDR 相同的值。

  2. 根据需要自定义清单。

  3. 使用以下命令应用清单。

kubectl apply -f calico.yaml
  • 或者使用weave网络插件
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

Kubernetes kubeadm部署相关推荐

  1. 云原生|kubernetes|kubeadm部署的集群的100年证书

    前言: 首先,先看看minikube这样的开发或者测试使用的kubernetes集群的证书时间: [root@node3 ~]# kubeadm certs check-expiration [che ...

  2. kubeadm部署kubernetes

    kubeadm部署kubernetes kubeadm 部署方式介绍 单master节点环境准备 卸载kubernetes kubeadm init命令文档 kubeadm 部署方式介绍 1.使用ku ...

  3. 【CentOS】利用Kubeadm部署Kubernetes (K8s)

    [CentOS]利用Kubeadm部署Kubernetes (K8s)[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体实验流程 1 系统准 ...

  4. Kubernetes — 使用 kubeadm 部署高可用集群

    目录 文章目录 目录 Kubernetes 在生产环境中架构 高可用集群部署拓扑 1.网络代理配置 2.Load Balancer 环境准备 3.Kubernetes Cluster 环境准备 安装 ...

  5. Kubeadm 部署企业级高可用Kubernetes(适用于ECS)

    Kubeadm 部署企业级高可用Kubernetes1.16(适用ECS) 1.准备工作 介绍 kubernetes 安装有多种选择,本文档教程根据官方教程和企业云上运行的业务场景实践而部署,每个插件 ...

  6. 【完整记录】使用kubeadm部署kubernetes集群踩坑记录及解决方案

    文章目录 搭建集群过程中遇到的问题及解决方案 1. 现有网上的kubernetes集群搭建教程中的kubeadm配置文件版本过老导致出现以下报错: 2. kubeadm init过程中pull镜像超时 ...

  7. kubeadm部署kubernetes高可用(三主三从)

    一. 1.准备 准备6台机器,操作系统CentOS Linux release 7.9.2009 (Core) 硬件配置:16C 32G 硬盘1.6T 集群中所有机器之间网络互通,且可访问外网. 注意 ...

  8. Kubernetes 一键部署利器:kubeadm

    文章目录 集群部署痛点 kubeadm 的工作原理 kubeadm init 的工作流程 kubeadm join 的工作流程 kubeadm 的部署配置参数 集群部署痛点 Kubernetes 的部 ...

  9. Kubernetes一键部署利器:kubeadm

    要真正发挥容器技术的实力,你就不能仅仅局限于对 Linux 容器本身的钻研和使用. 这些知识更适合作为你的技术储备,以便在需要的时候可以帮你更快的定位问题,并解决问题. 而更深入的学习容器技术的关键在 ...

最新文章

  1. python3.6运行界面_python3.6 +tkinter GUI编程 实现界面化的文本处理工具
  2. 人会成为虚拟现实中的“机器人代码”吗?
  3. 开始研究JavaScript
  4. AntiSamy测试
  5. python 中的__getattr__和__setattr__
  6. C语言之函数指针和函数的首地址
  7. REST:使用Controller端点?
  8. PHP 免费视频教程
  9. 查询数据库里所有表名和字段名的语句
  10. cookie helper.php,CookieHelper cook crud 工具类
  11. 1.线性回归、梯度下降法、岭回归、LASSO回归、最小二乘法
  12. 非极大值抑制(Non-Maximum Suppression)
  13. 做爬虫的一些技术观点-第450期
  14. 基于 USB 传输的针式打印机驱动程序开发
  15. QLineEdit控件添加提示语
  16. 计算机网络技术实训室管理制度,计算机实验室管理制度
  17. 关闭防火墙linux出错,linux关闭防火墙【应对办法】
  18. 轻松实现网页中通过链接跳转到QQ聊天界面,通过链接加QQ群,自动打开聊天对话框等等,包含电脑版和手机版的实现,示例部分Android和iOS的代码
  19. 英语口语275之每日十句口语
  20. 使用Tomcat插件实现WEB项目热部署

热门文章

  1. Python小技 不到100行代码制作各种证件照
  2. 台式计算机关闭屏幕快捷键,多种电脑屏幕关闭方法推荐
  3. 114.114.114.114和8.8.8.8,哪个DNS好?
  4. 实验十二 HTTP 协议分析实验
  5. SylixOS这个操作系统怎么样?
  6. Talib中文文档(二):Momentum Indicators 动量指标
  7. win2003 服务器设置 完全版 作者:冰盾防火墙
  8. macbook 打开以后没有声音,重启以后又好了的解决方法
  9. Android SVG图片解析Demo
  10. lisp语言cond和if套用_方案 – if和cond之间的区别?