k8s集群部署過程
集群結構
| 角色 | IP |
|---|---|
| master | 192.168.35.135 |
| node1 | 192.168.35.136 |
| node2 | 192.168.35.137 |
部署
#需在三臺主機上操作 //關閉防火墻 [root@master ~]# systemctl disable --now firewalld //關閉selinux [root@master ~]# sed -i 's/enforcing/disabled/' /etc/selinux/config //關閉swap分區(qū) [root@master ~]# vim /etc/fstab 注釋掉swap分區(qū)就行 //設置主機名 [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 #生效 //時間同步 [root@master ~]# yum -y install chrony [root@master ~]# systemctl enable --now chronyd //免密認證 [root@master ~]# ssh-keygen -t rsa [root@master ~]# ssh-copy-id master [root@master ~]# ssh-copy-id node1 [root@master ~]# ssh-copy-id node2 // 重啟主機,使上面的一些配置生效 [root@master ~]# reboot
在所有節(jié)點安裝 Docker/kubeadm/kubelet
Kubernetes默認CRI(容器運?時)為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
由于版本更新頻繁,這?指定版本號部署:
[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
// 記錄下面的這些東西,后面會用到
kubeadm join 192.168.35.135:6443 --token mwi5m0.3kbhf6mxg703sagu \
--discovery-token-ca-cert-hash sha256:d0dc18109262c5592f79cb200d8bb12da523fc75df6fa7bd59be由于默認拉取鏡像地址k8s.gcr.io國內?法訪問,這?指定阿?云鏡像倉庫地址。
使?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網絡插件
[root@master ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
確保能夠訪問到quay.io這個registery。
加?Kubernetes Node
在192.168.35.136、192.168.35.137上(Node)執(zhí)?。
向集群添加新節(jié)點,執(zhí)?在kubeadm init輸出的kubeadm join命令
kubeadm join 192.168.35.135:6443 --token mwi5m0.3kbhf6mxg703sagu \
--discovery-token-ca-cert-hash sha256:d0dc18109262c5592f79cb200d8bb12da523fc75df6fa7bd59be測試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)建?個pod,驗證是否正常運? [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
到此這篇關于k8s集群部署的文章就介紹到這了,更多相關k8s集群部署內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
CentOS 7.9 升級內核 kernel-ml-5.6.14版本的方法
這篇文章主要介紹了CentOS 7.9 升級內核 kernel-ml-5.6.14版本,默認內核版本為3.10.0,現升級到 5.6.14 版本,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-10-10
k8s:pod has unbound PersistentVolumeClaims問題及
部署redis-ha時,Pod因PVC未綁定報錯,原因在于value.yaml中storageClassName為空,且未啟用DefaultDefaultStorageClass,解決方法是手動指定PVC的StorageClassName為現有存儲類,確保PV分配成功2025-07-07

