如何在Centos中搭建 K8s 1.23 集群
一、準(zhǔn)備基礎(chǔ)環(huán)境
1、準(zhǔn)備兩臺(tái)Centos服務(wù)器,建議2C4G及以上
角色 | IP | 系統(tǒng)版本 | 主機(jī)名 | 安裝組件 |
Master | 192.168.40.100 | Centos 7.9 | master1 | apiserver、controller-manager、scheduler、etcd、kube-proxy、docker、 calico |
Node | 192.168.40.101 | Centos 7.9 | node1 | kubelet、kube-proxy、docker、calico、coredns |
2、修改主機(jī)名
[root@localhost ~]# hostnamectl set-hostname master1 && bash [root@master1 ~]# hostnamectl set-hostname node1 && bash
3、修改hosts文件,使主機(jī)之間可以通過主機(jī)名訪問
Master節(jié)點(diǎn)
[root@master1 ~]# vim /etc/hosts #添加如下內(nèi)容 192.168.40.100 master1 192.168.40.101 node1
Node節(jié)點(diǎn)
[root@node1 ~]# vim /etc/hosts #添加如下內(nèi)容 192.168.40.100 master1 192.168.40.101 node1
4、關(guān)閉SELinux、firewalld、swap
關(guān)閉SELinux
#Master節(jié)點(diǎn) [root@master1 ~]# vim /etc/selinux/config #修改如下內(nèi)容 SELINUX=disabled #重啟服務(wù)器 [root@master1 ~]# reboot #Node節(jié)點(diǎn) [root@node1 ~]# vim /etc/selinux/config #修改如下內(nèi)容 SELINUX=disabled #重啟服務(wù)器
關(guān)閉防火墻
[root@master1 ~]# systemctl stop firewalld && systemctl disable firewalld [root@node1 ~]# systemctl stop firewalld && systemctl disable firewalld
關(guān)閉swap交換分區(qū)
#Master節(jié)點(diǎn) [root@master1 ~]# vim /etc/fstab #注釋下面這一行 #/dev/mapper/centos-swap swap swap defaults 0 0 #重啟服務(wù)器 [root@master1 ~]# reboot #Node節(jié)點(diǎn) [root@node1 ~]# vim /etc/fstab #注釋下面這一行 #/dev/mapper/centos-swap swap swap defaults 0 0 #重啟服務(wù)器 [root@node1 ~]# reboot
5、修改內(nèi)核參數(shù)
#加載 br_netfilter 內(nèi)核模塊 [root@master1 ~]# modprobe br_netfilter [root@master1 ~]# echo "modprobe br_netfilter" >> /etc/profile [root@master1 ~]# vim /etc/sysctl.d/k8s.conf #添加以下內(nèi)容 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 #加載配置參數(shù) [root@master1 ~]# sysctl -p /etc/sysctl.d/k8s.conf #加載 br_netfilter 內(nèi)核模塊 [root@node1 ~]# modprobe br_netfilter [root@node1 ~]# echo "modprobe br_netfilter" >> /etc/profile [root@node1 ~]# vim /etc/sysctl.d/k8s.conf #添加以下內(nèi)容 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 #加載配置參數(shù) [root@node1 ~]# sysctl -p /etc/sysctl.d/k8s.conf
6、配置鏡像源
安裝 yum-utils
軟件包,添加鏡像源
[root@master1 ~]# yum install yum-utils -y [root@master1 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo [root@master1 ~]# vim /etc/yum.repos.d/kubernetes.repo #添加如下內(nèi)容 [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 [root@node1 ~]# yum install yum-utils -y [root@node1 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo [root@node1 ~]# vim /etc/yum.repos.d/kubernetes.repo #添加如下內(nèi)容 [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0
7、開啟IPVS
[root@master1 ~]# vim /etc/sysconfig/modules/ipvs.modules #添加如下內(nèi)容 #!/bin/bash ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack" for kernel_module in ${ipvs_modules}; do /sbin/modinfo -F filename ${kernel_module} > /dev/null 2>&1 if [ 0 -eq 0 ]; then /sbin/modprobe ${kernel_module} fi done [root@master1 ~]# bash /etc/sysconfig/modules/ipvs.modules [root@node1 ~]# vim /etc/sysconfig/modules/ipvs.modules #添加如下內(nèi)容 #!/bin/bash ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack" for kernel_module in ${ipvs_modules}; do /sbin/modinfo -F filename ${kernel_module} > /dev/null 2>&1 if [ 0 -eq 0 ]; then /sbin/modprobe ${kernel_module} fi done [root@node1 ~]# bash /etc/sysconfig/modules/ipvs.modules
二、安裝k8s集群
1、安裝docker服務(wù)
#安裝docker [root@master1 ~]# yum install docker-ce -y #啟動(dòng)docker并設(shè)置開機(jī)自啟動(dòng) [root@master1 ~]# systemctl start docker && systemctl enable docker.service #添加docker鏡像加速器 [root@master1 ~]# tee /etc/docker/daemon.json <<-'EOF' > { > "registry-mirrors": ["https://ffunzkst.mirror.aliyuncs.com"] > } > EOF #重載配置并重新啟動(dòng) [root@master1 ~]# systemctl daemon-reload && systemctl restart docker && systemctl status docker #安裝docker [root@node1 ~]# yum install docker-ce -y #啟動(dòng)docker并設(shè)置開機(jī)自啟動(dòng) [root@node1 ~]# systemctl start docker && systemctl enable docker.service #添加docker鏡像加速器 [root@node1 ~]# tee /etc/docker/daemon.json <<-'EOF' > { > "registry-mirrors": ["https://ffunzkst.mirror.aliyuncs.com"] > } > EOF #重載配置并重新啟動(dòng) [root@node1 ~]# systemctl daemon-reload && systemctl restart docker && systemctl status docker
2、安裝k8s軟件包
#安裝軟件包 [root@master1 ~]# yum install -y kubelet-1.23.1 kubeadm-1.23.1 kubectl-1.23.1 #為kubelet設(shè)置開機(jī)自啟動(dòng) [root@master1 ~]# systemctl enable kubelet #安裝軟件包 [root@node1 ~]# yum install -y kubelet-1.23.1 kubeadm-1.23.1 kubectl-1.23.1 #為kubelet設(shè)置開機(jī)自啟動(dòng) [root@node1 ~]# systemctl enable kubelet
3、上傳k8s離線鏡像包到服務(wù)器,包可以到阿里云去下載
#加載鏡像 [root@master1 ~]# docker load -i k8s-images-v1.23.1.tar.gz [root@node1 ~]# docker load -i k8s-images-v1.23.1.tar.gz
4、初始化k8s集群
#初始化集群 [root@master1 ~]# kubeadm init --kubernetes-version=1.23.1 --apiserver-advertise-address=192.168.40.100 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=SystemVerification #執(zhí)行以下命令 [root@master1 ~]# mkdir -p $HOME/.kube [root@master1 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config [root@master1 ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config #查看集群 [root@master1 ~]# kubectl get node
5、添加node節(jié)點(diǎn)到集群
#打印加入k8s集群的命令 [root@master1 ~]# kubeadm token create --print-join-command #復(fù)制命令到node節(jié)點(diǎn)執(zhí)行 [root@node1 ~]# kubeadm join 192.168.40.100:6443 --token dc41lr.7cxmkrsrt4l17tcm --discovery-token-ca-cert-hash sha256:b619364d63e2d21f4a27d7120e9222a82e1511cf7bf6f3808d78b5c672e3d790 #回到master節(jié)點(diǎn),查看node節(jié)點(diǎn)是否加入到集群中 [root@master1 ~]# kubectl get node NAME STATUS ROLES AGE VERSION master1 NotReady control-plane,master 5m35s v1.23.1 node1 NotReady <none> 30s v1.23.1
6、為node節(jié)點(diǎn)修改role
#修改Node節(jié)點(diǎn)的role [root@master1 ~]# kubectl label node node1 node-role.kubernetes.io/worker=worker #查看修改結(jié)果 [root@master1 ~]# kubectl get node NAME STATUS ROLES AGE VERSION master1 NotReady control-plane,master 7m31s v1.23.1 node1 NotReady worker 2m26s v1.23.1
7、為k8s集群安裝網(wǎng)絡(luò)插件
上傳calico的yaml文件,文件可以到k8s官網(wǎng)去下載
#創(chuàng)建資源 [root@master1 ~]# kubectl apply -f calico.yaml #查看Pod狀態(tài),如果全部為running,則安裝成功 [root@master1 ~]# kubectl get pod -n kube-system -owide
三、測(cè)試
1、創(chuàng)建第一個(gè)Pod
#在控制節(jié)點(diǎn)上,創(chuàng)建一個(gè)yaml文件 [root@master1 ~]# vim deploy.yaml #添加如下內(nèi)容 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 #創(chuàng)建資源 [root@master1 ~]# kubectl apply -f deploy.yaml #查看Pod狀態(tài),首次創(chuàng)建需要拉取鏡像,要等一會(huì)狀態(tài)才會(huì)為running [root@master1 ~]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx-deployment-9456bbbf9-n7z66 1/1 Running 0 16s
2、創(chuàng)建Service資源
#在控制節(jié)點(diǎn)創(chuàng)建一個(gè)service的yaml文件 [root@master1 ~]# vim service.yaml #添加如下內(nèi)容 apiVersion: v1 kind: Service metadata: name: my-service spec: type: NodePort selector: app: nginx ports: - port: 80 targetPort: 80 nodePort: 30080 #創(chuàng)建service [root@master1 ~]# kubectl apply -f service.yaml #驗(yàn)證結(jié)果 [root@master1 ~]# kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 21m my-service NodePort 10.108.221.141 <none> 80:30080/TCP 7s
3、驗(yàn)證結(jié)果
在瀏覽器地址欄輸入http://192.168.40.100:30080,如果能訪問到nginx,則服務(wù)啟動(dòng)成功
至此,k8s集群安裝完成
到此這篇關(guān)于在Centos中搭建 K8s 1.23 集群超詳細(xì)講解的文章就介紹到這了,更多相關(guān)Centos搭建 K8s 1.23 集群內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
阿里云oss對(duì)象存儲(chǔ)使用詳細(xì)步驟
本文主要介紹了阿里云oss對(duì)象存儲(chǔ)使用詳細(xì)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06CentOS 7下YUM 本地倉(cāng)庫(kù)的搭建詳細(xì)步驟
這篇文章主要介紹了CentOS 7下YUM 本地倉(cāng)庫(kù)的搭建詳細(xì)步驟的相關(guān)資料,希望通過本文能幫助到大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-09-09教你在k8s上部署HADOOP-3.2.2(HDFS)的方法
這篇文章主要介紹了k8s-部署HADOOP-3.2.2(HDFS)的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04k8s部署Ingress并創(chuàng)建規(guī)則的詳細(xì)介紹
這篇文章主要介紹了k8s部署Ingress并創(chuàng)建規(guī)則,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03k8s?pod和service網(wǎng)絡(luò)暴露詳解
這篇文章主要介紹了借助iptables的路由轉(zhuǎn)發(fā)功能,打通k8s集群內(nèi)的pod和service網(wǎng)絡(luò),與外部網(wǎng)絡(luò)聯(lián)通,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11Kubernetes中使用臨時(shí)容器進(jìn)行故障排查的方法
在使用Kubernetes時(shí),用戶常常會(huì)遇到一些錯(cuò)誤和迷惑,下面這篇文章主要給大家介紹了關(guān)于Kubernetes中使用臨時(shí)容器進(jìn)行故障排查的相關(guān)資料,需要的朋友可以參考下2022-03-03青龍面板拉庫(kù)解決沒有或丟失依賴can‘t?find?module的保姆級(jí)教程(附青龍面板腳本倉(cāng)庫(kù))
這篇文章主要介紹了青龍面板拉庫(kù)解決沒有或丟失依賴can‘t?find?module的保姆級(jí)教程(附青龍面板腳本倉(cāng)庫(kù)),需要的朋友可以參考下2022-05-05