Kubeadm安装kubernetes v1.27 使用containerd

一、集群规划

环境规划:

Vmware Workstation

pod网段:10.244.0.0/16

service网段:10.10.0.0/16

注意: pod和service网段不可冲突,如果冲突会导致K8S集群安装失败。

容器运行时本次使用containerd。

主机名 IP地址 操作系统

master 192.168.110.129 CentOS7.9

Node2 192.168.110.130 CentOS7.9

二、系统初始化准备(所有节点同步操作)

1、关闭防火墙

systemctl disable firewalld --now

setenforce 0

sed  -i -r 's/SELINUX=[ep].*/SELINUX=disabled/g' /etc/selinux/config

2、配置域名解析

cat  >> /etc/hosts << EOF

172.16.110.129 master

172.16.110.130 node2

172.16.110.131 node3

EOF

在指定主机上修改主机名

hostnamectl set-hostname master && bash

hostnamectl set-hostname node2 && bash

3、配置服务器时间保持一致并添加定时任务

yum -y install ntpdate

ntpdate ntp1.aliyun.com

echo "0 1 * * * ntpdate ntp1.aliyun.com" >> /var/spool/cron/root

crontab -l

4、禁用swap交换分区(kubernetes强制要求禁用)并禁止自启动

swapoff --all

sed -i -r '/swap/ s/^/#/' /etc/fstab

#确保每台机器的uuid不一致,如果是克隆机器,修改网卡配置文件删除uuid那一行

cat /sys/class/dmi/id/product_uuid

  1. 修改Linux内核参数,添加网桥过滤器和地址转发功能 并加载网桥过滤器模块

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

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

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

net.ipv4.ip_forward=1

vm.swappiness=0

vm.overcommit_memory=1

vm.panic_on_oom=0

fs.inotify.max_user_instances=8192

fs.inotify.max_user_watches=1048576

fs.file-max=52706963

fs.nr_open=52706963

net.ipv6.conf.all.disable_ipv6=1

net.netfilter.nf_conntrack_max=2310720

EOF

modprobe br_netfilter

lsmod |grep conntrack

modprobe ip_conntrack

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

6、安装ipvs 转发支持 【所有节点】

###系统依赖包

yum install -y conntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git

### 开启ipvs 转发

modprobe br_netfilter

cat > /etc/sysconfig/modules/ipvs.modules << EOF

#!/bin/bash

modprobe -- ip_vs

modprobe -- ip_vs_rr

modprobe -- ip_vs_wrr

modprobe -- ip_vs_sh

modprobe -- nf_conntrack

EOF

chmod 755 /etc/sysconfig/modules/ipvs.modules

bash /etc/sysconfig/modules/ipvs.modules

lsmod | grep -e ip_vs -e nf_conntrack

-----------------------------------

-----------------------------------

  1. 安装containerd [全部节点安装]

创建 /etc/modules-load.d/containerd.conf 配置文件:

cat << EOF > /etc/modules-load.d/containerd.conf

overlay

br_netfilter

EOF

modprobe overlay

modprobe br_netfilter

获取阿里云YUM源

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

下载安装containerd:

yum install -y containerd.io

生成containerd的配置文件

mkdir /etc/containerd -p

生成配置文件

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.6"

------

systemctl enable containerd

Created symlink from /etc/systemd/system/multi-user.target.wants/containerd.service to /usr/lib/systemd/system/containerd.service.

systemctl start containerd

ctr images ls

  • 安装kubernetes 1.27.0

1.添加阿里云YUM软件源

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

-----------------------------------

2.安装kubeadm,kubelet和kubectl

yum install -y kubectl-1.27.0 kubelet-1.27.0 kubeadm-1.27.0

为了实现docker使用的cgroupdriver与kubelet使用的cgroup的一致性,建议修改如下文件内容。

# vim /etc/sysconfig/kubelet

KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"

设置kubelet为开机自启动即可,由于没有生成配置文件,集群初始化后自动启动

# systemctl enable kubelet

-----------------------------------

准备k8s1.27.0 所需要的镜像

kubeadm config images list --kubernetes-version=v1.27.0

集群初始化

使用kubeadm init命令初始化

在master上初始化

kubeadm init --kubernetes-version=v1.27.0 --pod-network-cidr=10.224.0.0/16 --apiserver-advertise-address=172.16.110.128 --image-repository registry.aliyuncs.com/google_containers

--apiserver-advertise-address 集群通告地址

--image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址

--kubernetes-version K8s版本,与上面安装的一致

--service-cidr 集群内部虚拟网络,Pod统一访问入口

--pod-network-cidr Pod网络,,与下面部署的CNI网络组件yaml中保持一致

节点node加入集群

kubeadm join 172.16.10.81:6443 --token ggamya.2vrdww877b7hllp0 \

        --discovery-token-ca-cert-hash sha256:f031f144612ba3a912f1bf22a397565eaaad6b218693740d4f3c0e7d63810b40

  1. 集群部署网络插件

网络组件有很多种,只需要部署其中一个即可,推荐Calico。

Calico是一个纯三层的数据中心网络方案,Calico支持广泛的平台,包括Kubernetes、OpenStack等。

Calico 在每一个计算节点利用 Linux Kernel 实现了一个高效的虚拟路由器( vRouter) 来负责数据转发,而每个 vRouter 通过 BGP 协议负责把自己上运行的 workload 的路由信息向整个 Calico 网络内传播。

此外,Calico 项目还实现了 Kubernetes 网络策略,提供ACL功能。

下载Calico,修改网段CIDR为pod网段

wget https://docs.tigera.io/archive/v3.24/manifests/calico.yaml

vim calico.yaml

...

- name: CALICO_IPV4POOL_CIDR

  value: "10.244.0.0/16"

...

kubectl apply -f calico.yaml

kubectl get pod -n kube-system

1分钟配置Kubectl命令自动补全功能

在使用bash命令行时,在提示符下输入某个命令的前面几个字符,然后按TAB键,就会列出以这几个字符开头的命令供我们选择。不光如此,还可以进行参数补全,但只限于文件参数,当输入到参数部分时,按TAB键,就会列出以这个参数开头的文件路径供我们选择。   现在http://www.caliban.org/bash/上提供了一个名为bash-completion的软件包,通过一个复杂的脚本bash_completion实现可编程的补全程序,减少系统管理员日常维护工作,减少差错,提高工作效率。

网站:

 bash-completion补全工具官网:https://caliban.org/bash/

安装:

 在日常管理k8s集群的时候,时刻都会使用到Kubectl命令行工具,但是该命令还是挺复杂的,使用中也记不住那么多的api选项,所以这里介绍一下Kubectl命令补全工具(其实是Linux中bash命令自动补全工具)的安装。

 yum -y install bash-completion

 source /usr/share/bash-completion/bash_completion

 source <(kubectl completion bash)

 echo "source <(kubectl completion bash)" >> ~/.bashrc

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dzcro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值