實戰環境涉及軟件版本信息:
使用kubekey部署k8s
1. 操作系統基礎配置
設置主機名、DNS解析、時鐘同步、防火墻關閉、ssh免密登錄等等系統基本設置
dnf? install -y ?curl socat conntrack ebtables ipset ipvsadm
2. 安裝部署 K8s
2.1 下載 KubeKey
###地址
https://github.com/kubesphere/kubekey#下載最新版的 KubeKey
export KKZONE=cn ####國內用戶先執行此配置mkdir ~/kubekey
cd ~/kubekey
curl -sfL https://get-kk.kubesphere.io | sh -
查看 KubeKey 支持的 Kubernetes 版本列表
./kk version --show-supported-k8s
...
v1.30.10
v1.30.11
v1.30.12
v1.31.0
v1.31.1
v1.31.2
v1.31.3
v1.31.4
v1.31.5
v1.31.6
v1.31.7
v1.31.8
v1.32.0
v1.32.1
v1.32.2
v1.32.3
v1.32.4
v1.33.0
生成配置文件
./kk create config -f k8s-v1318.yaml --with-kubernetes v1.31.8
2.2 創建 K8s 集群部署配置文件
修改配置文件
采用 3 個節點同時作為 control-plane、etcd 和 worker 節點。
編輯配置文件 k8s-v1288.yaml,主要修改 kind: Cluster 小節的相關配置
修改 kind: Cluster 小節中 hosts 和 roleGroups 等信息,修改說明如下。
hosts:指定節點的 IP、ssh 用戶、ssh 密碼、ssh 端口
roleGroups:指定 3 個 etcd、control-plane 節點,復用相同的機器作為 3 個 worker 節點
internalLoadbalancer:啟用內置的 HAProxy 負載均衡器
domain:可自定義域名
clusterName:可使用默認值 cluster.local
autoRenewCerts:該參數可以實現證書到期自動續期,默認為 true
containerManager:使用 containerd
部署完成需要大約 10-20 分鐘左右,會在終端上看到類似于下面的輸出。
安裝的時候最好走代理,因為大部分包在國外,不走代理慢到哭,首先要讓服務器走代理
cat << 'EOF' > /etc/profile.d/proxy.sh
export HTTP_PROXY="http://ip"
export HTTPS_PROXY="http://ip"
export NO_PROXY="127.0.0.1,localhost,ip,10.233.0.0/18,10.233.64.0/18"
EOF
source?/etc/profile.d/proxy.sh
#####cat k8s-v1318.yaml
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:name: sample
spec:# ----------------- 節點列表 -----------------hosts:- name: k8s-masteraddress: ipinternalAddress: ipuser: rootpassword: "pass"- name: k8s-node1address: ipinternalAddress: ipuser: rootpassword: "pass"- name: k8s-node2address: ipinternalAddress: ipuser: rootpassword: "pass"roleGroups:etcd:- k8s-mastercontrol-plane:- k8s-masterworker:- k8s-node1- k8s-node2# --------------- ControlPlaneEndpoint ---------------controlPlaneEndpoint:## - 如果前面已經有獨立的 LoadBalancer,請指定 internalLoadbalancer 地址# internalLoadbalancer: haproxydomain: 主ip # 虛擬 IP 或 DNSaddress: "主ip" # 也可以寫為負載均衡虛擬 IP port: 6443# ------------------- 代理設置 ----------------------# 下面三行會讓 KubeKey 在下載二進制文件、拉鏡像時都走代理proxies:httpProxy: "http://ip"httpsProxy: "http://ip"noProxy: "127.0.0.1,localhost,ip,10.233.0.0/18,10.233.64.0/18"# ------------------ Kubernetes 配置 ------------------kubernetes:version: v1.31.8clusterName: cluster.localautoRenewCerts: truecontainerManager: containerd ####想用docker設置此項為docker# ------------------- ETCD 配置 ----------------------etcd:type: kubekey# ------------------- 網絡插件 ----------------------network:plugin: calicokubePodsCIDR: 10.233.64.0/18kubeServiceCIDR: 10.233.0.0/18multusCNI:enabled: false# ------------------- 鏡像倉庫 ----------------------registry:# 如果你想使用私有 Registry,可以在下面填寫privateRegistry: ""namespaceOverride: ""registryMirrors: []insecureRegistries: []# ------------------ 插件或組件 ---------------------addons: []
執行安裝,安裝時長看網速
./kk create cluster -f k8s-v1318.yaml?
3. 驗證 K8s 集群
3.1 驗證集群狀態
查看集群節點信息
kubectl get pods -A
NAMESPACE ? ? NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? READY ? STATUS ? ?RESTARTS ? ? ?AGE
default ? ? ? nginx-77657886dc-bhr94 ? ? ? ? ? ? ? ? ? ? 1/1 ? ? Running ? 0 ? ? ? ? ? ? 15h
default ? ? ? nginx-77657886dc-cxkmn ? ? ? ? ? ? ? ? ? ? 1/1 ? ? Running ? 0 ? ? ? ? ? ? 15h
kube-system ? calico-kube-controllers-75c587cc8d-tlz4x ? 1/1 ? ? Running ? 1 (15h ago) ? 18h
kube-system ? calico-node-47j2l ? ? ? ? ? ? ? ? ? ? ? ? ?1/1 ? ? Running ? 1 (15h ago) ? 18h
kube-system ? calico-node-cf47t ? ? ? ? ? ? ? ? ? ? ? ? ?1/1 ? ? Running ? 1 (15h ago) ? 18h
kube-system ? calico-node-wcfpc ? ? ? ? ? ? ? ? ? ? ? ? ?1/1 ? ? Running ? 1 (15h ago) ? 18h
kube-system ? coredns-54b855dcd7-gvvmt ? ? ? ? ? ? ? ? ? 1/1 ? ? Running ? 1 (15h ago) ? 18h
kube-system ? coredns-54b855dcd7-lj6jv ? ? ? ? ? ? ? ? ? 1/1 ? ? Running ? 1 (15h ago) ? 18h
kube-system ? kube-apiserver-k8s-master ? ? ? ? ? ? ? ? ?1/1 ? ? Running ? 1 (15h ago) ? 18h
kube-system ? kube-controller-manager-k8s-master ? ? ? ? 1/1 ? ? Running ? 1 (15h ago) ? 18h
kube-system ? kube-proxy-7m4c5 ? ? ? ? ? ? ? ? ? ? ? ? ? 1/1 ? ? Running ? 1 (15h ago) ? 18h
kube-system ? kube-proxy-8d4hq ? ? ? ? ? ? ? ? ? ? ? ? ? 1/1 ? ? Running ? 1 (15h ago) ? 18h
kube-system ? kube-proxy-lq7bb ? ? ? ? ? ? ? ? ? ? ? ? ? 1/1 ? ? Running ? 1 (15h ago) ? 18h
kube-system ? kube-scheduler-k8s-master ? ? ? ? ? ? ? ? ?1/1 ? ? Running ? 1 (15h ago) ? 18h
kube-system ? metrics-server-76bf575666-sfnpg ? ? ? ? ? ?1/1 ? ? Running ? 1 (15h ago) ? 18h
kube-system ? nodelocaldns-mkrzd ? ? ? ? ? ? ? ? ? ? ? ? 1/1 ? ? Running ? 1 (15h ago) ? 18h
kube-system ? nodelocaldns-n6bqx ? ? ? ? ? ? ? ? ? ? ? ? 1/1 ? ? Running ? 1 (15h ago) ? 18h
kube-system ? nodelocaldns-rhg9n ? ? ? ? ? ? ? ? ? ? ? ? 1/1 ? ? Running ? 1 (15h ago) ? 18h
kuboard ? ? ? metrics-scraper-5c688489ff-cbfzk ? ? ? ? ? 1/1 ? ? Running ? 1 (15h ago) ? 18hkubectl get node
NAME ? ? ? ? STATUS ? ROLES ? ? ? ? ? AGE ? VERSION
k8s-master ? Ready ? ?control-plane ? 18h ? v1.31.8
k8s-node1 ? ?Ready ? ?worker ? ? ? ? ?18h ? v1.31.8
k8s-node2 ? ?Ready ? ?worker ? ? ? ? ?18h ? v1.31.8
4. 部署測試資源
###部署NGINX
kubectl create deployment nginx --image=nginx:alpine --replicas=2
###暴露port
kubectl create service nodeport nginx --tcp=80:80
####查看地址
kubectl get deployment -o wide
kubectl get pods -o wide
5.驗證服務
驗證直接訪問 Pod
root@k8s-master:~# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-77657886dc-bhr94 1/1 Running 0 15h 10.233.81.4 k8s-node1
nginx-77657886dc-cxkmn 1/1 Running 0 15h 10.233.76.4 k8s-node2 root@k8s-master:~# curl -I http://10.233.81.4
HTTP/1.1 200 OK
Server: nginx/1.27.5
Date: Fri, 23 May 2025 01:31:11 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Wed, 16 Apr 2025 12:55:34 GMT
Connection: keep-alive
ETag: "67ffa8c6-267"
Accept-Ranges: bytesroot@k8s-master:~# curl -I http://10.233.76.4
HTTP/1.1 200 OK
Server: nginx/1.27.5
Date: Fri, 23 May 2025 01:31:21 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Wed, 16 Apr 2025 12:55:34 GMT
Connection: keep-alive
ETag: "67ffa8c6-267"
Accept-Ranges: bytes
6.docker安裝kuboard作為安裝管理界面,默認用戶名密碼:admin、Kuboard123
docker run -itd ? --restart=unless-stopped ? --name=kuboard ? -p 31000:80/tcp ? -p 10081:10081/tcp ? -e KUBOARD_ENDPOINT="http://本機ip:80:80" ? -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" ? -v /root/kuboard-data:/data ? eipwork/kuboard:v3.5.2.7