Ubuntu20.04部署containerd+kubernetes 1.24.2+calico网络

版本说明

操作系统:Ubuntu 20.04

kubelet:1.24.2

kubeadm:1.24.2

kubelet:1.24.2

环境准备(三台都需要操作)

主机IP地址

master节点:192.168.12.30

node1节点:192.168.12.31

node2节点:192.168.12.32

关闭防火墙

systemctl stop ufw.service      #关闭防火墙

systemctl disable ufw.service   #永久关闭防火墙,开机不自启

systemctl status ufw.service    #查看防火墙状态

iptables -F                    #清空防火墙规则

配置主机名

编辑hosts文件

root@master:~# vim /etc/hosts

添加:

192.168.12.30 master

192.168.12.31 node1

192.168.12.32 node2

保存后将此文件拷贝到另外两台主机上

root@master:~# scp /etc/hosts root@node1:/etc

root@master:~# scp /etc/hosts root@node2:/etc

测试网络连通性

root@master:~# ping node1

root@master:~# ping node2

关闭swap分区

root@master:~# swapoff -a                            #临时关闭

root@master:~# vim /etc/fstab                       #永久关闭

开头加#注释/swap.img      none      swap      sw   0     0

禁用swap

配置系统信息,禁止使用swap空间,只有在报内存不够(omm)使用时才能使用swap空间

root@smaster:~# vim /etc/sysctl.conf

添加:

vm.swappiness = 1

root@master:~# sysctl -p                       #重新加载配置文件

vm.swappiness = 1

root@master:~# free -m                  #验证是否关闭,total为0证明关闭

将桥接的IPv4的流量传递到iptables的链

有一些流量是不能走iptables链,因为linux内核有一个过滤器,每个流量都会经过他,然后再匹配是否进入当前应用程序去处理,所以会导致流量丢失

br_netfilter:br_netfilter模块可以是iptables规则可以再linux Bridags上面工作,用于将桥接的流量转发至iptables链

永久性加载内核

root@master:~# vim /etc/modules-load.d/k8s.conf

添加:

overlay

br_netfilter

临时加载内核

root@master:~# modprobe overlay

root@master:~# modprobe br_netfilter

编辑sysctl.conf

root@master:~# vim /etc/sysctl.conf

添加:

net.ipv4.ip_forward = 1

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

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

root@master:~# sysctl -p                               #生效配置

 

安装containerd

没有使用国内源的建议使用国内源,我这边是在安装系统时已经设置为国内的aliyun

更新源

root@master:~# apt-get update

安装一些必要的系统工具

root@master:~# apt-get -y install apt-transport-https ca-certificates curl software-properties-common

安装GPG证书

root@master:~# curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add –

写入软件源信息

root@master:~# add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

更新软件源

root@master:~# apt-get -y update

安装containerd

root@master:~# apt-get -y install containerd.io

查看版本

root@master:~# containerd -v

 

更改containerd配置文件

修改容器资源站地址

原:sandbox_image = "registry.k8s.io/pause:3.6"

修改为:sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.6"

开启systemd_cgroup驱动器

原:systemd_cgroup = false

修改为:systemd_cgroup = true

启动containerd

root@master:~# systemctl restart containerd.service

root@master:~# systemctl status containerd.service

root@master:~# systemctl enable containerd

 

查看版本

root@master:~# ctr version

安装kubernetes准备工作

root@master:~# apt-get update && apt-get install -y apt-transport-https

root@master:~# curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

root@master:~# cat <<EOF >/etc/apt/sources.list.d/kubernetes.list

> deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main

> EOF

root@master:~# apt-get update

查看可以下载的版本

root@master:~# apt-cache madison kubelet         

安装kubelet、kubeadm、kubectl

root@master:~# apt-get install -y kubelet=1.24.2-00 kubeadm=1.24.2-00 kubectl=1.24.2-00

查看版本

root@master:~# kubelet –version

root@master:~# kubeadm version

安装工具,在使用kubeadm、kubectl时可以使用tab键

root@master:~# apt install bash-completion

root@master:~# source <(kubeadm completion bash)

root@master:~# source <(kubectl completion bash)

root@master:~# source <(crictl completion bash)

root@master:~# vim .bashrc

添加:

source <(kubeadm completion bash)

source <(kubectl completion bash)

source <(crictl completion bash)

root@master:~# source .bashrc

指定k8s使用containerd

root@master:~# crictl config runtime-endpoint unix:///run/containerd/containerd.sock

root@master:~# vim /etc/crictl.yaml

root@master:~# vim /etc/containerd/config.toml

添加:io.containerd.runtime.v1.linux

root@master:~# systemctl daemon-reload

root@master:~# systemctl restart containerd.service

root@master:~# crictl images

下载镜像,查看镜像

root@ master:~# crictl pull nginx

root@master:~# crictl images

以下master节点操作

生成配置文件

root@master:~# kubeadm config print init-defaults > init.yaml

root@master:~# vim init.yaml

修改:

master主机节点的IP地址

原:advertiseAddress: 1.2.3.4

修改为advertiseAddress: 192.168.12.30

master主机节点的主机名

原:name: node

修改为:name: master

镜像仓库地址

原:imageRepository: k8s.gcr.io

修改为:imageRepository: registry.aliyuncs.com/google_containers

自己的kubernetes版本

原:kubernetesVersion: 1.24.0

修改为:kubernetesVersion: 1.24.2

初始化集群

root@master:~# kubeadm init --config=init.yaml

 

提示想要控制集群的话需要执行如下命令

root@master:~# mkdir -p $HOME/.kube

root@master:~# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

root@master:~# sudo chown $(id -u):$(id -g) $HOME/.kube/config

root@master:~# export KUBECONFIG=/etc/kubernetes/admin.conf

安装colico

root@master:~#

curl https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml -O

root@master:~# vim calico.yaml

修改:

- name: CALICO_IPV4POOL_CIDR

  value: "10.96.0.0/12"

root@master:~# kubectl apply -f calico.yaml

root@master:~# kubectl get pod --all-namespaces

 


添加集群节点(两台node节点执行)

 

node1节点

root@node1:~# kubeadm join 192.168.12.30:6443 --token abcdef.0123456789abcdef \

> --discovery-token-ca-cert-hash sha256:0b276b86bdc74d0af08ffc7bafcbfa30acdfb4a9087c9e71d6864b9a8ccfe58e

node2节点

root@node2:~# kubeadm join 192.168.12.30:6443 --token abcdef.0123456789abcdef \

> --discovery-token-ca-cert-hash sha256:0b276b86bdc74d0af08ffc7bafcbfa30acdfb4a9087c9e71d6864b9a8ccfe58e

 

master节点执行

查看节点

root@master:~# kubectl get nodes

root@master:~# kubectl get pod --all-namespaces

同步需要一定的时间

 

配置coredns冗余

root@master:~# kubectl get pod --all-namespaces -o wide

 

root@master:~# kubectl --namespace kube-system rollout restart deployment coredns

 root@master:~# kubectl get pod --all-namespaces -o wide

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值