k8s集群部署過(guò)程
集群結(jié)構(gòu)
| 角色 | IP |
|---|---|
| master | 192.168.35.135 |
| node1 | 192.168.35.136 |
| node2 | 192.168.35.137 |
部署
#需在三臺(tái)主機(jī)上操作 //關(guān)閉防火墻 [root@master ~]# systemctl disable --now firewalld //關(guān)閉selinux [root@master ~]# sed -i 's/enforcing/disabled/' /etc/selinux/config //關(guān)閉swap分區(qū) [root@master ~]# vim /etc/fstab 注釋掉swap分區(qū)就行 //設(shè)置主機(jī)名 [root@master ~]# hostnamectl set-hostname master.example.com //添加host [root@master ~]# cat >> /etc/hosts << EOF 192.168.35.135 master master.example.com 192.168.35.136 node1 node1.example.com 192.168.35.137 node2 node2.example.com EOF //將橋接的IPv4流量傳遞到iptables的鏈 [root@master ~]# cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF [root@master ~]# sysctl --system #生效 //時(shí)間同步 [root@master ~]# yum -y install chrony [root@master ~]# systemctl enable --now chronyd //免密認(rèn)證 [root@master ~]# ssh-keygen -t rsa [root@master ~]# ssh-copy-id master [root@master ~]# ssh-copy-id node1 [root@master ~]# ssh-copy-id node2 // 重啟主機(jī),使上面的一些配置生效 [root@master ~]# reboot
在所有節(jié)點(diǎn)安裝 Docker/kubeadm/kubelet
Kubernetes默認(rèn)CRI(容器運(yùn)?時(shí))為Docker,因此先安裝Docker。
安裝Docker
[root@master ~]# cat > /etc/yum.repos.d/docker-ce.repo << EOF
[Docker-ce]
name=Docker-ce
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF
[root@master ~]# yum -y install docker-ce
[root@master ~]# systemctl enable --now docker
[root@master ~]# cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://kmny1apu.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF添加kubernetes阿?云YUM軟件源
[root@master ~]# cat > /etc/yum.repos.d/kubernetes.repo << EOF [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
安裝kubeadm,kubelet和kubectl
由于版本更新頻繁,這?指定版本號(hào)部署:
[root@master ~]# yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0 [root@master ~]# systemctl enable kubelet
部署Kubernetes
在master執(zhí)行
[root@master ~]# kubeadm init \
--apiserver-advertise-address=192.168.35.135 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.20.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
// 記錄下面的這些東西,后面會(huì)用到
kubeadm join 192.168.35.135:6443 --token mwi5m0.3kbhf6mxg703sagu \
--discovery-token-ca-cert-hash sha256:d0dc18109262c5592f79cb200d8bb12da523fc75df6fa7bd59be由于默認(rèn)拉取鏡像地址k8s.gcr.io國(guó)內(nèi)?法訪(fǎng)問(wèn),這?指定阿?云鏡像倉(cāng)庫(kù)地址。
使?kubectl?具:
[root@master ~]# mkdir -p $HOME/.kube root@master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config [root@master ~]# chown $(id -u):$(id -g) $HOME/.kube/config [root@master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION master.example.com NotReady control-plane,master 4m49s v1.20.0
安裝Pod網(wǎng)絡(luò)插件
[root@master ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
確保能夠訪(fǎng)問(wèn)到quay.io這個(gè)registery。
加?Kubernetes Node
在192.168.35.136、192.168.35.137上(Node)執(zhí)?。
向集群添加新節(jié)點(diǎn),執(zhí)?在kubeadm init輸出的kubeadm join命令
kubeadm join 192.168.35.135:6443 --token mwi5m0.3kbhf6mxg703sagu \
--discovery-token-ca-cert-hash sha256:d0dc18109262c5592f79cb200d8bb12da523fc75df6fa7bd59be測(cè)試kubernetes集群
[root@master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION master.example.com Ready control-plane,master 17m v1.20.0 node1.example.com Ready <none> 89s v1.20.0 node2.example.com Ready <none> 82s v1.20.0 在Kubernetes集群中創(chuàng)建?個(gè)pod,驗(yàn)證是否正常運(yùn)? [root@master ~]# kubectl create deployment nginx --image=nginx deployment.apps/nginx created [root@master ~]# kubectl expose deployment nginx --port=80 --type=NodePort service/nginx exposed [root@master ~]# kubectl get pod,svc NAME READY STATUS RESTARTS AGE pod/nginx-6799fc88d8-hbj7q 0/1 ContainerCreating 0 14s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 19m service/nginx NodePort 10.98.72.65 <none> 80:31040/TCP 5s
到此這篇關(guān)于k8s集群部署的文章就介紹到這了,更多相關(guān)k8s集群部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 基于Docker的K8s(Kubernetes)集群部署方案
- k8s部署redis集群實(shí)現(xiàn)過(guò)程實(shí)例詳解
- k8s集群部署時(shí)etcd容器不停重啟問(wèn)題以及處理詳解
- 部署k8s集群的超詳細(xì)實(shí)踐步驟
- Ansible部署K8s集群的方法
- Kubernetes(K8S)容器集群管理環(huán)境完整部署詳細(xì)教程-中篇
- Kubernetes(K8S)容器集群管理環(huán)境完整部署詳細(xì)教程-上篇
- centos7系統(tǒng)部署k8s集群詳細(xì)介紹
- k8s部署redis cluster集群的實(shí)現(xiàn)
- 在K8s上部署Redis集群的方法步驟
- Docker+K8S 集群環(huán)境搭建及分布式應(yīng)用部署
相關(guān)文章
k8s平臺(tái)本地?cái)?shù)據(jù)遷移整改過(guò)程
文章主要介紹了對(duì)k8s平臺(tái)默認(rèn)數(shù)據(jù)存儲(chǔ)位置進(jìn)行優(yōu)化,將數(shù)據(jù)統(tǒng)一管理并存至指定目錄和云磁盤(pán)的整個(gè)過(guò)程,包括新磁盤(pán)的創(chuàng)建掛載、配置更改生效、環(huán)境檢查、清理舊環(huán)境等步驟,強(qiáng)調(diào)在集群所有節(jié)點(diǎn)上進(jìn)行優(yōu)化,并提醒配置更改生效后建議重啟機(jī)器以確保變更生效2026-05-05
K8S設(shè)置node最大pod數(shù)量實(shí)現(xiàn)方式
文章介紹了如何在Kubernetes節(jié)點(diǎn)上修改最大Pod數(shù)量的步驟,包括修改配置文件、重啟kubelet和檢查設(shè)置是否生效2025-12-12
K8S中設(shè)置JVM堆棧大小實(shí)現(xiàn)方式
這篇文章主要介紹了K8S中設(shè)置JVM堆棧大小實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-07-07
CentOS 7.9 升級(jí)內(nèi)核 kernel-ml-5.6.14版本的方法
這篇文章主要介紹了CentOS 7.9 升級(jí)內(nèi)核 kernel-ml-5.6.14版本,默認(rèn)內(nèi)核版本為3.10.0,現(xiàn)升級(jí)到 5.6.14 版本,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10
k8s:pod has unbound PersistentVolumeClaims問(wèn)題及
部署redis-ha時(shí),Pod因PVC未綁定報(bào)錯(cuò),原因在于value.yaml中storageClassName為空,且未啟用DefaultDefaultStorageClass,解決方法是手動(dòng)指定PVC的StorageClassName為現(xiàn)有存儲(chǔ)類(lèi),確保PV分配成功2025-07-07

