k8s1.27.x 最新版本使用kubeadm 的containerd的方式安裝
一:k8s1.27.x 的概述
太平洋時(shí)間 2023 年 4 月 11 日,Kubernetes 1.27 正式發(fā)布。此版本距離上版本發(fā)布時(shí)隔 4 個(gè)月,是 2023 年的第一個(gè)版本。
新版本中 release 團(tuán)隊(duì)跟蹤了 60 個(gè) enhancements,比之前版本都要多得多。其中 13 個(gè)功能升級為穩(wěn)定版,29 個(gè)已有功能進(jìn)行優(yōu)化升級為 Beta,另有 18 個(gè) Alpha 級別的功能,大多數(shù)為全新功能。
1.1:k8s 1.27.x 更新
鏡像倉庫切換 http://k8s.gcr.io 到 http://registry.gcr.io
KEP-1847:StatefulSet PVC 自動(dòng)刪除功能特性 Beta
KEP-3453:優(yōu)化大型集群中 kube-proxy 的 iptables 模式性能
KEP-2831 和 KEP-647:APIServer 和 Kubelet 的 Tracing 功能 Beta
KEP-3077:上下文日志
KEP-1287:Pod 資源的縱向彈性伸縮
KEP-3386:Kubelet 事件驅(qū)動(dòng) PLEG 升級為 Beta
KEP-3476:Volume Group 快照 Alpha(API)
KEP-3838 和 KEP-3521:Pod 調(diào)度就緒態(tài)功能增強(qiáng)
KEP-3243:Deployment 滾動(dòng)更新過程中的調(diào)度優(yōu)化
KEP-2876:使用通用表達(dá)式語言(CEL)來驗(yàn)證 CRD
KEP-2258:節(jié)點(diǎn)日志查詢
KEP-3659:kubectl apply –prune 重新設(shè)計(jì)
重要功能
二:k8s1.27.x 的安裝
2.1 系統(tǒng)安裝介紹
操作系統(tǒng):
Rockylinux8.7x64
主機(jī)名:
cat /etc/hosts
---
172.16.10.81 hadoop01
172.16.10.82 hadoop02
172.16.10.83 hadoop03
172.16.10.84 hadoop04
172.16.10.85 hadoop05
172.16.10.86 hadoop06
----
2.2 系統(tǒng)初始化
#修改時(shí)區(qū),同步時(shí)間
yum install chrond -y
vim /etc/chrony.conf
-----
ntpdate ntp1.aliyun.com iburst
-----
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo 'Asia/Shanghai' > /etc/timezone
#關(guān)閉防火墻,selinux
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
## 關(guān)閉swap
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab
#系統(tǒng)優(yōu)化
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
#確保每臺(tái)機(jī)器的uuid不一致,如果是克隆機(jī)器,修改網(wǎng)卡配置文件刪除uuid那一行
cat /sys/class/dmi/id/product_uuid
2.2 安裝ipvs 轉(zhuǎn)發(fā)支持 【所有節(jié)點(diǎn)】
###系統(tǒng)依賴包
yum install -y conntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git
### 開啟ipvs 轉(zhuǎn)發(fā)
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
2.3 安裝containerd [全部節(jié)點(diǎn)安裝]
創(chuàng)建 /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
下載安裝:
yum install -y containerd.io
文章來源:http://www.zghlxwxcb.cn/news/detail-484833.html
生成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
三:安裝 k8s1.27.x
3.1 配置k8s1.27.x的yum 源
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
## 查看所有的可用版本
yum list kubelet --showduplicates | sort -r |grep 1.27
3.2 安裝kubeadm,kubelet和kubectl
目前最新版本是1.27.0,我們直接上最新版
yum install -y kubectl kubelet kubeadm
為了實(shí)現(xiàn)docker使用的cgroupdriver與kubelet使用的cgroup的一致性,建議修改如下文件內(nèi)容。
# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
設(shè)置kubelet為開機(jī)自啟動(dòng)即可,由于沒有生成配置文件,集群初始化后自動(dòng)啟動(dòng)
# systemctl enable kubelet
-----------------------------------
準(zhǔn)備k8s1.27.0 所需要的鏡像
kubeadm config images list --kubernetes-version=v1.25.0
集群初始化
使用kubeadm init命令初始化
在flyfish81上執(zhí)行,報(bào)錯(cuò)請看k8s報(bào)錯(cuò)匯總
kubeadm init --kubernetes-version=v1.27.0 --pod-network-cidr=10.224.0.0/16 --apiserver-advertise-address=172.16.10.81 --image-repository registry.aliyuncs.com/google_containers
--apiserver-advertise-address 集群通告地址
--image-repository 由于默認(rèn)拉取鏡像地址k8s.gcr.io國內(nèi)無法訪問,這里指定阿里云鏡像倉庫地址
--kubernetes-version K8s版本,與上面安裝的一致
--service-cidr 集群內(nèi)部虛擬網(wǎng)絡(luò),Pod統(tǒng)一訪問入口
--pod-network-cidr Pod網(wǎng)絡(luò),,與下面部署的CNI網(wǎng)絡(luò)組件yaml中保持一致
-----------------------------------
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 172.16.10.81:6443 --token ggamya.2vrdww877b7hllp0 \
--discovery-token-ca-cert-hash sha256:f031f144612ba3a912f1bf22a397565eaaad6b218693740d4f3c0e7d63810b40
-----------------------------------
hadoop01/hadoop03執(zhí)行
kubeadm join 172.16.10.81:6443 --token ggamya.2vrdww877b7hllp0 \
--discovery-token-ca-cert-hash sha256:f031f144612ba3a912f1bf22a397565eaaad6b218693740d4f3c0e7d63810b40
# 查看集群節(jié)點(diǎn):
kubectl get node
3.3 集群部署網(wǎng)絡(luò)插件
網(wǎng)絡(luò)組件有很多種,只需要部署其中一個(gè)即可,推薦Calico。
Calico是一個(gè)純?nèi)龑拥臄?shù)據(jù)中心網(wǎng)絡(luò)方案,Calico支持廣泛的平臺(tái),包括Kubernetes、OpenStack等。
Calico 在每一個(gè)計(jì)算節(jié)點(diǎn)利用 Linux Kernel 實(shí)現(xiàn)了一個(gè)高效的虛擬路由器( vRouter) 來負(fù)責(zé)數(shù)據(jù)轉(zhuǎn)發(fā),而每個(gè) vRouter 通過 BGP 協(xié)議負(fù)責(zé)把自己上運(yùn)行的 workload 的路由信息向整個(gè) Calico 網(wǎng)絡(luò)內(nèi)傳播。
此外,Calico 項(xiàng)目還實(shí)現(xiàn)了 Kubernetes 網(wǎng)絡(luò)策略,提供ACL功能。
1.下載Calico
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
kubectl get node
kubectl get pod -n kube-system
部署一個(gè)dashborad
wget https://raw.githubusercontent.com/cby-chen/Kubernetes/main/yaml/dashboard.yaml
kubectl apply -f dashboard.yaml
kubectl get pod -n kubernetes-dashboard -o wide
kubectl get svc -n kubernetes-dashboard
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
---
將ClusterIP 改為NodePort
---
kubectl get svc -n kubernetes-dashboard
創(chuàng)建用戶:
wget https://raw.githubusercontent.com/cby-chen/Kubernetes/main/yaml/dashboard-user.yaml
kubectl apply -f dashboard-user.yaml
創(chuàng)建token
kubectl -n kubernetes-dashboard create token admin-user
打開瀏覽器訪問:
https://172.16.10.81:31619/#/login
文章來源地址http://www.zghlxwxcb.cn/news/detail-484833.html
到了這里,關(guān)于k8s1.27.x 最新版本使用kubeadm 的containerd的方式安裝的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!