k8s-kubeadm安装k8s

2023-11-01

前言

本文主要介绍Docker和Kubernetes的安装步骤,安装Docker采用官网提供的安装方式,安装k8s采用官网提供的kubeadm方式。其中镜像地址都采用了国内阿里镜像地址。

k8s集群服务器初始化(准备工作)

关闭防火墙

systemctl stop firewalld	#临时关闭
systemctl disable firewalld	#永久关闭

关闭swap分区

#临时关闭
swapoff -a		

#永久关闭
vi /etc/fstab
#注释掉/dev/mapper/centos-swap swap 整行

允许 iptables 检查桥接流量

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

cat <<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

将 SELinux 设置为 permissive 模式

# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0	#临时关闭
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config		#永久关闭

设置主机名称并在master节点添加hosts

  1. 分别修改主机名

    hostnamectl set-hostname k8smaster01
    
    hostnamectl set-hostname k8snode01
    
    hostnamectl set-hostname k8snode02
    
  2. 在master节点添加hosts,IP改为对应主机IP

    cat >> /etc/hosts << EOF
    192.168.211.142 k8smaster01
    192.168.211.143 k8snode01
    192.168.211.144 k8snode02
    EOF
    

如果集群主机日期不一致请同步日期

此处省略

参考内容

kubeadm官网安装教程

安装Docker

参考内容:Docker官网安装教程
这里选择的是centos安装

卸载旧版本

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装Dokcer安装包

sudo yum install -y yum-utils

设置镜像

#官网镜像
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    
#国内阿里镜像(推荐)
sudo yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装Docker Engine

sudo yum install docker-ce docker-ce-cli containerd.io

启动Dokcer

sudo systemctl start docker

配置 Docker 守护程序

sudo mkdir /etc/docker

cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

设置 Docker 并在启动时启用

sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker

安装 kubeadm、kubelet 和 kubectl

添加yum源

# 官网google源(不推荐)
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF

# 国内阿里源(推荐)
cat <<EOF | sudo tee /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=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF

安装 kubeadm、kubelet 和 kubectl

sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

设置kubelet开机启动

sudo systemctl enable --now kubelet

在Master节点初始化平面节点

image-repository:指定国内阿里镜像

pod-network-cidr:指定pod网络(不与主机在同一网段即可)

sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16

在Master节点使用kubectl工具

执行kubeadm init之后生成的,复制粘贴即可。

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

安装 Pod 网络附加组件

任一方式均可

flannel方式

在master中配置网络映射

#因网站被墙,需要在/etc/hosts文件添加映射
cat >> /etc/hosts << EOF
199.232.68.133 raw.githubusercontent.com
EOF

在master中下载kube-flannel.yml文件

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

下载flannel docker镜像

  1. 访问:https://github.com/flannel-io/flannel/releases

    下载flannel

  2. 下载对应版本flannel docker镜像,如flanneld-v0.14.0-amd64.docker,并上传到3台服务器。

导入docker仓库

3台机器把flannel镜像导入docker仓库

docker load < flanneld-v0.14.0-amd64.docker

运行flannel插件

在master机器运行flannel插件

kubectl apply -f kube-flannel.yml

查看k8s集群状态

#查看所有节点是否ready
kubectl get nodes
#查看flannel节点是否运行正常
kubectl get pod -n kube-system | grep flannel
#查看kube-system启动的所有pod
kubectl get pod -n kube-system

参考内容

部署k8s的时候kube-flannel.yml下载不下来解决

CentOS-7.9通过kubeadm搭建k8s集群

calico方式

下载calico.yaml

curl https://docs.projectcalico.org/manifests/calico.yaml -O

如果使用CIDR为192.168.0.0/16,或者使用 kubeadm,不需要修改CALICO_IPV4POOL_CIDR。其他平台需要修改CALICO_IPV4POOL_CIDR

创建使用calico

kubectl create -f calico.yaml

kubectl apply -f calico.yaml

参考内容

官网安装方式

加入node节点

执行kubeadm init之后生成的,复制粘贴即可。

kubeadm join 192.168.211.142:6443 --token nzz2t6.os75i5sh03o1l2zr \
        --discovery-token-ca-cert-hash sha256:6747e5cd75d5ac8ce63694e6c8dbe32dedb0a29a2215b3b172e62efbc633e51e

测试kubernetes集群

在 Kubernetes 集群中创建一个 pod,验证是否正常运行

#创建pod
kubectl create deployment nginx --image=nginx 

#暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort 

#执行查看
kubectl get pod,svc 

执行结果

[root@k8smaster01 ~]# kubectl get pod,svc
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-6799fc88d8-hnwx9   1/1     Running   0          37m

NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        114m
service/nginx        NodePort    10.109.186.229   <none>        80:31444/TCP   6s

访问地址:http://NodeIP:Port

如我的ip为:http://192.168.211.144:31444/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s-kubeadm安装k8s 的相关文章

  • 具有相同容器端口的多个 docker 容器连接到同一网络

    我有一个依赖于多个 Docker 容器的应用程序 我使用 docker compose 以便所有这些都位于同一网络中以进行容器间通信 但是 我的两个容器正在各自容器内侦听相同的端口 8080 但是映射到主机上的不同端口 8072 8073
  • Dockerfile:通过 RUN 对文件系统所做的更改不会持久

    我找不到特定于网络搜索的内容site stackoverflow com dockerfile RUN fs changes not persisted I made Dockerfile并想通过以下方式对图像进行一些更改RUN 首先 我想
  • 将 Docker 与具有 Node-gyp 依赖项的 Nodejs 一起使用

    我计划使用 Docker 部署 node js 应用程序 该应用程序有几个需要node gyp的依赖项 Node gyp 根据交付平台上的编译库构建这些模块 例如 canvas lwip qrcode 根据我的经验 这些构建可能高度依赖于操
  • 如何更改“docker createvolume”命令的默认位置?

    当通过卷 API 创建卷时 也就是说 容器卷模式现在不一定是最佳实践 docker volume inspect test data Name test data Driver local Mountpoint var lib docker
  • Docker 无法解析主机名

    我需要知道在同一台机器上运行的某些容器的主机名 或 IP 地址 正如我已经评论过的here https stackoverflow com questions 26269870 how do docker containers resolv
  • 如何调用位于其他目录的Makefile?

    我正在尝试这样做 我想打电话给 make Makefile存在于其他目录中 abc可以使用位于不同目录中的 shell 脚本的路径 我该怎么做呢 由于 shell 脚本不允许我cd进入Makefile目录并执行make 我怎样才能编写she
  • 将数组传递给函数名称冲突

    Specs GNU bash 版本 3 1 17 无法升级 Premise 我一直在摆弄数组 我想知道是否有任何方法可以让函数的本地变量与所述函数外部的数组同名 Example 在下面的示例中 我将尝试显示该问题 Working bin b
  • numpy 未定义符号:PyFPE_jbuf

    我正在尝试使用一百万首歌曲数据集 为此我必须安装 python 表 numpy cython hdf5 numexpr 等 昨天我设法安装了我需要的所有内容 在使用 hdf5 遇到一些麻烦之后 我下载了预编译的二进制包并将它们保存在我的 b
  • 如何获取 linux 实用程序 tail 的源代码?

    这个命令确实非常有用 但是我可以在哪里获取源代码以查看内部发生的情况 thanks tail 实用程序是 Linux 上 coreutils 的一部分 源压缩包 ftp ftp gnu org gnu coreutils coreutils
  • Docker 中的 NGINX 缓存 IP 地址并提供错误的 Content-Type

    Summary 我想让NGINX 不是NGINX Plus 通过使用变量从DNS名称重新解析IP地址proxy pass 如建议的这篇 Nginx 官方文章 在变量中设置域名 部分 https www nginx com blog dns
  • 如何让 clangd 转向 c++20

    当没有其他信息时 如何让 clangd 回退到 c 20 例如 在第一次构建之前 cmake 可以生成一个 这是在带有最新 LLVM 的 Arch Linux 上 这是通过 Emacs LSP 运行的 但这应该没有什么区别 你可以加 Com
  • gentoo crontab:为什么这个简单的 crontab 不起作用?

    我使用 GENTOO 发行版 crontab e 35 12 root php5 home www cron php 当我手动运行时 php5 php5 home www cron php 这有效 它向我发送了一封电子邮件 然后我检查日期
  • 使用 php 和 sendmail 发送有关测试 docker 容器的电子邮件

    我用的是ubuntu 16 04 我有一个 测试 docker docker compose 容器运行 php 5 6 和 apache 2 4 在生产平台 没有docker 上 邮件是通过sendmail发送的 如何在docker容器上发
  • git在Windows和Linux之间切换后强制刷新索引

    我有一个Windows和Linux共享的磁盘分区 格式 NTFS 它包含一个 git 存储库 约 6 7 GB 如果我只使用Windows or 只使用Linux操作 git 存储库一切正常 但是每次切换系统的时候git status命令将
  • 如何从主机连接到 Docker Postgres 容器

    我按照以下说明搭建了一个 Rails 开发环境https docs docker com compose rails https docs docker com compose rails 它可以工作 但我无法从主机连接到 Postgres
  • 无法从 Gitlab CI 访问私有 MySQL Docker 映像

    我一直在尝试将私有 自定义 MySQL 映像从我的 Docker Hub 存储库拉入 gitlab ci yml 管道作为服务 我添加了一个 before script 尝试使用我的用户名和密码 CI 变量 登录 dockerhub 失败的
  • 在Linux中断上下文中运行用户线程

    我正在编写一些定制的应用程序 并允许更改 Linux 内核中的中断处理程序代码 我有一个用户线程正在等待中断发生 如果发生中断 那么我要做的第一件事就是执行该用户线程 有什么办法让它发挥作用吗 Thanks 创建一个字符设备 这就是内核所做
  • 在 Ubuntu 16.04 上找不到 printf.c

    我最近切换到Ubuntu 16 04 我在用vscode作为 Ubuntu 上的 IDE 我配置了其他语言 但我无法做到这一点C C 我创建c cpp properties json launch json tasks json 当我开始编
  • 每个进程每个线程的时间量

    我有一个关于 Windows 和 Linux 中进程和线程的时间量子的问题 我知道操作系统通常为每个线程提供固定的时间量 我知道时间量根据前台或后台线程而变化 也可能根据进程的优先级而变化 每个进程有固定的时间量吗 例如 如果操作系统为每个
  • C 程序从连接到系统的 USB 设备读取数据

    我正在尝试从连接到系统 USB 端口的 USB 设备 例如随身碟 获取数据 在这里 我可以打开设备文件并读取一些随机原始数据 但我想获取像 minicom teraterm 这样的数据 请让我知道我可以使用哪些方法和库来成功完成此操作以及如

随机推荐

  • ROSE笔记-ctf.show_web2-WP

    ctf show web2 WP 直接是一个登录界面 在用户名处输入万能密码 admin or 1 1 显示了登陆信息 现在就是去找回显位置 用order by判断当前查询的列数 order by 4的时候登陆信息消失 而order by
  • 根据Modeller官网教程进行单模板建模

    Tutorial Basic Modeling https salilab org modeller tutorial basic html 1 搜索相关序列 从官网下载源文件 分析 TvLDH ali 存放目标序列 需满足要求的格式 gt
  • 异常处理函数set_exception_handler

    由于历史原因 php一开始被设计为一门面向过程的语言 所以异常处理没有使用像Java一样的 try catch 机制 出错时直接显示到页面上 或者记录到web服务器的错误日志中 并且php的错误分成了很多的级别 例如E ERROR E WA
  • 斐波那契数列(递归改进)

    题目 求斐波那契数列的第n项 写一个函数 输入n 求斐波那契数列的第n项 斐波那契数列的定义如下 大多数人看到后第一时间都会写出如下代码 递归 方法直观但时间效率低 long long Fibonacci unsigned int n if
  • 远程桌面连接不能复制粘贴怎么办 远程控制电脑无法复制粘贴的解决方法

    解决方法如下 第一步 打开远程桌面连接 点开电脑左下角的开始菜单 找到远程桌面连接 点开 如果你不常用远程桌面连接 那么这个图标就在附件里面 仔细找找就看到了 第二步 点开远程桌面连接的对话框 在对话框的左下角找到 显示选项 点开它 第三步
  • 数据加密标准(DES)概念及工作原理

    0x01 数据加密标准DES介绍 数据加密标准 Data Encryption Standard DES 是一种用于加密数字数据的对称密钥算法 密钥长度为56位 安全性不强 但它在密码学的进步中具有很大的影响力 0x02 数据加密标准历史
  • MySQL 锁

    文章目录 1 锁的种类 2 按兼容性划分 1 共享锁 2 排他锁 3 按锁粒度划分 1 表锁 2 行锁 3 注意 4 按锁模式划分 1 记录锁 2 间隙锁 3 临键锁 4 插入意向锁 5 意向锁 5 按加锁机制划分 1 悲观锁 2 乐观锁
  • 支付宝小程序集成mqtt兼容IOS和安卓

    1 前言 去年就想做支付宝小程序接入mqtt协议 但最终多方咨询 问客服问社区得到的答案都是支付宝小程序不能直接支持mqtt协议 偶然间发现徐宏大神的佳作 终于发现了xmqtt js这个好东西 它实现了支付宝小程序完美接入mqtt协议 设备
  • where、having、group by、order by、limit的区别和使用顺序

    where having group by order by limit的区别和使用顺序 姚文斌的博客 CSDN博客
  • 怎么让别人连接自己的数据库(MySQL)

    怎么让别人连接自己的数据库 MySQL update user set host where user root and host localhost flush privileges
  • 实现领域驱动设计----第一章

    带着问题上路 什么是领域驱动设计 是什么 为什么要做领域驱动设计 为什么要做 怎样做领域驱动设计 怎样做 其他的设计模式与领域驱动设计的区别 有类似为什么要做 但是是在取长补短的总结 译者序 就像在20世纪六七十年代出现了软件危机之后 面向
  • LINK : fatal error LNK1104: 无法打开文件“XXXXX.lib”解决方法

    1 首先我们一开始是配置包含的库目录 2 找到我们缺少XXXX lib对应的目录 确定 3 然后在链接器 输入 附加的依赖项中我们输入这个lib文件的全名 这一步按照实际情况添加 然后编译链接即可 主要原理分析 1 报错提示找不到这个lib
  • 玩转Mysql系列 - 第17篇:存储过程&自定义函数详解

    这是Mysql系列第17篇 环境 mysql5 7 25 cmd命令中进行演示 代码中被 包含的表示可选 符号分开的表示可选其一 需求背景介绍 线上程序有时候出现问题导致数据错误的时候 如果比较紧急 我们可以写一个存储来快速修复这块的数据
  • Ubuntu下的Nginx + Uwsgi + Django项目部署详细流程

    文章目录 前言 环境 工具 申请一个服务器 获取服务器实例 获取IP 配置安全组 配置放行端口 http www iszip com post 022714 html 连接服务器 配置用户 使用pyenv管理python版本 下载pyenv
  • sublime 搜索时忽略文件夹

    如上图 添加 folder exclude patterns 要忽略的文件夹 转载于 https www cnblogs com benchan2015 p 4949017 html
  • STM32------ADC实验

    目录 前言 一 库函数 1 ADC Init函数 2 ADC使能函数 3 ADC使能软件转换函数 4 ADC规则通道配置函数 5 ADC获取转换结果函数 6 实验目的 二 软件设计 1 adc c 2 adc h 前言 一 库函数 1 AD
  • react动态二级/三级路由操作

    一级路由就不写了 比较简单 下面是在一级页面mvvm中进行写入二级及三级路由页面 app js中进行路由配置
  • 【golang】巧用select {}阻塞main函数

    很多时候我们需要让main函数不退出 让它在后台一直执行 例如 func main for i 0 i lt 10 i 启动20个协程处理消息队列中的消息 c consumer New go c Start select 阻塞 可能大多数人
  • Leetcode304.二维区域和检索——动态规划之矩阵前缀和

    文章目录 引入 Leetcode题解 引入 接上文Leetcode10 正则表达式匹配 动态规划之一个模型三个特征 在第17次双周赛的时候 我遇到这么一道题1314 矩阵区域和 不过在此 我们先讨论该题的解法的经典题型 304 二维区域和检
  • k8s-kubeadm安装k8s

    前言 本文主要介绍Docker和Kubernetes的安装步骤 安装Docker采用官网提供的安装方式 安装k8s采用官网提供的kubeadm方式 其中镜像地址都采用了国内阿里镜像地址 k8s集群服务器初始化 准备工作 关闭防火墙 syst