Kubernetes 1.28.2集群安裝過程中的關鍵步驟詳解(最新推薦)
一、引言
1、Kubernetes簡介
Kubernetes(通常簡稱為K8s)是一個開源的容器編排平臺,最初由Google開發(fā),并于2014年發(fā)布為開源項目。它提供了一種自動化容器化應用程序部署、擴展和管理的方法。
Borg 的誕生:
谷歌的工程師們在面對大規(guī)模、分布式、可擴展應用的挑戰(zhàn)時,創(chuàng)建了 Borg 系統(tǒng),用于管理和運行谷歌的內部服務和應用。Borg 采用了容器化的思想,將應用程序打包成容器并在集群中運行。
Omega 的演進:
Borg 的經驗在谷歌內部得到了積累和總結。在 Borg 的基礎上,谷歌發(fā)展出了 Omega 系統(tǒng),這是 Borg 的下一代版本,繼續(xù)探索分布式系統(tǒng)管理的更高級別的抽象。
Kubernetes 的誕生:
2014年,Google 將 Borg 的一部分經驗開源,推出了 Kubernetes 項目。Kubernetes 最初是由 Google、Red Hat、Microsoft 等公司共同推動的,旨在為云原生應用提供一個開源的容器編排和管理平臺??梢哉f,k8s是站在Borg這個巨人的肩膀上而開發(fā)出的容器編排管理系統(tǒng)
推出后,Kubernetes 很快得到了開源社區(qū)的廣泛關注和參與。云服務提供商、軟件公司以及大量的開發(fā)者紛紛加入到 Kubernetes 的開發(fā)和維護中,形成了龐大的開源社區(qū)。
2、Kubernetes 1.28版本特性介紹
Kubernetes 1.28版本作為2023年的第二個主要版本更新,引入了一系列重要的新功能和改進。
非正常節(jié)點關閉恢復:
- Kubernetes 1.28版本中,節(jié)點非體面關閉(non-graceful shutdown)特性達到GA階段,意味著kubelet能夠更加穩(wěn)定地檢測到節(jié)點即將關閉的事件,并確保在節(jié)點實際下線前正確、有序地終止節(jié)點上的Pod,從而避免數據丟失和資源占用問題。
內置Sidecar容器支持:
- 此版本增強了對Sidecar容器的內置支持,包括更方便的配置管理、生命周期管理和資源隔離等方面,以更好地支持微服務架構中的輔助容器。
Job優(yōu)化:
- 對Kubernetes Job對象進行了優(yōu)化,涉及到更快的完成狀態(tài)判定、更靈活的調度策略以及作業(yè)清理機制的改進等。
Proxy改進:
- Kubernetes代理組件(kube-proxy)的功能得到了增強,涉及性能提升、資源利用率改進或新增網絡策略特性等。
調度框架優(yōu)化:
- 調度框架在Kubernetes 1.28版本中進行了調整,減少了不必要的重試操作,從而提升了整體調度性能,這對于集群規(guī)模較大或者工作負載較為復雜的場景尤其重要。
3、安裝前的準備工作
準備至少2臺服務器,虛擬機或服務器都可以,資源配置如下
※ 安裝k8s至少需要2G或以上內存
二、環(huán)境準備
1、禁用防火墻和SELinux
在兩臺機器上都要執(zhí)行
關閉防火墻并禁止開機自啟動
[root@master ~]# systemctl stop firewalld && systemctl disable firewalld
[root@node ~]# systemctl stop firewalld && systemctl disable firewalld
關閉SELinux
[root@master ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config [root@master ~]# setenforce 0 [root@master ~]# getenforce Permissive
[root@node ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config [root@node ~]# setenforce 0 [root@node ~]# getenforce Permissive
2、設置時間同步
[root@master ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime [root@master ~]# date Tue Mar 19 14:10:22 CST 2024
[root@node ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime [root@node ~]# date Tue Mar 19 14:10:22 CST 2024
3、關閉swap交換分區(qū)
[root@master ~]# swapoff -a
[root@node ~]# swapoff -a
4、修改hosts文件
[root@master ~]# vi /etc/hosts # 添加如下兩行內容 192.168.40.110 master 192.168.40.111 node
[root@node ~]# vi /etc/hosts # 添加如下兩行內容 192.168.40.110 master 192.168.40.111 node
5、修改機器內核參數
[root@master ~]# modprobe br_netfilter [root@master ~]# cat > /etc/sysctl.d/k8s.conf <<EOF > net.bridge.bridge-nf-call-ip6tables = 1 > net.bridge.bridge-nf-call-iptables = 1 > net.ipv4.ip_forward = 1 > EOF [root@master ~]# sysctl -p /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1
[root@node ~]# modprobe br_netfilter [root@node ~]# cat > /etc/sysctl.d/k8s.conf <<EOF > net.bridge.bridge-nf-call-ip6tables = 1 > net.bridge.bridge-nf-call-iptables = 1 > net.ipv4.ip_forward = 1 > EOF [root@node ~]# sysctl -p /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1
三、安裝Docker與containerd
1、配置阿里repo源
[root@master ~]# yum install yum-utils device-mapper-persistent-data lvm2 -y [root@master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@node ~]# yum install yum-utils device-mapper-persistent-data lvm2 -y [root@node ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2、安裝container
[root@master ~]# yum install containerd.io -y
[root@node ~]# yum install containerd.io -y
3、修改containerd配置文件
[root@master ~]# mkdir -p /etc/containerd [root@master ~]# containerd config default > /etc/containerd/config.toml [root@master ~]# vim /etc/containerd/config.toml #將SystemdCgroup = false修改為SystemdCgroup = true
[root@node ~]# mkdir -p /etc/containerd [root@node ~]# containerd config default > /etc/containerd/config.toml [root@node ~]# vim /etc/containerd/config.toml #將SystemdCgroup = false修改為SystemdCgroup = true
4、設置container開機自啟動
[root@master ~]# systemctl enable containerd --now
[root@node ~]# systemctl enable containerd --now
5、設置服務的端點地址
[root@master ~]# cat > /etc/crictl.yaml <<EOF runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 10 debug: false EOF
[root@node ~]# cat > /etc/crictl.yaml <<EOF runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 10 debug: false EOF
6、安裝docker
[root@master ~]# yum install docker-ce -y [root@master ~]# systemctl enable docker --now [root@node ~]# yum install docker-ce -y [root@node ~]# systemctl enable docker --now
7、添加docker鏡像加速器
[root@master docker]# tee /etc/docker/daemon.json <<-'EOF' > { > "registry-mirrors": ["https://ofcqsr1y.mirror.aliyuncs.com"] > } > EOF [root@master docker]# sudo systemctl daemon-reload [root@master docker]# sudo systemctl restart docker [root@node docker]# tee /etc/docker/daemon.json <<-'EOF' > { > "registry-mirrors": ["https://ofcqsr1y.mirror.aliyuncs.com"] > } > EOF [root@node docker]# sudo systemctl daemon-reload [root@node docker]# sudo systemctl restart docke
四、安裝kubeadm、kubelet和kubectl
1、配置軟件源
[root@master ~]# vim /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 [root@node ~]# vim /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
2、安裝kubeadm、kubelet、kubectl
[root@master ~]# yum install kubelet-1.28.2 kubeadm-1.28.2 kubectl-1.28.2 -y [root@node ~]# yum install kubelet-1.28.2 kubeadm-1.28.2 kubectl-1.28.2 -y
3、設置kubelet開機自啟動
[root@master ~]# systemctl enable kubelet [root@node ~]# systemctl enable kubelet
五、初始化Master節(jié)點
1、上傳離線鏡像包
離線鏡像包我已經放到個人主頁的資源中,大家可以自行下載
2、導入鏡像
[root@master ~]# ctr -n=k8s.io images import k8s-1-28.tar.gz [root@master ~]# ctr -n=k8s.io images import k8s-1-28-etcd.tar.gz
3、設置容器運行時
[root@master ~]# crictl config runtime-endpoint /run/containerd/containerd.sock
4、初始化Master節(jié)點
[root@master ~]# kubeadm init --kubernetes-version=1.28.2 --apiserver-advertise-address=192.168.40.110 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 [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
查看節(jié)點狀態(tài)
[root@master ~]# kubectl get node NAME STATUS ROLES AGE VERSION master NotReady control-plane 66s v1.28.2
六、添加Work節(jié)點
1、設置容器運行時
[root@node ~]# crictl config runtime-endpoint /run/containerd/containerd.sock
2、導入鏡像
[root@node ~]# ctr -n=k8s.io images import k8s-1-28-etcd.tar.gz [root@node ~]# ctr -n=k8s.io images import k8s-1-28.tar.gz
3、將Work節(jié)點加入到集群
在Master節(jié)點上生成token
[root@master ~]# kubeadm token create --print-join-command
將生成的密鑰考到node節(jié)點執(zhí)行
[root@node ~]# kubeadm join 192.168.40.110:6443 --token 8zx14z.br9wctj9shxb08sq --discovery-token-ca-cert-hash sha256:6559345665c6beb70a9da42c2de6b85fc41f61d3dc3c527be3f7cc4629c503ab
4、查看集群狀態(tài)
[root@master ~]# kubectl get node NAME STATUS ROLES AGE VERSION master NotReady control-plane 10m v1.28.2 node NotReady <none> 5s v1.28.2
5、為Work節(jié)點設置標簽
[root@master ~]# kubectl label nodes node node-role.kubernetes.io/work=work #再次查看 [root@master ~]# kubectl get node NAME STATUS ROLES AGE VERSION master NotReady control-plane 10m v1.28.2 node NotReady work 5s v1.28.2
七、安裝網絡插件calico
1、calico介紹
- Calico是一個開源的網絡和網絡安全解決方案,專為容器化環(huán)境設計,旨在提供網絡連接和安全策略管理功能。它基于BGP協議,實現了一個純三層網絡方案,能夠與Kubernetes、AWS、OpenStack等云平臺良好地集成。
- Calico的核心功能包括網絡連接、網絡策略和安全性。通過使用BGP路由協議,Calico能夠在所有節(jié)點上通過Linux Kernel實現高效的vRouter進行數據轉發(fā)。每個vRouter都會將在本節(jié)點上運行的容器的路由信息廣播到整個Calico網絡,并自動設置到達其他節(jié)點的路由轉發(fā)規(guī)則。這種設計確保了所有容器之間的數據流量都是通過IP路由的方式完成互聯互通的。
2、安裝calico
[root@master ~]# curl -L -O https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml [root@master ~]# kubectl apply -f calico.yaml
3、查看Pod狀態(tài)
[root@master ~]# kubectl get pod -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system calico-kube-controllers-658d97c59c-fbrgn 1/1 Running 0 5m31s kube-system calico-node-qd6v2 1/1 Running 0 5m31s kube-system calico-node-s9khc 1/1 Running 0 5m31s kube-system coredns-66f779496c-l6nqx 1/1 Running 0 19m kube-system coredns-66f779496c-n7jn6 1/1 Running 0 19m kube-system etcd-master 1/1 Running 0 19m kube-system kube-apiserver-master 1/1 Running 0 19m kube-system kube-controller-manager-master 1/1 Running 5 19m kube-system kube-proxy-7wbhh 1/1 Running 0 9m15s kube-system kube-proxy-bb47r 1/1 Running 0 19m kube-system kube-scheduler-master 1/1 Running 5 19m
八、總結
- 環(huán)境準備:首先,需要確保安裝環(huán)境的準備充分。這包括選擇合適的操作系統(tǒng)(如Linux),確保硬件資源(如CPU、內存、存儲)滿足Kubernetes的最低要求,以及配置好網絡環(huán)境,如網絡插件的選擇和配置。
- 軟件依賴安裝:安裝Kubernetes之前,需要安裝一些必要的軟件依賴,如Docker或其他容器運行時(如Containerd)、kubectl命令行工具等。這些工具是Kubernetes正常運行的基礎。
- 集群初始化:使用kubeadm進行集群初始化是Kubernetes安裝的關鍵步驟。在初始化過程中,需要配置集群的一些基本參數,如API服務器的地址、網絡插件的選擇等。同時,還需要確保kubeadm能夠成功地在各個節(jié)點上部署和啟動必要的組件。
- 節(jié)點加入:初始化完成后,需要將其他節(jié)點加入到集群中。涉及到在各個節(jié)點上安裝必要的軟件,并使用kubeadm命令將節(jié)點加入到集群中。在節(jié)點加入過程中,需要確保節(jié)點的配置與集群一致,并且能夠與其他節(jié)點正常通信。
- 網絡配置:Kubernetes集群中的網絡配置是一個重要的環(huán)節(jié)。需要選擇合適的網絡插件(如Calico),并正確配置相關參數,以確保Pod之間的網絡互通以及服務的正常訪問。
到此這篇關于Kubernetes 1.28.2集群安裝過程中的關鍵步驟詳解(最新推薦)的文章就介紹到這了,更多相關Kubernetes 集群安裝內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
tkestack/gpu-manager在k8s1.23版本之后的使用方法
這篇文章主要介紹了tkestack/gpu-manager在k8s1.23版本之后的使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04基于云服務MRS構建DolphinScheduler2調度系統(tǒng)的案例詳解
這篇文章主要介紹了基于云服務MRS構建DolphinScheduler2調度系統(tǒng),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05Rancher部署配置開源Rainbond云原生應用管理平臺
這篇文章主要為大家介紹了Rancher部署配置開源Rainbond云原生應用管理平臺,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04