kubernetes学习二----1.27.1部署、安装

这篇具有很好参考价值的文章主要介绍了kubernetes学习二----1.27.1部署、安装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、基本信息介绍

kubernetes: 1.27.1
系统:centos 7.9
etcd:3.5.7
containerd:1.6.20
runc:1.1.5
docker-ce:20.10.24(安装后显示的23.0.4,可能是合并了)
建议内核升级到5.10

本次安装就只有一个master和一个node节点
master:192.168.180.89
node:192.168.180.201

网络插件:calico 3.25.1 (虽然目前是最新版本,官方文档没显示支持kubernetes1.27,但测试安装可以使用)

本次采用kubeadm方式安装。

二、环境准备

以下操作两个节点都要操作,建议使用ansible同时操作。

1、关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

2、关闭selinux

sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0

3、关闭swap

sed -ri 's/.*swap.*/#&/' /etc/fstab 
swapoff -a 

4、添加本地dns解析

cat >> /etc/hosts << EOF
192.168.180.89 master01
192.168.180.201 node01
EOF

5、添加内核模块和开启ipv4转发、网桥参数

(1)加载内核模块:

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

modprobe overlay
modprobe br_netfilter

(2)添加内核参数

vi /etc/sysctl.conf
#追加以下内容

net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1


sysctl --system  #生效

有教程是在/etc/sysctl.d/k8s.conf自建文件添加,但没有上一步的加载内核模块,会导致网桥参数不能生效。不执行以上这两步,后面都有可能报错。也可以sysctl -f /etc/k8s.conf加载指定文件里面的参数。

6、时间同步

yum install ntp -y
ntpdate ntp2.aliyun.com

三、安装docker&containerd

kubernetes1.20版本后不在直接由docker daemon处理镜像操作,转为直接与containerd服务交互后,去调用runc去处理镜像操作。在此安装docker-ce的同时会自动安装containerd服务。
建议先将yum基础源换成国内的,这里不演示。由于centos7的基础源都不是最新的docker-ce版本,所有还要添加一个专门的docker源(国内阿里云的源)来安装教新的版本。

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

yum makecache

#安装指定版本的docker:
yum install docker-ce-20.10.24 -y

docker镜像加速(这步不是必须的,因为后面基本都是国外的源或者自己手动下载的镜像):

vi /etc/docker/daemon.json
{
  "registry-mirrors": ["https://lgernt2z.mirror.aliyuncs.com"]
}

四、安装kubectl、kubeadm、kubelet

Kubelet:
运行在cluster所有节点上,负责启动POD和容器
Kubeadm:
用于初始化cluster的一个工具
Kubectl:
kubectl是kubenetes命令行工具,通过kubectl可以部署和管理应用,查看各种资源,创建,删除和更新组件

直接安装是用的谷歌的源,我们更换为aliyun的源

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

yum makecache
yum install kubelet-1.27.1 kubeadm-1.27.1 kubectl-1.27.1 -y

检查下版本:
kubeadm version
kubectl version --client
kubelet --version

最后我们将相关服务设置成开机自启:

systemctl enable containerd
systemctl enable docker
systemctl enable kubelet

五、初始化kubernetes的master节点

之前步骤需要在master和node上都执行,本步骤只在master执行。

(1)初始化

kubeadm init \
--apiserver-advertise-address=192.168.180.89 \
--control-plane-endpoint=master01 \
--image-repository  registry.aliyuncs.com/google_containers \
--kubernetes-version v1.27.1  \
--service-cidr=10.10.0.0/12  \
--pod-network-cidr=10.254.0.0/16

经测试,尽管我们指定了参数image-repository镜像仓库为aliyun,但初始化的时候仍然会去k8s.io拉取镜像,由于众所周知的原因拉取会失败,以及会出现cgroup相关的告警,我们需要修改相关配置。

(2)修改containerd配置

本步骤node节点也要同样的修改

cp /etc/containerd/config.toml /etc/containerd/config.toml.bak
#备份源文件

containerd config default > /etc/containerd/config.toml

vi /etc/containerd/config.toml
找到SystemdCgroup = false这一行,将false改为true。
找到包含sandbox_image这一行,将地址改为“registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9”
systemctl restart containerd#重启生效修改后的配置

(3)再次执行初始化

再次执行第一步之前,我们可以先手动拉取所需的镜像(非必须)

 #查看会拉取的镜像清单
 kubeadm config images list
 #手动提前拉取镜像,可以看到拉取过程及拉取情况
 kubeadm config images pull
Your Kubernetes control-plane has initialized successfully!

出现上述语句说明初始化成功

将最后的语句保存下来,用来添加node节点:

kubeadm join master01:6443 --token duccxz.6h3ljhxgyw05558s \
        --discovery-token-ca-cert-hash sha256:1975d525e3ce447291a8630bdd105f04ea8e63881f4ac66f1e0e81f353ed6c7e

如果忘记保存:kubeadm token create --print-join-command这个命令可以重新获取

(4)检查初始化情况

kubectl get pod -n kube-system

如果出现:couldn’t get current server API group list: Get “http://localhost:8080/api?timeout=32s”: dial tcp 127.0.0.1:8080: connect: connection refused

需要执行下面操作
方法1:

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

方法2:

sudo vim /etc/profile

export KUBECONFIG=/etc/kubernetes/admin.conf

source /etc/profile

kubernetes学习二----1.27.1部署、安装
成功后显示,上面是安装calico和添加node后的情况,按步骤执行下来要少一些pod。

(5)添加node节点

kubeadm join master01:6443 --token duccxz.6h3ljhxgyw05558s \
        --discovery-token-ca-cert-hash sha256:1975d525e3ce447291a8630bdd105f04ea8e63881f4ac66f1e0e81f353ed6c7e

在node节点上执行。

成功后返回master上执行:

kubectl get nodes -A

kubernetes学习二----1.27.1部署、安装
没安装网络插件之前,STATUS应该是not ready状态。我的已经安装了,所以是Ready状态。

六、安装网络插件

目前主流的网络插件是flannel和calico,这里只演示calico。
本人多方查找并未找到calico或者flannel的国内源。并且本次是安装的最新版。
基本目前找到的教程或者资源给到的calico.yaml文件都是来自https://raw.githubusercontent.com,国内无法打开。image虽然可以拉取,但是拉取速度非常慢,单个镜像本人网速环境拉取超过一个小时,故直接去calico的GitHub官方仓库下载了整个calico 3.25.1的安装包。地址如下:

https://github.com/projectcalico/calico/releases
国内是可以正常打开GitHub代码仓库的,虽然速度慢了点儿,但比直接拉取要快不少。

kubernetes学习二----1.27.1部署、安装
这个包含了yaml和image,虽然是国外的资源和大小有1个G,但只下载了大约半个小时,已经算很快了。
将release-v3.25.1.tgz包上传到master节点上。

tar vxf release-v3.25.1.tgz
#解压完后会有个release-v3.25.1的目录,下面有manifests和images

crictl images list
#查看当前kubernetes环境下有哪些镜像

ctr namespace list
#查看有哪些命名空间,默认导入镜像会到default这个命名空间

ctr --namespace=k8s.io images import calico-kube-controllers.tar
ctr --namespace=k8s.io images import calico-node.tar
ctr --namespace=k8s.io images import calico-cni.tar
#需要指定导入的命名空间为k8s.io,如果不在image目录下,镜像要写绝对路径

crictl image list
#查看导入的镜像,见下图

kubernetes学习二----1.27.1部署、安装
直接用yaml文件创建calico的pod。

kubectl apply -f calico.yaml
#这个文件在release-v3.25.1/manifests/calico.yaml,不在当前目录下,请写绝对路径

等待结束后,通过kubectl get pods -n kube-system查看calico的pod:
kubernetes学习二----1.27.1部署、安装
coredns的pod也正常了。
至此基本环境的安装结束。

补充

如果crictl执行出现类似:

WARN[0000] image connect using default endpoints: [unix:///var/run/dockershim.sock unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]. As the default settings are now deprecated, you should set the endpoint instead. 
ERRO[0002] connect endpoint 'unix:///var/run/dockershim.sock', make sure you are running as root and the endpoint has been started: context deadline exceeded 

这样的错误,可以执行下面语句进行修正

cat <<EOF> /etc/crictl.yaml 
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF

其他:
yum search docker-ce只显示一个版本(或者查找其他安装包不显示全部可用版本),可以添加–showduplicates
例如:yum search docker-ce --showduplicates文章来源地址https://www.toymoban.com/news/detail-475021.html

到了这里,关于kubernetes学习二----1.27.1部署、安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kubernetes 二进制方式部署 1.27.1

    序号 名称 IP地址 CPU/颗 内存/GB 硬盘/GB 描述 1 k8s-master01 192.168.1.11 4 4 100 kube-apiserver、kube-controller-manager、kube-scheduler、etcd、 kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginx 2 k8s-master02 192.168.1.12 4 4 100 kube-apiserver、kube-controller-manager、kube-scheduler、etcd、 kubelet、kube-proxy、nfs-cl

    2024年02月10日
    浏览(46)
  • 部署kubernetes-1.27.2(docker engine)

    先部署完成基础环境的文章再部署底层容器,先前说过kubernetes官方文档中有多种底层容器可供使用,本篇文章使用docker作为kubernetes底层容器并尽量遵循官方文档,其他底层容器后面会有其他文章。  根据官方的说法,现在还想使用docker作为kubernetes底层容器,需要cri-dockerd来

    2024年02月06日
    浏览(36)
  • 使用 kubeadm 部署 kubernetes 1.27.1 版本

    目录 前言 一、搭建前的准备 1. 搭建k8s的平台规划 2. 服务器硬件配置要求 3. 搭建部署的方式 二、搭建流程 1. kubeadm搭建方式 a. 准备工作,系统初始化 c. 设置一下ipv4,否则会失败(此处为坑,不设置无法初始化成功) d. 安装containerd  e. 安装kubectl、kubelet、kubeadm  f. master节点

    2024年02月06日
    浏览(37)
  • 【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.27.0版本

    官方文档: 二进制下载地址 环境规划: pod网段:10.244.0.0/16 service网段:10.10.0.0/16 注意: pod和service网段不可冲突,如果冲突会导致K8S集群安装失败。 主机名 IP地址 操作系统 master-1 16.32.15.200 CentOS7.8 node-1 16.32.15.201 CentOS7.8 node-2 16.32.15.202 CentOS7.8 1、关闭防火墙 2、配置域名解

    2024年02月08日
    浏览(75)
  • 【Kubernetes部署篇】Ansible自动化工具离线部署K8s 1.27版本

    一、前提须知 采用kubeadm方式,目前只支持 单Master,多Node部署架构 需要主机网络互通,没有网络限制 需要使用root用户权限进行部署 二、使用Ansible部署K8S集群步骤 第一步:获取离线安装包 百度网盘获取 MD5:97d1f48bff3a345429b551b877c7c53d 第二步:安装ansible命令,压缩包中提供

    2024年02月14日
    浏览(54)
  • Centos7安装Kubernetes 1.27.2

    目录 一、准备工作 二、容器运行时 三、安装kubelet 、kubeadm、 kubectl 四、配置CNI 五、安装nginx 1、更新yum源安装 vim、net-tools等工具(每个节点都执行) 2、 配置每个节点的网络,然后能互相ping通(每个节点上都要执行) 3、 安装时间插件,保证每个节点时间一致(每个节点上

    2024年02月13日
    浏览(40)
  • Centos 7 上基于 containerd 安装 Kubernetes 1.27 集群

    应用 sysctl 参数,无需重启, 完结!

    2024年02月05日
    浏览(34)
  • Kubernetes[k8s] 最新版1.27.3安装教程,使用containerd模式

    公司使用的是交老的k8s版本(1.16),由于老版本的K8s对于现在很多新特性不支持,所以需要升级到新版本。目前2023年7月11日最新版本的k8s是v1.27.3。通过参考官方文档进行k8s部署工作。其中涉及到操作系统配置、防火墙配置、私有镜像仓库等。 推荐一个AI工具:态灵AI: chata

    2024年02月09日
    浏览(45)
  • 基于ubuntu20.04安装kubernetes1.27.1(使用cri-docker)

    192.168.1.60 master 192.168.1.61 node1 192.168.1.62 node2 192.168.1.63 node3 不修改hostname会导致主机名相同,安装网络创建后,不同node节点的pod通信会有问题 2.3启动docker 配置service和socker文件 启动 dpkg 安装方便,不易出错 修改配置文件pause镜像使用过阿里源,默认使用的是国外的,下载不了

    2024年02月06日
    浏览(44)
  • Kubernetes[k8s] 最新版1.27.3 - 1.28.0安装教程,使用containerd模式

    公司使用的是交老的k8s版本(1.16),由于老版本的K8s对于现在很多新特性不支持,所以需要升级到新版本。目前2023年7月11日最新版本的k8s是v1.27.3。通过参考官方文档进行k8s部署工作。其中涉及到操作系统配置、防火墙配置、私有镜像仓库等。 推荐一个AI工具:态灵AI: chata

    2024年02月06日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包