K8S單節(jié)點部署及集群部署過程
1.Minikube搭建單節(jié)點K8S
前置條件:安裝docker,注意版本兼容問題
# 配置docker源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
# 安裝docker環(huán)境依賴
yum install -y yum-utils device-mapper-persistent-data lvm2
# 安裝docker
yum install -y docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io
# 啟動docker并設置開機自啟
systemctl start docker && systemctl enable docker
# 配置鏡像加速
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://hub.uuuadc.top",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
"https://dockerhub.icu",
"https://docker.ckyl.me",
"https://docker.awsl9527.cn",
"https://mirror.baidubce.com"
]
}
# 重新啟動docker
systemctl daemon-reload && systemctl restart docker安裝kubectl和minikube
# 下載kubectl上傳到服務器 http://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl # 下載后重命名minikube并上傳到服務器 https://storage.googleapis.com/minikube/releases/v1.18.0/minikube-linux-amd64 # 添加執(zhí)行權(quán)限 chmod +x kubectl && chmod +x minikube # 復制到/usr/local/bin cp kubectl /usr/local/bin/ && cp minikube /usr/local/bin/ # 查看版本檢查是否安裝成功 kubectl version --client minikube version # 配置源 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=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg # 更新yum緩存 yum clean all yum -y makecache # 安裝bash-completion conntrack yum -y install bash-completion socat conntrack source /etc/profile.d/bash_completion.sh # 拉取minikube啟動所需鏡像 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.0 && docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.0 && docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.0 && docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0 && docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 && docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3 && docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7 && docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v1.8.1 # 打標簽 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.0 k8s.gcr.io/kube-apiserver:v1.18.0 && docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.0 k8s.gcr.io/kube-controller-manager:v1.18.0 && docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.0 k8s.gcr.io/kube-scheduler:v1.18.0 && docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0 k8s.gcr.io/kube-proxy:v1.18.0 && docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2 && docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3 k8s.gcr.io/etcd:3.4.3-0 && docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7 && docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v1.8.1 gcr.io/k8s-minikube/storage-provisioner:v1.8.1 # 啟動minikube –vm-driver=none表示使用Linux本機作為運行環(huán)境,--kubernetes-version表示使用的版本 minikube start --vm-driver=none --kubernetes-version='v1.18.0' # 啟動kubectl proxy kubectl proxy --port=8001 --address='192.168.91.129' --accept-hosts='^.*' & # 在kubectl proxy中運行 minikube dashboard # 瀏覽器訪問:http://192.168.91.129:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/overview?namespace=default # 查看K8S集群信息 kubectl cluster-info # 查看節(jié)點信息 kubectl get node # 查看內(nèi)部組件 kubectl get pod -A
測試部署nginx
# 創(chuàng)建deployment(Pod控制器的一種,直接刪除Pod后,會自動創(chuàng)建新的,需要刪除deployment) kubectl create deploy gen-nginx --image=nginx:1.23.0 # 對比docker部署 # docker run --name gen-nginx -p 8080:80 -d nginx:1.23.0 # 查看deployment和pod kubectl get deploy,pod,svc # 暴露80端口 kubectl expose deploy gen-nginx --port=80 --type=NodePort # 轉(zhuǎn)發(fā)端口(Mini Kube臨時),解釋:kubectl port-forward轉(zhuǎn)發(fā)一個本地端口到Pod端口,不會返回數(shù)據(jù),需要另開終端練習 kubectl port-forward --address 0.0.0.0 service/gen-nginx 80:80 # 瀏覽器訪問http://192.168.91.129/
2.KubeAdm搭建多節(jié)點K8S集群
安裝docker(主節(jié)點+工作節(jié)點),見文章上面,此處不重復編寫
配置阿里云鏡像源(主節(jié)點+工作節(jié)點)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 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
安裝kubelet kubeadm kubectl(主節(jié)點+工作節(jié)點)
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
初始化主節(jié)點(主節(jié)點)master主機和K8S版本需配置自己的
kubeadm init \ --apiserver-advertise-address=192.168.91.132 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.18.0 \ --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16
- –apiserver-advertise-address:主節(jié)點的內(nèi)網(wǎng)ip地址
- –image-repository:鏡像倉庫
- –kubernetes-version:K8S版本
- –service-cidr --pod-network-cidr:網(wǎng)段不重復即可
等待主節(jié)點初始化完成后執(zhí)行下面命令

主節(jié)點執(zhí)行命令
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
工作節(jié)點操作,如若兩臺虛擬機需注意主機名hostnamectl set-hostname node1
kubeadm join 192.168.91.130:6443 --token bh7nz3.cxb8e9jtvqjc6thg \
--discovery-token-ca-cert-hash sha256:2e41d09d203c66e678a6d71b138e2144daaf6fa42683d2e76ee63e85d5e3e8ec主節(jié)點執(zhí)行命令
# 查看節(jié)點,狀態(tài)都是NotReady,需要配置網(wǎng)絡插件 kubectl get nodes # 安裝網(wǎng)絡插件 kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml # 出現(xiàn)外網(wǎng)不可用,換種方式解決下,查詢raw.githubusercontent.com的ip加入host vim /etc/hosts 185.199.111.133 raw.githubusercontent.com # 查看節(jié)點狀態(tài) kubectl get nodes # 查看系統(tǒng)Pod狀態(tài) kubectl get pods -n kube-system
測試部署nginx
# 創(chuàng)建deployment(Pod控制器的一種) kubectl create deploy gen-nginx --image=nginx:1.23.0 # 查看deployment和Pod kubectl get deploy,pod,svc # 暴露80端口,創(chuàng)建service kubectl expose deploy gen-nginx --port=80 --type=NodePort # 查看端口映射 kubectl get deploy,pod,svc # 瀏覽器訪問,master、node節(jié)點ip都可訪問 ip:30356(隨機生成的端口) # 注意:kubeadm部署,暴露端口對外服務會隨機選端口,默認范圍30000~32767,可以修改指定,后續(xù)文章記錄
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Rainbond內(nèi)置ServiceMesh微服務架構(gòu)
這篇文章主要為大家介紹了詳解Rainbond內(nèi)置ServiceMesh微服務架構(gòu),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04
Rainbond網(wǎng)絡治理插件ServiceMesh官方文檔說明
這篇文章主要為大家介紹了Rainbond網(wǎng)絡治理插件ServiceMesh官方文檔說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04
tkestack/gpu-manager在k8s1.23版本之后的使用方法
這篇文章主要介紹了tkestack/gpu-manager在k8s1.23版本之后的使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04

