K8S单Master集群安装(Containerd)

这篇具有很好参考价值的文章主要介绍了K8S单Master集群安装(Containerd)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原创文档编写不易,未经许可请勿转载。文档中有疑问的可以邮件联系我。 邮箱:yinwanit@163.com

文章基于CentOS 7.8系统使用Containerdr作为容器运行时通过kubeadm指导搭建k8s单机master集群,使用calico作为k8s集群的网络插件。K8S官方在1.24版本彻底弃用docker。

需要服务器可以联网。

环境

节点说明

主机名 IP地址 操作系统
c_master01.lvan 192.168.100.200 CentOS Linux release 7.8
c_node01.lvan 192.168.100.201 CentOS Linux release 7.8
c_node02.lvan 192.168.100.202 CentOS Linux release 7.8

软件环境

软件名 软件版本 作用
CentOS Linux release 7.8 操作系统
containerd.io 1.6.14-3.1 容器运行时
cri-tools 1.25.0-0 containerd客户端
nerdctl 1.1.0 containerd客户端
cni-plugins v1.1.1 cni插件
metrics-server v0.6.2 k8s集群性能监控插件
kubectl 1.26.0-0 k8s控制工具
kubeadm 1.26.0-0 k8s服务端
kubelet 1.26.0-0 k8s客户端
calico v3.24.5 K8S网络插件
pause 3.7 编车容器
表 1 软件环境

ip地址规划

ip地址 作用
192.168.100.200 k8s主节点
192.168.100.201 k8s子节点1
192.168.100.202 k8s子节点2
10.244.0.0/16 Pod网段地址

表 2 ip地址规划

 

步骤预览

  1. 操作系统配置:配置IP地址、配置主机名、关闭防火墙、关闭selinux、关闭swap、修改/etc/hosts文件、配置yum源
  2. 安装配置docker
  3. 修改系统内核参数
  4. 安装kubelet软件
  5. 初始化K8S集群
  6. 子节点加入k8s集群
  7. 安装网络插件
  8. 安装metrics-server监控集群性能数据

 

操作过程

一、操作系统配置

该章节的所有操作所有节点上均要执行。

设置主机名

按照规划文件中的名称依次设置每个节点的主机名。

# hostnamectl set-hostname   规划的主机名

IP地址配置

按照规划文件中的IP地址依次配置每个节点的IP地址。

# systemctl stop NetworkManager;systemctl disabled NetworkManager;systemctl mask NetworkManager
# cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-修改为你的网卡名
TYPE=Ethernet
BOOTPROTO=none
NAME=修改为你的网卡名
DEVICE=修改为你的网卡名
ONBOOT=yes
IPADDR=修改为你需要设置的ip地址
NETMASK=255.255.255.0
GATEWAY=修改为你需要设置的ip地址网关
DNS1=修改为你需要设置的ip地址DNS
EOF
# systemctl restart network
# ip a

关闭selinux

在/etc/selinux/config中设置SELINUX=为disabled

# sed  -i 's/SELINUX=.*/SELINUX=disabled/g'  /etc/selinux/config
# setenforce  0

关闭swap

在/etc/fstab文件中删除swap的挂载信息行,系统中执行swaoff -a临时关闭swap。

# swapoff  -a
# sed -i '/swap/d'  /etc/fstab

关闭防火墙

关闭防火墙,并设置防火墙为开机不启动

# systemctl stop firewalld;systemctl disable firewalld;systemctl mask firewalld
# systemctl status firewalld 

设置/etc/hosts文件

在/etc/hosts文件中添加所有节点的信息。

# cat >> /etc/hosts <<EOF
192.168.100.200 cmaster01.lvan  master01
192.168.100.201 cnode01.lvan    node01
192.168.100.202 cnode02.lvan    node02
EOF

配置yum源

备份当前的yun配置文件,并创建新的yum源文件。

# mkdir -p /etc/yum.repos.d/bak/
# mv /etc/yum.repos.d/CentOS* /etc/yum.repos.d/bak/
# 在/etc/yum.repos.d/目录中创建k8s.repo、epel.repo、docker.repo、CentOS-Base.repo 四个repo源文件,具体内容如下所示。
# yum clean all
# yum repolist 

k8s.repo

K8S单Master集群安装(Containerd)K8S单Master集群安装(Containerd)
[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
View Code

epel.repo

K8S单Master集群安装(Containerd)K8S单Master集群安装(Containerd)
[epel]
name=Extra Packages for Enterprise Linux 7 – $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
View Code

docker.repo

K8S单Master集群安装(Containerd)K8S单Master集群安装(Containerd)
[docker-ce-stable]
name=Docker CE Stable – $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
View Code

CentOS-Base.repo

K8S单Master集群安装(Containerd)K8S单Master集群安装(Containerd)
[base]
name=CentOS-$releasever – Base – mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever – Updates – mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever – Extras – mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
View Code

安装常用工具

安装vim、net-tools、bash-completion、wget常用的工具软件。

# yum install vim net-tools bash-completion  wget -y 
# source  /etc/profile.d/bash_completion.sh
# echo 'set paste'  >> ~/.vimrc

 

二、安装配置containerd

该章节的所有操作所有节点上均要执行。

安装containerd

# yum install containerd.io-1.6.14 cri-tools -y
# crictl config runtime-endpoint unix:///var/run/containerd/containerd.sock
# systemctl restart containerd ; systemctl enable containerd

设置containerd镜像加速

containerd 运行时配置加速:在[plugins.”io.containerd.grpc.v1.cri”.registry.mirrors]行下添加内容:[plugins.”io.containerd.grpc.v1.cri”.registry.mirrors.”docker.io”] 换行再添加 endpoint = [“https://frz7i079.mirror.aliyuncs.com”]。蓝色字体及为需要添加的内容。

# containerd config default > /etc/containerd/config.toml
# vim /etc/containerd/config.toml
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
        endpoint = ["https://sdmy9bft.mirror.aliyuncs.com"]

设置cgroup驱动及sandbox_image地址

在/etc/containerd/config.toml文件修改runc.options选项SystemdCgroup = true。设置sandbox_image镜像下载地址为阿里云的地址。

# sed   -i    's/SystemdCgroup.*/SystemdCgroup\ =\ true/g' /etc/containerd/config.toml 
# sed   -i    's#sandbox_image.*#sandbox_image\ =\ \"registry.aliyuncs.com/google_containers/pause:3.7\"#g'   /etc/containerd/config.toml
# systemctl restart containerd

 

三、安装容器工具

该章节的所有操作所有节点上均要执行。

安装cni插件

在网址:https://github.com/containernetworking/plugins/releases/ 中下载软件包。

# wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz
# mkdir -p /opt/cni/bin/  
# tar -zxf   cni-plugins-linux-amd64-v1.1.1.tgz  -C  /opt/cni/bin/

安装nerdctl工具

nerdctl工具是操作containerd的客户端,可以实现操作containerd和docker一样命令集操作。

在网址:https://github.com/containerd/nerdctl/releases 中下载软件包只需下载精简包即可(不带full字样的)。

# wget https://github.com/containerd/nerdctl/releases/download/v1.1.0/nerdctl-1.1.0-linux-amd64.tar.gz
# tar -zxvf nerdctl-1.1.0-linux-amd64.tar.gz
# mv nerdctl /bin/
# echo 'source <(nerdctl completion bash)' >> /etc/profile
# echo 'export CONTAINERD_NAMESPACE=k8s.io' >> /etc/profile
# source /etc/profile
# nerdctl images 

 

四、修改系统内核配置

该章节的所有操作所有节点上均要执行。

设置系统允许转发,加载k8s所需的内核模块。

# cat > /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
# modprobe overlay
# modprobe br_netfilter
# cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
# sysctl -p  /etc/sysctl.d/k8s.conf

五、安装kubelet软件

该章节的所有操作所有节点上均要执行。

# yum install -y kubelet-1.26.0-0 kubeadm-1.26.0-0 kubectl-1.26.0-0 --disableexcludes=kubernetes
# systemctl restart kubelet ; systemctl enable kubelet

六、初始化K8S集群

初始化k8s环境

该操作只在master节点上执行。命令执行完成过后记录下结果。

# kubeadm init --apiserver-advertise-address=192.168.100.200 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.26.0 --pod-network-cidr=10.244.0.0/16

环境初始完成过后根据提示执行命令
# mkdir -p $HOME/.kube
# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config
# kubectl get nodes 

命令执行完成过后会有如下输出,最好复制出来保存。

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.100.200:6443 --token lskbcb.y1d3ch2a2in75y8x \
        --discovery-token-ca-cert-hash sha256:0894894ba4f405f44499b71002c762bebfd9533be6a7d17fc6d56d77db645f84

配置kubectl命令自动补齐

该操作所有节点上均要执行。

# echo 'source <(kubectl completion bash)' >>  /etc/profile
# source /etc/profile

 

六、子节点加入k8s集群

获取加入集群的命令

该操作只在master节点上执行。

master节点环境初始化过后会自动生成一个命令。使用这个命令直接复制到子节点上实现子节点加入集群。

如果忘记了使用命令如下获取。

 # kubeadm token create --print-join-command

加入集群

该操作只在子节点上执行。

通过之前记录的命令或者上一步获取的命令,在子节点中复制执行。

# kubeadm join 192.168.100.200:6443 --token q6qmz0.wq7l7iavpqr6rd5b --discovery-token-ca-cert-hash sha256:0894894ba4f405f44499b71002c762bebfd9533be6a7d17fc6d56d77db645f84

 

七、安装网络插件calico

该章节操作只在master节点上执行。

下载calico配置文件

执行wget命令下载calico的yaml文件。

# wget https://docs.projectcalico.org/manifests/calico.yaml --no-check-certificate

修改calico配置文件

把calico.yaml文件中的CALICO_IPV4POOL_CIDR行和其下一行前的#删除掉,并CALICO_IPV4POOL_CIDR其下行的IP地址段改为规划文件中的网段。并在calico.yaml文件中增加蓝色字体内容,指定ens33为通信网卡(多网卡环境中必须要使用,请根据自己实际情况选择正确的网卡),格式要和CALICO_IPV4POOL_CIDR对齐。

# vim calico.yaml
 - name: CALICO_IPV4POOL_CIDR
   value: "10.244.0.0/16"
- name: IP_AUTODETECTION_METHOD
   value: "interface=ens33"

下载caclio所需镜像(可选)

该操作只在master节点上执行。

手动下载calico所需镜像并上传到所有节点中,执行了kubectl apply -f calico.yaml命令后系统会自东下载,但是会有点慢。我们可以提前下载好传到所有节点中。

# grep image calico.yaml  | grep -i calico | awk -F'/' '{print $2"/"$3 }' | uniq
# docker pull  calico/cni:v3.24.5
# docker pull  calico/node:v3.24.5
# docker pull  calico/kube-controllers:v3.24.5
# docker save -o calico_image_3_24_5.tar.gz   calico/cni:v3.24.5   calico/node:v3.24.5  calico/kube-controllers:v3.24.5
# scp calico_image_3_24_5.tar.gz  root@node01:/root/
# scp calico_image_3_24_5.tar.gz  root@node02:/root/

该操作所有节点上均要执行。

加载docker镜像到系统中。

# docker load -i /root/calico_image_3_24_5.tar.gz

安装calico插件

# kubectl apply -f calico.yaml
# kubectl get nodes -o wide -A
# kubectl get pod -o wide -A

八、安装metrics-server

metrics-server可用于k8s集群资源使用监控。

访问网址:https://github.com/kubernetes-sigs/metrics-server 在页面中下拉找到 Installation 章节,找到如下的信息: kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml ,截取蓝色高亮部分内容,在Master节点上执行命令下载conponents.yaml文件。

下载metrics-server软件

# wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.6.1/components.yaml
# #查看components.yaml所需要镜像及版本,提前下载
# grep  image components.yaml
        image: k8s.gcr.io/metrics-server/metrics-server:v0.6.2
        imagePullPolicy: IfNotPresent
# #该k8s.gcr.io/metrics-server/metrics-server:v0.6.2镜像由于不可描述的原因下载起来有点麻烦。在https://hub.docker.com/中去下载。
# nerdctl pull k8simage/metrics-server:v0.6.2
# nerdctl tag  k8simage/metrics-server:v0.6.2   k8s.gcr.io/metrics-server/metrics-server:v0.6.2
# #把metrics-server镜像打包并复制到所有节点上去。
# nerdctl save -o metrics-server.tar.gz   k8s.gcr.io/metrics-server/metrics-server:v0.6.2
# scp metrics-server.tar.gz  root@x.x.x.x:/root/
# #在其他节点上读取加载metrics-server镜像包。
# nerdctl load -i metrics-server.tar.gz
# #确认镜像包导入正常。
# nerdctl images

修改metrics-server.yaml文件

在下载metrics-server的配置文件中修改添加蓝色字体内容。

# sed  -i -e  's/kubelet-preferred-address-types.*/kubelet-preferred-address-types=InternalIP/g' -e 's/metric-resolution.*/metric-resolution=30s/g'  -e '/metric-resolution/a\        - --kubelet-insecure-tls' components.yaml

创建metrics-server pod

执行命令创建pod,并确认metrics-server pod运行正常,可以正常获取到k8s资源性能数据。文章来源地址https://www.toymoban.com/news/detail-446123.html

# kubectl apply -f components.yaml
# kubectl get pods -A
# kubectl top nodes

到了这里,关于K8S单Master集群安装(Containerd)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • kubeasz在线安装K8S集群单master集群(kubeasz安装之二)

    Kubeasz 是一个基于 Ansible 自动化工具,用于快速部署和管理 Kubernetes 集群的工具。它支持快速部署高可用的 Kubernetes 集群,支持容器化部署,可以方便地扩展集群规模,支持多租户,提供了强大的监控和日志分析功能,可以大大简化 Kubernetes 的部署和管理过程,提高系统的可

    2024年02月12日
    浏览(39)
  • Kubeadm安装单master多node节点K8S集群

    记录在刚搭建的3个虚拟机里成功安装K8S1.25版本集群的步骤 由于是成功创建后才记录的博客,只记录了操作步骤,过程中执行命令后的截图会有部分缺失,或者换成了文字。 操作系统:centos7.9 每个服务器配置: 4Gib内存/4vCPU/80G硬盘 网络:NAT模式 K8S集群角色 IP 主机名 安装的

    2024年01月24日
    浏览(61)
  • kubeadm 安装k8s集群后,master节点notready问题解决方案

    使用kubeadm 安装k8s集群后,加载calico cni 网络组件后,master节点notready问题 表现为: 使用命令查看日志:journalctl -f -u kubelet 报错如下: Failed to start ContainerManager failed to initialize top level QOS containers: failed to update top level Burstable QOS cgroup : failed to set supported cgroup subsystems for cgroup

    2024年01月22日
    浏览(48)
  • Containerd+Kubernetes搭建k8s集群

    视频教程地址:https://space.bilibili.com/3461573834180825/channel/seriesdetail?sid=3316691 之前写了一篇基于docker安装kubernetes的文章,这篇文档我们来使用containerd来安装kubernetes,相较于docker,containerd运行容器的时候效率更高,并且可以兼容docker镜像。基于docker安装kubernetes的文章地址:ht

    2024年02月07日
    浏览(46)
  • jenkins发布Kubernetes(K8s)集群(基于containerd)

    上一篇文章 Jenkins入门与安装 1、k8s环境 版本 v1.26.5 ,容器为containerd 二进制安装Kubernetes(K8s)集群(基于containerd)—从零安装教程(带证书) 主机名 IP 系统版本 安装服务 master01 10.10.10.21 rhel7.5 nginx、etcd、api-server、scheduler、controller-manager、kubelet、proxy master02 10.10.10.22 rhel7.5 ngin

    2024年02月09日
    浏览(95)
  • 使用containerd从0搭建k8s(kubernetes)集群

    准备两台服务器节点,如果需要安装虚拟机,可以参考《wmware和centos安装过程》 机器名 IP 角色 CPU 内存 centos01 192.168.109.130 master 4核 2G centos02 192.168.109.131 node 4核 2G 设置主机名,所有节点都执行 关闭防火墙,所有节点都执行 关闭swap内存,所有节点都执行 配置网桥,所有节点

    2024年02月08日
    浏览(67)
  • 高可用containerd搭建K8s集群【v1.25】

    [toc] 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 一台或多台机器,操作系统 CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多 集群中所有机器之间网络互通 可以访问外网,需要拉取镜像 禁止swap分区 角色 IP k8s-master1 192.168.4.114 k8s-master2

    2024年02月09日
    浏览(42)
  • [Kubernetes[K8S]集群:master主节点初始化]:通过Calico和Coredns网络插件方式安装

    主节点:安装coredns - init初始化 主节点(此时还没有安装calico) 从节点:基于主节点生成join命令加入集群 主节点:安装calico:apply 生成pod,此时没有调整yaml网卡 coredns 和calico pod 运行成功 但是 calico-node-cl8f2 运行失败 查看 解决链接 因为之前写过一篇,calico一直异常,步骤

    2024年04月15日
    浏览(54)
  • [kubernetes]二进制部署k8s集群-基于containerd

    k8s从1.24版本开始不再直接支持docker,但可以自行调整相关配置,实现1.24版本后的k8s还能调用docker。其实docker自身也是调用containerd,与其k8s通过docker再调用containerd,不如k8s直接调用containerd,以减少性能损耗。 除了containerd,比较流行的容器运行时还有podman,但是podman官方安装

    2024年02月12日
    浏览(57)
  • k8s 1.27集群部署 容器运行时为containerd

    1.1.1 主机操作系统说明 序号 操作系统及版本 备注 1 CentOS7u9 1.1.2 主机硬件配置说明 需求 CPU 内存 硬盘 角色 主机名 值 8C 8G 1024GB master k8s-master01 值 8C 16G 1024GB worker(node) k8s-worker01 值 8C 16G 1024GB worker(node) k8s-worker02 1.1.3 主机配置 1.1.3.1 主机名配置 由于本次使用3台主机完成kubern

    2024年02月03日
    浏览(71)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包