k8s安裝教程


1 檢查 centos / hostname(在 master 節點和 worker 節點都要執行)

# 在 master 節點和 worker 節點都要執行
cat /etc/redhat-release

# 此處 hostname 的輸出將會是該機器在 Kubernetes 集群中的節點名字
# 不能使用 localhost 作為節點的名字
hostname

# 請使用 lscpu 命令,核對 CPU 信息
# Architecture: x86_64   本安裝文檔不支持 arm 架構
# CPU(s):       2         CPU 內核數量不能低於 2
lscpu

2 修改 hostname (在 master 節點和 worker 節點都要執行)

如果您需要修改 hostname,可執行如下指令:

# 修改 hostname
hostnamectl set-hostname your-new-host-name
# 查看修改結果
hostnamectl status
# 設置 hostname 解析
echo "127.0.0.1   $(hostname)" >> /etc/hosts

3 安裝containerd/kubelet/kubeadm/kubectl(在 master 節點和 worker 節點都要執行)

# 最后一個參數 1.22.3 用於指定 kubenetes 版本,支持所有 1.22.x 版本的安裝
# 騰訊雲 docker hub 鏡像
# export REGISTRY_MIRROR="https://mirror.ccs.tencentyun.com"
# DaoCloud 鏡像
# export REGISTRY_MIRROR="http://f1361db2.m.daocloud.io"
# 華為雲鏡像
# export REGISTRY_MIRROR="https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com"
# 阿里雲 docker hub 鏡像
export REGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com
curl -sSL https://kuboard.cn/install-script/v1.22.x/install_kubelet.sh | sh -s 1.22.5

4 初始化 master 節點(只在master節點執行)

關於初始化時用到的環境變量

  • APISERVER_NAME 不能是 master 的 hostname

  • APISERVER_NAME 必須全為小寫字母、數字、小數點,不能包含減號

  • POD_SUBNET 所使用的網段不能與 master節點/worker節點 所在的網段重疊。該字段的取值為一個 CIDR 值,如果您對 CIDR 這個概念還不熟悉,請仍然執行 export POD_SUBNET=10.100.0.0/16 命令,不做修改

# 替換 192.168.x.x 為 master 節點實際 IP(請使用內網 IP)
export MASTER_IP=192.168.x.x

# 替換 apiserver.demo 為 您想要的 dnsName
export APISERVER_NAME=apiserver.demo

# Kubernetes 容器組所在的網段,該網段安裝完成后,由 kubernetes 創建,事先並不存在於您的物理網絡中
export POD_SUBNET=10.100.0.0/16
echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts
curl -sSL https://kuboard.cn/install-script/v1.22.x/init_master.sh | sh -s 1.22.5

如果出現如下錯誤:

[config/images] Pulled registry.aliyuncs.com/k8sxio/pause:3.2
[config/images] Pulled registry.aliyuncs.com/k8sxio/etcd:3.4.13-0
failed to pull image "swr.cn-east-2.myhuaweicloud.com/coredns:1.8.0": output: time="2021-04-30T13:26:14+08:00" level=fatal
msg="pulling image failed: rpc error: code = NotFound desc = failed to pull and unpack image \"swr.cn-east-2.myhuaweicloud.com/coredns:1.8.0\":
failed to resolve reference \"swr.cn-east-2.myhuaweicloud.com/coredns:1.8.0\":
swr.cn-east-2.myhuaweicloud.com/coredns:1.8.0: not found", error: exit status 1
To see the stack trace of this error execute with --v=5 or higher

請執行如下命令:

在原命令的最后增加參數 /coredns

curl -sSL https://kuboard.cn/install-script/v1.22.x/init_master.sh | sh -s 1.22.5 /coredns

4.1 檢查 master 初始化結果(只在 master 節點執行)

coredns 將處於啟動失敗的狀態,請繼續下一步,完成 安裝網絡插件 這個步驟后,coredns 將正常啟動

# 執行如下命令,等待 3-10 分鍾,直到所有的容器組處於 Running 狀態
watch kubectl get pod -n kube-system -o wide

# 查看 master 節點初始化結果
kubectl get nodes -o wide

4.2 安裝網絡插件(只在 master 節點執行)

export POD_SUBNET=10.100.0.0/16
wget https://kuboard.cn/install-script/flannel/flannel-v0.14.0.yaml
sed -i "s#10.244.0.0/16#${POD_SUBNET}#" flannel-v0.14.0.yaml
kubectl apply -f ./flannel-v0.14.0.yaml

5 初始化 worker節點

5.1 在 master 節點上執行(只在 master 節點執行)

kubeadm token create --print-join-command

可獲取kubeadm join 命令及參數,如下所示,有效時間2小時

# kubeadm token create 命令的輸出
kubeadm join apiserver.demo:6443 --token 7pk9ym.cedespgigk1mnqej --discovery-token-ca-cert-hash sha256:e7cbdf2463b98f324bda2348af602513a1477ca63677367e26313563f080fc37

5.2 針對所有的 worker 節點執行 (只在 worker 節點執行)

# 替換 x.x.x.x 為 master 節點的內網 IP
export MASTER_IP=x.x.x.x

# 替換 apiserver.demo 為初始化 master 節點時所使用的 APISERVER_NAME
export APISERVER_NAME=apiserver.demo
echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts

# 替換為 master 節點上 kubeadm token create 命令的輸出
kubeadm join apiserver.demo:6443 --token 7pk9ym.cedespgigk1mnqej --discovery-token-ca-cert-hash sha256:e7cbdf2463b98f324bda2348af602513a1477ca63677367e26313563f080fc37

5.3 檢查初始化結果(只在 master 節點執行)

# 只在 master 節點執行
kubectl get nodes -o wide

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM