写点什么

使用 containerd 从 0 搭建 k8s(kubernetes) 集群

作者:tiandizhiguai
  • 2023-06-12
    浙江
  • 本文字数:3171 字

    阅读完需:约 10 分钟

准备环境

准备两台服务器节点,如果需要安装虚拟机,可以参考《wmware和centos安装过程》


设置主机名,所有节点都执行
vim /etc/hosts#增加192.168.109.130 centos01192.168.109.131 centos02
复制代码
关闭防火墙,所有节点都执行
systemctl stop firewalldsystemctl disable firewalldsetenforce 0vim /etc/selinux/config#修改SELINUX的值SELINUX=disabled
复制代码
关闭 swap 内存,所有节点都执行
swapoff -avim /etc/fstab# 将该行注释掉#/dev/mapper/cs-swap swap
复制代码
配置网桥,所有节点都执行

1.修改参数


vim /etc/sysctl.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables   = 1net.ipv4.ip_forward         = 1vm.swappiness             = 0
复制代码


2.然后,加载如下两个模块,所有节点都执行


modprobe ip_vs_rrmodprobe br_netfilter
复制代码


3.生效配置


[root@centos01 opt]# sysctl -pnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1vm.swappiness = 0
复制代码

安装 containerd

以下步骤所有节点都执行。

安装
wget https://github.com/containerd/containerd/releases/download/v1.7.2/containerd-1.7.2-linux-amd64.tar.gztar Cxzvf /usr/local containerd-1.7.2-linux-amd64.tar.gz
复制代码
修改配置
mkdir /etc/containerdcontainerd config default > /etc/containerd/config.tomlvim /etc/containerd/config.toml#SystemdCgroup的值改为trueSystemdCgroup = true#由于国内下载不到registry.k8s.io的镜像,修改sandbox_image的值为:sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"
复制代码
启动服务
mkdir -p /usr/local/lib/systemd/systemwget https://raw.githubusercontent.com/containerd/containerd/main/containerd.servicemv containerd.service /usr/local/lib/systemd/systemsystemctl daemon-reloadsystemctl enable --now containerd
复制代码
验证安装
[root@centos01 opt]# ctr versionClient:  Version:  v1.7.2  Revision: 0cae528dd6cb557f7201036e9f43420650207b58  Go version: go1.20.4
Server: Version: v1.7.2 Revision: 0cae528dd6cb557f7201036e9f43420650207b58 UUID: 747cbf1b-17d4-4124-987a-203d8c72de7c
复制代码

安装 runc

以下步骤所有节点都执行。

准备文件
wget https://github.com//opencontainers/runc/releases/download/v1.1.7/runc.amd64chmod +x runc.amd64
复制代码
查找 containerd 安装时已安装的 runc 所在的位置
[root@centos01 opt]# which runc/usr/bin/runc
复制代码
替换上一步的结果文件
mv -f runc.amd64 /usr/bin/runc
复制代码
验证安装
[root@centos01 opt]# runc -vrunc version 1.1.7commit: v1.1.7-0-g860f061bspec: 1.0.2-devgo: go1.20.3libseccomp: 2.5.4
复制代码

安装 kubernetes

添加阿里云的 kubernetes 源,所有节点都执行
cat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF
复制代码
安装最新版,所有节点都执行
yum install -y kubeadm kubelet kubectl
复制代码
开机自启动,所有节点都执行
systemctl enable kubelet
复制代码
验证安装,所有节点都执行
[root@centos01 opt]# kubeadm versionkubeadm version: &version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.1", GitCommit:"4c9411232e10168d7b050c49a1b59f6df9d7ea4b", GitTreeState:"clean", BuildDate:"2023-04-14T13:20:04Z", GoVersion:"go1.20.3", Compiler:"gc", Platform:"linux/amd64"}
复制代码
初始化集群,仅在 master(centos01)上执行
[root@centos01 opt]# kubeadm init --apiserver-advertise-address 192.168.109.130 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.27.1 --pod-network-cidr=10.244.0.0/16
.........
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.109.130:6443 --token osh87v.zvo010kamsr8esmp \ --discovery-token-ca-cert-hash sha256:ff4607c7c194e9f756b1eb509e64d2d926b5f8f9556a85c3c14a2d25add28230
复制代码


其中,–apiserver-advertise-address:通告侦听地址–image-repository:指定镜像地址使用阿里云的,默认会使用谷歌镜像–kubernetes-version:指定当前的 kubernetes 的版本–pod-network-cidr=10.244.0.0/16:flannel 网络的固定地址范围


仔细阅读 kubeadm init 执行的结果,根据提示,还需要进行 3 步操作


1.笔者用的是 root 用户,仅在 master 节点执行


vim /etc/profile#在最后一行增加export KUBECONFIG=/etc/kubernetes/admin.conf
复制代码


生效环境变量


source /etc/profile
复制代码


2.安装网络插件,可以选择 calico 或 flannel,这里选择安装 flannel,仅在 master 节点执行


下载安装文件


wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.ymlvim kube-flannel.yml#和--pod-network-cidr的一样"Network": "10.244.0.0/16"
复制代码


安装网络插件


kubectl apply -f kube-flannel.yml
复制代码


3.其他节点加入集群,非 master 节点都执行


[root@centos02 opt]# kubeadm join 192.168.109.130:6443 --token osh87v.zvo010kamsr8esmp --discovery-token-ca-cert-hash sha256:ff4607c7c194e9f756b1eb509e64d2d926b5f8f9556a85c3c14a2d25add28230
复制代码
验证安装结果,仅在 master 节点执行
[root@centos01 opt]# kubectl get nodesNAME       STATUS   ROLES           AGE    VERSIONcentos01   Ready    control-plane   134m   v1.27.1centos02   Ready    <none>          133m   v1.27.1
复制代码


[root@centos01 opt]# kubectl get pods -n kube-systemNAME                               READY   STATUS    RESTARTS   AGEcoredns-7bdc4cb885-l4vs2           1/1     Running   0          9m3scoredns-7bdc4cb885-wzc8x           1/1     Running   0          9m3setcd-centos01                      1/1     Running   0          9m18skube-apiserver-centos01            1/1     Running   0          9m18skube-controller-manager-centos01   1/1     Running   0          9m19skube-proxy-m92hr                   1/1     Running   0          28skube-proxy-pv4hw                   1/1     Running   0          9m3skube-scheduler-centos01            1/1     Running   0          9m18s
复制代码


强烈建议重启一遍所有服务器节点,有可能会暴露出来隐藏的问题,再次验证以上结果,仍然正常。


至此完成安装,接下来可以部署应用了,推荐一个平台:https://gitee.com/i512team/dhorse,是一个简单易用、以应用为中心的云原生 DevOps 系统,具有持续集成、持续部署、微服务治理等功能,主要特点:部署简单、操作简洁、功能快速。

用户头像

tiandizhiguai

关注

我笑世人看不穿 2018-11-08 加入

还未添加个人简介

评论

发布
暂无评论
使用containerd从0搭建k8s(kubernetes)集群_k8s_tiandizhiguai_InfoQ写作社区