【kubernetes】k8s v1.25集群部署及使用containerd容器运行时交互

一,安装环境

1,硬件要求

内存:2GB或更多RAM

CPU: 2核CPU或更多CPU

硬盘: 30GB或更多

2,本次环境说明:

操作系统:CentOS 7.9

内核版本:3.10.0-1160

虚拟机

IP地址

节点

k8s-master

192.168.1.20

master

k8s-node-1

192.168.1.25

worker

k8s-node-2

192.168.1.26

worker

二,环境前期准备工作(三台机器同步执行)

1,防火墙关闭

systemctl stop firewalld && systemctl disable firewalld

2,selinux关闭

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

shutdown -r now重启机器

3,关闭swap

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

4,设置主机名

在三台主机分别执行:

hostnamectl set-hostname k8s-master && bash

hostnamectl set-hostname k8s-node-1 && bash

hostnamectl set-hostname k8s-node-2 && bash

5,修改hosts文件

添加三台主机的地址及主机名

6,开启包转发功能和修改内核参数

modprobe br_netfilter

echo "modprobe br_netfilter" >> /etc/profile

cat > /etc/sysctl.d/k8s.conf <<EOF

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

EOF

7,配置生效

sysctl -p /etc/sysctl.d/k8s.conf

8,时间同步

yum install ntpdate -y

ntpdate cn.pool.ntp.org

echo "* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org >> /tmp/tmp.txt" >> /var/spool/cron/root

service crond restart

9,安装基础软件包

yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet ipvsadm openssh-clients

10,安装docker和containerd

此处有坑,机器上我已预装了docker,再执行yum install -y containerd显示yum install找不到命令,查资料后发现containerd是作为docker的组件在安装docker的时候会被安装上的,无需再额外执行yum install -y containerd,如遇到相同问题可忽略报错

yum install yum-utils -y

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install -y docker-ce

systemctl start docker && systemctl enable docker

cat > /etc/docker/daemon.json <<EOF

{

"registry-mirrors": ["https://k73dxl89.mirror.aliyuncs.com"],

"exec-opts": ["native.cgroupdriver=systemd"]

}

EOF

systemctl daemon-reload && systemctl restart docker

三,k8s安装及使用containerd作为容器运行时

1,修改containerd配置文件(三台机器上执行)

mkdir -p /etc/containerd

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

修改配置文件:

vim /etc/containerd/config.toml

把SystemdCgroup = false修改成SystemdCgroup = true

把sandbox_image = "k8s.gcr.io/pause:3.6"修改成sandbox_image="registry.aliyuncs.com/google_containers/pause:3.7"

配置 containerd 开机启动,并启动 containerd

systemctl enable containerd --now

配置containerd镜像加速器

vim /etc/containerd/config.toml

找到config_path = "",修改成如下目录:

config_path = "/etc/containerd/certs.d"

保存退出

mkdir /etc/containerd/certs.d/docker.io/ -p

vim /etc/containerd/certs.d/docker.io/hosts.toml

#写入如下内容:

[host."https://vh3bm52y.mirror.aliyuncs.com"]

capabilities = ["pull"]

重启containerd:

systemctl restart containerd

2,配置containerd作为容器运行时

配置/etc/crictl.yaml文件

cat > /etc/crictl.yaml <<EOF

runtime-endpoint: unix:///run/containerd/containerd.sock

image-endpoint: unix:///run/containerd/containerd.sock

timeout: 10

debug: false

EOF

systemctl restart containerd

3,备份原repo文件,替换阿里云yum源(三台机器上执行)

mkdir /root/repo.bak

mv /etc/yum.repos.d/* /root/repo.bak/

cd /etc/yum.repos.d/

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

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

EOF

yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0

systemctl enable kubelet

4,初始化k8s集群

设置容器运行时(三台机器执行)

crictl config runtime-endpoint /run/containerd/containerd.sock

kubeadm config print init-defaults > kubeadm.yaml

apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.1.20 #修改为masterIP地址
  bindPort: 6443
nodeRegistration:
  criSocket: unix:///run/containerd/containerd.sock
  imagePullPolicy: IfNotPresent
  name: k8s-master #修改为master主机名
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers #修改镜像仓库
kind: ClusterConfiguration
kubernetesVersion: 1.25.0
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
  podSubnet: 10.244.0.0/16 #新增指定pod网段
scheduler: {}
#添加以下字段
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd

kubeadm init --config=kubeadm.yaml --ignore-preflight-errors=SystemVerification

看到此段证明安装成功;

根据提示执行以下命令:

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

5,添加node工作节点

查看加入节点命令(master执行)

kubeadm token create --print-join-command

将输出结果后面添加--ignore-preflight-errors=SystemVerification在node节点上执行

kubeadm join 192.168.1.20:6443 --token ces4y0.ot8a5xq0d1uqbnlk --discovery-token-ca-cert-hash sha256:88f1fb41f7ee073362ce831be9baa68bd576b2953f2c01dd6068f87031ff94ae --ignore-preflight-errors=SystemVerification

kubectl get nodes

5,安装calico.yaml网络组件(master上执行)

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

kubectl apply -f calico.yaml

四,愿为江水,与君相逢

到此k8s v1.25集群就安装完成了,如有问题或遗漏请留言指正。

谨以此文记录我们学习kubernetes的经历,希望能认识更多志同道合的朋友,一起分享遇到的问题和学习经验。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值