背景
公司使用的是交老的k8s版本(1.16),由于老版本的K8s对于现在很多新特性不支持,所以需要升级到新版本。目前2023年7月11日最新版本的k8s是v1.27.3。通过参考官方文档进行k8s部署工作。其中涉及到操作系统配置、防火墙配置、私有镜像仓库等。
推荐一个AI工具:态灵AI: chatai.taigoodai.com
环境
操作系统:centos7.9
机器:1个master 和 1个node 节点
安装
设置系统
# 所有机器设置hostname
hostnamectl set-hostname master1
hostnamectl set-hostname node1
# 所有机器增加内网ip和 master1 对应关系
vi /etc/hosts
如:
master1 192.168.1.1
node1 192.168.1.3
关闭防火墙
# 注意,如果不关闭防火墙,需要将kubernates所有端口放行
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
设置机器同步
可使用ntpdate,如果是各大厂的云服务器,也可以不设置,云服务器已设置好
关闭交换空间
sudo swapoff -a
sudo sed -i 's/.*swap.*/#&/' /etc/fstab
关闭selinux
getenforce
cat /etc/selinux/config
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
cat /etc/selinux/config
使用阿里云的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
# 是否检查 gpg 签名文件
gpgcheck=0
# 是否检查 gpg 签名文件
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
配置网桥
# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
vm.swappiness = 0
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
# 应用 sysctl 参数而不重新启动
sudo sysctl --system
安装containerd
由于新的Kubernates [1.24.0以上] 建议使用contanerd, 而且kubernates如何使用containerd 不会像使用docker一样,要中间转几层,故其性能很好。大概CPU使用率减少60%,内存使用率能减少12%。文章来源:https://www.toymoban.com/news/detail-740498.html
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum install -y containerd.io containerd
sudo systemctl stop containerd.service
sudo containerd config default > /etc/containerd/config.toml
sudo sed -i "s#registry.k8s.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g" /etc/containerd/config.toml
# 更改/etc/containerd/config.toml ,disabled_plugins 中删除 cri
vi /etc/containerd/config.toml
sudo sed -i "s#SystemdCgroup = false#SystemdCgroup = true#g" /etc/containerd/config.toml
sudo systemctl enable --now containerd.service
sudo systemctl status containerd.service
sudo modprobe br_netfilter
安装k8s
sudo yum install -y kubelet-1.27.3-0 kubeadm-1.27.3-0 kubectl-1.27.3-0 --disableexcludes=kubernetes --nogpgcheck
sudo systemctl daemon-reload
sudo systemctl restart kubelet
sudo systemctl enable kubelet
初始化k8s master节点
kubeadm init --image-repository=registry.aliyuncs.com/google_containers
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 让master参与服务调度,不做control-plane
kubectl taint node master1 node-role.kubernetes.io/control-plane-
kubectl label node master1 kubernetes.io/role=master
sudo crictl config runtime-endpoint unix:///var/run/containerd/containerd.sock
增加k8s worker节点
利用上一步中 kubeadm init后产生的命令在work节点中执行文章来源地址https://www.toymoban.com/news/detail-740498.html
kubeadm join 172.16.64.9:6443 --token token.fake --discovery-token-ca-cert-hash sha256:fake
安装calico网络插件
wget --no-check-certificate https://projectcalico.docs.tigera.io/archive/v3.25/manifests/calico.yaml
# 修改 calico.yaml 文件
vim calico.yaml
# 在 - name: CLUSTER_TYPE 下方添加如下内容
- name: CLUSTER_TYPE
value: "k8s,bgp"
# 下方为新增内容
- name: IP_AUTODETECTION_METHOD
value: "interface=网卡名称"
# 例如:- name: IP_AUTODETECTION_METHOD
# 例如: value: "interface=eth0" 可使用通配符,例如:interface="eth.*|en.*"
kubectl apply -f calico.yaml
查看集群状态
kubectl cluster-info
kubectl get nodes
kubectl get pods -A -o wide
常用命令
containerd命令
# 查看镜像
ctr image list
或者
crictl images
# 拉取镜像, 分为非k8s容器用 和 k8s容器用。一定要加上--all-platforms
ctr i pull --all-platforms registry.xxxxx/pause:3.2
ctr -n k8s.io i pull --all-platforms registry.aliyuncs.com/google_containers/pause:3.2
或者,要登录的harbor
ctr i pull --user user:passwd --all-platforms registry.aliyuncs.com/google_containers /pause:3.2
或者,不推荐,没有 --all-platforms
crictl pull --creds user:passwd registry.aliyuncs.com/google_containers /pause:3.2
# 镜像打tag
镜像标记tag
ctr -n k8s.io i tag registry.xxxxx/pause:3.2 k8s.gcr.io/pause:3.2
或者 强制覆盖
ctr -n k8s.io i tag --force registry.xxxxx/pause:3.2 k8s.gcr.io/pause:3.2
# 删除镜像tag
ctr -n k8s.io i rm registry.xxxxx/pause:3.2
# 推送镜像
ctr i push --all-platforms --user user:passwd registry.xxxxx/pause:3.2
# 导出/保存镜像
ctr -n=k8s.io i export kube-apiserver:v1.28.0.tar xxxxx.com/kube-apiserver:v1.28.0 --all-platforms
ctr -n=k8s.io i import kube-apiserver:v1.28.0.tar
到了这里,关于Kubernetes[k8s] 最新版1.27.3 - 1.28.0安装教程,使用containerd模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!