前言
k8s 即 Kubernetes,是一個開源的容器編排引擎,用來對容器化應用進行自動化部署、 擴縮和管理
本篇文章將分享 k8s v1.18.8 的安裝,以及其面板,監控,部署服務,使用Ingress-Ningx進行負載均衡的實踐
因為公司用的這個老版本,并且后面要負責搭建,擔心無法復刻,趁此周末,實踐一二,確認可行,遂與君分享。
虛擬機準備
宿主機:Windows10
虛擬機工具:Hyper-V 10.0.19041.1
虛擬機 Linux 系統:CentOS 8.5
已安裝軟件:docker (v2.21.0)及 docker compose(24.0.6)
Hyper-V虛擬機一覽
IP 及主機名
192.168.123.100 master 192.168.123.101 worker01 192.168.123.102 worker02
CentOS8.5 設置固定 IP
設置IP及網關:vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=eth0 DEVICE=eth0 ONBOOT=yes PREFIX=24 IPV6_PRIVACY=no BOOTPROTO=static IPADDR=192.168.123.100 GATEWAY=192.168.123.1
CentOS8.5 聯網檢查
配置好網絡后先測試 curl 是否可以正常訪問網絡curl ``http://mirrors.aliyun.com,如果提示:curl: (6) Could not resolve host: ``mirrors.aliyun.com,則需要檢查dns設置
cat /etc/resolv.conf默認應該是網關的地址,也可以自行修改為其他公共dns
nameserver 192.168.123.1
CentOS8.5 設置主機名
查看主機信息:hostnamectl,通過導入虛擬機創建的主機信息除了mac地址其他基本都一樣
設置主機名:hostnamectl set-hostname 主機名
# 查看hostname hostnamectl --static #設置 hostname 對應機器設置 # 192.168.123.100 hostnamectl set-hostname master # 192.168.123.101 hostnamectl set-hostname worker01 # 192.168.123.102 hostnamectl set-hostname worker02
確保每個節點上 MAC 地址的唯一性
可以在外部使用 PowerShell 查看 Hyper-V 虛擬機的地址,在導入時選擇新注冊會自動生成 Mac 地址,無需更改
centos8.5 查看mac地址:ip link show dev eth0
外部使用 PowerShell 查看:(Get-VMNetworkAdapter -VMName "k8s-master").MacAddress
確保 product_uuid 的唯一性
執行sudo cat /sys/class/dmi/id/product_uuid查看product_uuid我這里因為都是復制的虛擬機,查出來是一樣的的,所以需要修改
修改需要關閉虛擬機后執行PowerShell腳本 ,文章總結
外部查看Hyper-V虛擬機 UUID
Get-VM "k8s-master" | % { (gwmi -Namespace rootvirtualizationv2 -Class msvm_computersystem -Filter ('ElementName="{0}"' -f $_.Name)).GetRelated('msvm_virtualsystemsettingdata') | select BIOSGUID } Get-VM "k8s-worker01" | % { (gwmi -Namespace rootvirtualizationv2 -Class msvm_computersystem -Filter ('ElementName="{0}"' -f $_.Name)).GetRelated('msvm_virtualsystemsettingdata') | select BIOSGUID } Get-VM "k8s-worker02" | % { (gwmi -Namespace rootvirtualizationv2 -Class msvm_computersystem -Filter ('ElementName="{0}"' -f $_.Name)).GetRelated('msvm_virtualsystemsettingdata') | select BIOSGUID }
PowerShell 修改 Hyper-V虛擬機 UUID
$VMname="k8s-master" $vmx = Get-WmiObject -Namespace rootvirtualizationv2 -Class msvm_virtualsystemsettingdata $CurrentSettingsData = $vmx | Where-Object { $_.ElementName -eq $VMname } $CurrentSettingsData.BIOSGUID $GUID = [System.Guid]::NewGuid() $CurrentSettingsData.BIOSGUID = "{" + $GUID.Guid.ToUpper() + "}" $VMMS = Get-WmiObject -Namespace rootvirtualizationv2 -Class msvm_virtualsystemmanagementservice $ModifySystemSettingsParams = $VMMS.GetMethodParameters('ModifySystemSettings') $ModifySystemSettingsParams.SystemSettings = $CurrentSettingsData.GetText([System.Management.TextFormat]::CimDtd20) $VMMS.InvokeMethod('ModifySystemSettings', $ModifySystemSettingsParams, $null)
開機后查詢可以看到已經修改成功
確保 Machine ID 的唯一性
執行/etc/machine-id或使用 hostnamectl 發現機器id是一樣的
重新生成了機器id
sudo cp /etc/machine-id /etc/machine-id.backup sudo rm /etc/machine-id sudo systemd-machine-id-setup cat /etc/machine-id
執行結果
檢查端口是否被占用
centos8.5 使用 ss 查詢端口是否使用
ss -tuln | grep -E "6443|2379|2380|10250|10259|10257|30000-32767"
執行結果,無占用
安裝 K8S v1.18.8
都2023年了,為什么還是 v1.18.8?
因為公司用的這個版本,并且后面要負責搭建,趁此周末,實踐一二,確認可行,遂與君分享。
節點初始化
執行主機:master,worker01,worker02
關閉防火墻
關閉swap分區
允許 iptables 檢查橋接流量
添加阿里云 yum 源
# 關閉防火墻 systemctl stop firewalld # 設置永久不開啟防火墻 systemctl disable firewalld # 關閉swap 分區 swapoff -a #永久關閉 sed -ri 's/.*swap.*/#&/' /etc/fstab # 將 SELinux 設置為 permissive 模式(相當于將其禁用) setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config # 允許 iptables 檢查橋接流量 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 # 添加阿里云 yum 源 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
執行主機:master,worker01,worker02
kubeadm:用來初始化集群的指令。
kubelet:在集群中的每個節點上用來啟動 Pod 和容器等。
kubectl:用來與集群通信的命令行工具。
# 安裝 yum install -y kubeadm-1.18.8 kubelet-1.18.8 kubectl-1.18.8 ipvsadm # 自啟 sudo systemctl enable --now kubelet
驗證是否安裝完成
kubelet --version
kubeadm version
kubectl version
安裝容器
執行主機:master,worker01,worker02
在 Docker 19.x 版本之前,Docker 使用自己的容器運行時(稱為 Docker Runtime)。從 Docker 19.x 版本開始,Docker Engine 開始使用 containerd 作為默認的容器運行時,以提供更穩定、可靠的容器管理功能。
k8s v1.18.8 版本,安裝docker v24 暫未遇到問題
判斷是否啟用:systemctl status containerd
安裝docker及container
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo rm /etc/yum.repos.d/CentOS-Linux-AppStream.repo -f rm /etc/yum.repos.d/CentOS-Linux-BaseOS.repo -f dnf clean all sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce-3:24.0.0-1.el8 docker-ce-cli-1:24.0.6-1.el8 containerd.io docker-buildx-plugin docker-compose-plugin
可參考Docker V24 及 Docker Compose V2 的安裝及使用
設置節點網絡的別名
執行主機:master,worker01,worker02
cat >> /etc/hosts << EOF 192.168.123.100 master 192.168.123.101 worker01 192.168.123.102 worker02 EOF
初始化集群
執行主機:master
--apiserver-advertise-address:指定通訊節點,使用master節點即可
--image-repository:k8s官網鏡像庫
--service-cidr: svc網絡的ip段設置
--pod-network-cidr:pod的ip段配置,每個pod都會有自己的ipkube-flannel.yml默認 10.244.0.0/16
kubeadm init --apiserver-advertise-address=192.168.123.100 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.8 --service-cidr=10.10.0.0/16 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=all
執行結果,創建成功
輸出結果如下
您的Kubernetes控制平面已成功初始化! 要開始使用集群,非root用戶需要使用以下操作: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config 您現在應該向集群部署一個pod網絡。 Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ 然后,您可以通過以root身份在每個工作節點上運行以下操作來加入任意數量的工作節點: kubeadm join 192.168.123.100:6443 --token nn9das.wslckjkd1ng3oxui --discovery-token-ca-cert-hash sha256:7b3f413e6bfbd1f91448460426a144741bd14c2bb3119cfa058d07d65ab329fd
配置集群身份驗證文件
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
若不配置直接使用 kubectl 相關命令會提示:The connection to the server ``localhost:8080`` was refused - did you specify the right host or port?
想要在哪里管理k8s 就要將 .kube 文件夾拷貝到目標主機,即工作節點需要復制 .kube 目錄到 $HOME 目錄中
安裝網絡插件 flannel
下載kube-flannel.yml
若初始化時指定了 --pod-network-cidr 則需要修改配置中 net-conf.json:Network 項
執行安裝
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml --insecure-skip-tls-verify
worker節點配置
執行主機:worker01,worker02
根據前面的 環境設置,k8s工具安裝,docker安裝,在worker節點也執行,進行初始化
將worker節點加入集群:執行master初始化后輸出的join命令
kubeadm join 192.168.123.100:6443
若找不到或失效可通過:kubeadm token create --print-join-command重新生成join命令
復制 master 節點的k8s配置文件 $HOME/.kube/config 到工作節點
安裝網絡插件 flannel
khttps://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml --insecure-skip-tls-verify
安裝 Dashboard v2.0.3
Kubernetes Dashboard 是一個用于管理和監控 Kubernetes 集群的 Web 用戶界面。它提供了一個直觀的圖形界面,可以幫助你查看和管理集群中的各種資源、部署應用程序、監控集群狀態等
官方倉庫
執行recommended.yaml, 安裝面板,完全支持的版本為v2.0.3
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml
若需要修改token默認15分鐘的過期時間為7天,修改對應參數即可
args: - --auto-generate-certificates - --namespace=kubernetes-dashboard - --token-ttl=604800
默認創建的 kubernetes-dashboard 無權限,所以需要授權,這里直接創建使用命令創建一個新用戶 admin 并授權
創建用戶
cat <
角色授權
cat <
獲取登陸token
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep kubernetes-dashboard| awk '{print $1}') [root@master ~] Name: admin-token-4nqqz Namespace: kubernetes-dashboard Labels:Annotations: kubernetes.io/service-account.name: admin kubernetes.io/service-account.uid: 6f432133-5007-4d8b-9239-8c55efa03826 Type: kubernetes.io/service-account-token Data ==== ca.crt: 1025 bytes namespace: 20 bytes token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlUycUl0Zmpnb0Y4Z2FWXzVkbmtjSjR6UngwNW05Z0tDcjVydklLWURYY1EifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi10b2tlbi00bnFxeiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJhZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjZmNDMyMTMzLTUwMDctNGQ4Yi05MjM5LThjNTVlZmEwMzgyNiIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbiJ9.J8nXyfpWjs9IbnvdfrW5hSq5SkCWy16NL89nphiDk-UGZP0qbcx0xQG_IfmTUfO0lxDQdD84VyZ8EzLENtwtqt3oIVZQyyyUAonOzqnAUfN3l9Jd_uFVbZhS_tfnwC3p4z2htUpDfXNLFoA4hav-2EgT6wY3voIZtnarfNvvBCBCimi-pG4AcCvc34V_udpYRXYpP1IPswS82NMTBVt_T1Y8gm_zKwq8LH6Z4LYr6wdr3MxGT4Fr7H5GK1jVS_wbna06HEK-GI_szNf5u-zRTMP5Si4JOHxnEWwHH4keLG6ez0pwkk5jYTqncczeb91Es_zZE95rvLxn1yh2mzAP5g
暴露到集群外
kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard -p '{"spec":{"type":"NodePort","ports":[{"port":443,"targetPort":8443,"nodePort":30001}]}}'
使用 Chrome 訪問:https://192.168.123.102:30001/#/login
因為要求必須要使用https,所以結合之前文章**前后端都用得上的 Nginx 日常使用經驗**,生成證書并添加域名配置
server { listen 80 listen 443 ssl server_name k8s.devops.test.com ssl_certificate /certs/k8s.devops.test.com/server.crt ssl_certificate_key /certs/k8s.devops.test.com/server.key ssl_session_cache shared1m ssl_session_timeout 5m ssl_ciphers HIGH!MD5 ssl_prefer_server_ciphers on location / { proxy_pass https://192.168.123.100:30001 proxy_http_version 1.1 proxy_buffering off proxy_request_buffering off proxy_set_header Upgrade $http_upgrade proxy_set_header Connection "upgrade" proxy_set_header Host $host proxy_set_header X-Forwarded-For $remote_addr } }
成功使用https+域名訪問
切換面板版本 v2.2.0 ,可以更好的顯示 ingress 相關信息
kubectl -n kubernetes-dashboard delete $(kubectl -n kubernetes-dashboard get pod -o name | grep dashboard) kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml
安裝 Metrics Server v0.3.7
Metrics Server 是一個用于收集集群中各個組件的資源使用情況和性能指標數據的組件。安裝后可以在面板中或使用命令 kubectl top node 查看集群使用情況
官方倉庫
k8s v1.18 對應可以使用v0.3.7部署文件 metrics-server/deploy/1.8+/
修改配置 metrics-server-deployment.yaml
修改鏡像源:registry.aliyuncs.com/google_containers
新增command配置跳過證書的驗證:-kubelet-insecure-tls
設置首選通信類型:--kubelet-preferred-address-
types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname spec: serviceAccountName: metrics-server volumes: - name: tmp-dir emptyDir: {} containers: - name: metrics-server image: registry.aliyuncs.com/google_containers/metrics-server:v0.3.7 imagePullPolicy: IfNotPresent command: - /metrics-server - --kubelet-insecure-tls - --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname
拷貝文件到服務器或直接在master節點修改
到考本文件的目錄執行命令安裝即可
cd /app/k8s/ kubectl apply -f metrics-server-0.3.7/deploy/1.8+/
目錄結構及修改
執行成功
等待pod部署成功后刷新頁面可以看到監控就出來了
使用kubectl top node查看節點資源使用情況
使用kubectl top pod -A查看 Pod 資源使用情況
安裝 Helm v3.13.1
Kubernetes Helm 是一個包管理工具,用于在 Kubernetes 環境中簡化應用程序的部署和管理。Helm 允許你定義、安裝和升級 Kubernetes 應用程序的預定義軟件包,這些軟件包稱為 Helm Charts。
官方倉庫
安裝v3版本
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
安裝成功,版本為 v3.13.1
安裝目錄:/usr/local/bin/helm
可以看到有一個警告說沒有安裝git, 因為 Helm 在安裝插件(push插件)時需要使用 Git,所以可以順手安裝一下 git
sudo dnf install git -y
查看Helm倉庫列表:helm repo list,默認為空,如果要按照什么應用,需要添加對應的倉庫
helm 搜索應用:helm search repo ingress-nginx/ingress-nginx --version='<4'
helm 卸載應用:helm uninstall -n ingress-nginx ingress-nginx
具體使用可參考下面安裝 ingress-nginx
在 Helm 中修改鏡像源需要使用--set或--set-string參數來覆蓋默認值。對于 Nginx Ingress Controller,可以通過指定controller.image.repository和controller.image.tag來修改鏡像源的包地址和版本。這個在安裝ingress-nginx就有使用,在無法使用官方鏡像的時候一般都需要替換為國內鏡像
使用 K8S 集群部署服務
常用命令
部署服務:kubectl apply -f 配置文件名.yml
查看副本集信息:kubectl get replicasets
[root@master tests] NAME DESIRED CURRENT READY AGE my-nginx-69448bd7d9 2 2 2 36m
查看 Deployment 信息:kubectl describe deployments my-nginx
查看 Service 信息:kubectl get services my-nginx-service
[root@master tests] NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-nginx-service NodePort 10.10.143.18080:30080/TCP 35m
集群中可以使用此服務IP進行通訊
查看部署的 nginx 服務的 Pod :kubectl get pods --selector=app=my-nginx
[root@master tests] NAME READY STATUS RESTARTS AGE my-nginx-69448bd7d9-q8xtl 1/1 Running 0 39m my-nginx-69448bd7d9-zghxb 1/1 Running 0 30m
刪除服務:kubectl delete services my-nginx-service
刪除負載:kubectl delete deployment my-nginx
部署一個 nginx 服務
配置一個簡單的 nginx 服務:nginx.yml
部署了 Deployment 和 Service
暴露了容器的端口:80
暴露集群外的端口:30080
設置了2個副本:replicas: 2
完整配置文件
apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx spec: replicas: 2 selector: matchLabels: app: my-nginx template: metadata: labels: app: my-nginx spec: containers: - name: my-nginx image: nginx:latest ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: my-nginx-service spec: selector: app: my-nginx type: NodePort ports: - protocol: TCP port: 80 targetPort: 80 nodePort: 30080
上傳到服務器執行:kubectl apply -f nginx.yml
部署成功后使用節點IP+端口號即可訪問
目前部署了兩個服務,但是可以目前沒有能夠設置負載的地方,所以還需要一個 Ingress 控制器來管理流量和負載均衡
使用 Ingress-Nginx v3.41進行服務負載
Kubernetes 默認使用的負載均衡算法是基于 IP 的輪詢(IP-based round-robin),它會將請求按照源 IP 地址的順序分發到不同的 Pod 上。如果需要其他負載均衡算法,可以使用 Ingress 控制器或者自定義的負載均衡解決方案
如果使用 Kubernetes 1.19 或更高版本,可以使用最新版本的 NGINX Ingress Controller;
如果使用舊版本的 Kubernetes(1.18 或更早版本),則必須使用 Ingress-Nginx Controller 的 0.X 版本(例如 0.49 版本
準備
官方倉庫
版本選擇說明
ArtifactHub:v3.41
使用 helm 查找 ingress-nginx 包
# 查詢倉庫列表 helm repo list # 添加倉庫地址 helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx # 搜索包 helm search repo ingress-nginx/ingress-nginx --version='<4' # ingress-nginx/ingress-nginx 3.41.0 0.51.0 Ingress controller for Kubernetes using NGINX a
安裝
創建 namespace
kubectl create namespace ingress-nginx
安裝 ingress-nginx 源下的 v3.41 版本 ingress-nginx, 指定 namespace 為 ingress-nginx,指定鏡像源為阿里云
helm install ingress-nginx ingress-nginx/ingress-nginx --namespace ingress-nginx --version 3.41.0 --set controller.image.repository=registry.aliyuncs.com/google_containers/nginx-ingress-controller
如果安裝后報錯負載無法啟動,可能是因為包無法拉取,可指定鏡像源--set controller.image.repository為國內源(registry.aliyuncs.com/google_containers/nginx-ingress-controller) 重新安裝(卸載helm uninstall -n ingress-nginx ingress-nginx)即可
安裝成功,并給出提示應該如何使用
如果需要在局域網中使用,還需要修改兩個配置
修改負載 ingress-nginx-controller 配置 保存后生效
dnsPolicy: ClusterFirstWithHostNet策略將首先嘗試使用主機的 DNS 解析服務來解析域名,如果主機的 DNS 無法解析該域名,將會嘗試使用其他配置的 DNS 解析器
hostNetwork:truePod 中的容器將使用主機的網絡棧和網絡配置
使用
通過 Dashboard 右上角直接創建 YAML 文件
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingress-nginx-test namespace: default spec: rules: - host: nginx.k8stest.com http: paths: - backend: serviceName: my-nginx-service servicePort: 80
保存后將會轉發域名請求到前面部署的 my-nginx-service 服務中,此時將使用 ingress-nginx 進行負載,當然,還需要將域名解析到目標服務器,本地局域網可以使用 hosts 或者 dns 設置
通過kubectl describe pod ingress-nginx-controller -n ingress-nginx可獲取到ingress-nginx所在節點信息,IP為 192.168.123.102
設置 hosts192.168.123.102 nginx.k8stest.com,再刷新下dns緩存ipconfig /flushdns訪問即可,每次刷新都會請求到不同的pod上面
至此,在局域網中安裝使用 k8s v1.18.8,并進行相關配置已經完成,得益與大佬們的分享,耗時兩天,邊弄邊記,優化了一些步驟與細節。后續將嘗試安裝更新的版本,敬請期待。
踩坑記錄
使用yum安裝kubeadm時報錯,測試發現curl無法使用,錯誤如下,需要檢查設置dns:cat /etc/resolv.conf寫入默認配置或公告dns: nameserver 192.168.123.1
[root@master ~]# yum install -y kubeadm-1.18.8 kubelet-1.18.8 kubectl-1.18.8 ipvsadm Repository extras is listed more than once in the configuration CentOS-8.5.2111 - Base - mirrors.aliyun.com 0.0 B/s | 0 B 00:00 Errors during downloading metadata for repository 'base': - Curl error (6): Couldn't resolve host name for http://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/x86_64/os/repodata/repomd.xml [Could not resolve host: mirrors.aliyun.com] - Curl error (6): Couldn't resolve host name for http://mirrors.aliyuncs.com/centos-vault/8.5.2111/BaseOS/x86_64/os/repodata/repomd.xml [Could not resolve host: mirrors.aliyuncs.com] - Curl error (6): Couldn't resolve host name for http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/BaseOS/x86_64/os/repodata/repomd.xml [Could not resolve host: mirrors.cloud.aliyuncs.com] Error: Failed to download metadata for repo 'base': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
阿里云鏡像源的使用,指定鏡像源時需要使用registry.aliyuncs.com/google_containers/metrics-server:v0.3.7
helm 安裝 ingress-nginx 報錯,看是否是因為包拉不下來,可以通過指定鏡像源重新安裝(卸載helm uninstall -n ingress-nginx ingress-nginx)即可:k8s v1.18.8 安裝 ingress-nginx:helm install ingress-nginx ingress-nginx/ingress-nginx --namespace ingress-nginx --version 3.41.0 --set controller.image.repository=``registry.aliyuncs.com/google_containers/nginx-ingress-controller
后語
前前后后嘗試了好幾次搭建k8s,之前基本都看著這座大山,望而卻步,各種理由而終止。當時21立的flag,終于是在這2023的末尾給實現了。
不積硅步 無以至千里,與君共勉
好了,今天的小知識你學會了嗎?
審核編輯:湯梓紅
-
WINDOWS
+關注
關注
3文章
3524瀏覽量
88416 -
開源
+關注
關注
3文章
3245瀏覽量
42396 -
容器
+關注
關注
0文章
494瀏覽量
22044 -
虛擬機
+關注
關注
1文章
908瀏覽量
28086
原文標題:一篇可供參考的 K8S 落地實踐經驗
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論