Centos使用kubeadm安裝kubernetes 1.17.2 集群


安裝環境:centos7.7+kubernetes 1.17.2+calico 3.12.0

1、虛擬機新建三個節點,並修改主機名和設置固定ip

#設置主機名(三台機器操作一樣,只是對應IP不一樣)
hostnamectl set-hostname k8s-master
echo "192.168.2.130   $(hostname)" >> /etc/hosts

#設置固定IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#更改后的內容:    
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static  #dhcp改為static 
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
DEVICE=eno1 
NAME=eno1 
UUID=3088fb60-91da-4256-9f37-527f51a64e9a
NM_CONTROLLED=no      #表示該接口將通過該配置文件進行設置,而不是通過網絡管理器進行管理
ONBOOT=yes  #開機啟動
IPADDR=192.168.2.130   #本機地址
NETMASK=255.255.255.0  #子網掩碼
GATEWAY=192.168.2.2    #默認網關
#修改network
vi /etc/sysconfig/network

  NETWORKING=yes
  GATEWAY=192.168.2.2
  DNS1=192.168.2.2

  #重啟服務

  service network restart

2、安裝docker及kubelet

# 在 master 節點和 worker 節點都要執行
# 最后一個參數 1.17.2 用於指定 kubenetes 版本,支持所有 1.17.x 版本的安裝

curl -sSL https://kuboard.cn/install-script/v1.17.x/install_kubelet.sh | sh -s 1.17.2
#為使鏡像能正常下載,設置docker加速器(該步驟很重要)
vi /etc/docker/daemon.json
{"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com","https://quay-mirror.qiniu.com/","https://registry.docker-cn.com","https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]}

3、初始化Master

# 只在 master 節點執行
# 替換 x.x.x.x 為 master 節點的內網IP
# export 命令只在當前 shell 會話中有效,開啟新的 shell 窗口后,如果要繼續安裝過程,請重新執行此處的 export 命令
export MASTER_IP=192.168.2.130
# 替換 apiserver.demo 為 您想要的 dnsName
export APISERVER_NAME=apiserver.demo
# Kubernetes 容器組所在的網段,該網段安裝完成后,由 kubernetes 創建,事先並不存在於您的物理網絡中
export POD_SUBNET=192.168.0.0/16
echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts
if [ ${#POD_SUBNET} -eq 0 ] || [ ${#APISERVER_NAME} -eq 0 ]; then
  echo -e "\033[31;1m請確保您已經設置了環境變量 POD_SUBNET 和 APISERVER_NAME \033[0m"
  echo 當前POD_SUBNET=$POD_SUBNET
  echo 當前APISERVER_NAME=$APISERVER_NAME
  exit 1
fi


# 查看完整配置選項 https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2
rm -f ./kubeadm-config.yaml
cat <<EOF > ./kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v${1}
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
controlPlaneEndpoint: "${APISERVER_NAME}:6443"
networking:
  serviceSubnet: "10.96.0.0/16"
  podSubnet: "${POD_SUBNET}"
  dnsDomain: "cluster.local"
EOF

# kubeadm init
# 根據您服務器網速的情況,您需要等候 3 - 10 分鍾
kubeadm init --config=kubeadm-config.yaml --upload-certs

# 配置 kubectl
rm -rf /root/.kube/
mkdir /root/.kube/
cp -i /etc/kubernetes/admin.conf /root/.kube/config

4、安裝Calico

去官網找下載鏈接https://docs.projectcalico.org/getting-started/kubernetes/quickstart

wget https://docs.projectcalico.org/manifests/calico.yaml
sed -i "s#192\.168\.0\.0/16#${POD_SUBNET}#" calico.yaml
kubectl apply -f calico.yaml

此步驟中,如果出現calico-node的PullImageBackOff錯誤,其原因大多是鏡像下載失敗。

解決方法:

可以先將鏡像下載下來,使用命令:cat calico.yaml |grep image 列出需要下載的鏡像

image: calico/cni:v3.12.0
image: calico/cni:v3.12.0
image: calico/pod2daemon-flexvol:v3.12.0
image: calico/node:v3.12.0
image: calico/kube-controllers:v3.12.0
# 逐條執行下面命令
docker pull quay-mirror.qiniu.com/calico/cni:v3.12.0
docker pull quay-mirror.qiniu.com/calico/pod2daemon-flexvol:v3.12.0
docker pull quay-mirror.qiniu.com/calico/node:v3.12.0
docker pull quay-mirror.qiniu.com/calico/kube-controllers:v3.12.0

下載完成后,執行 kubectl apply -f calico.yaml

# 只在 master 節點執行

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

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

5、初始化worker節點

master節點上執行命令:kubeadm token create --print-join-command 

可獲取kubeadm join 命令及參數,如下所示

# kubeadm token create 命令的輸出
kubeadm join apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt     --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303

所有worker節點執行下面命令

# 只在 worker 節點執行
# 替換 x.x.x.x 為 master 節點的內網 IP
export MASTER_IP=x.x.x.x(192.168.2.130# 替換 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 mpfjma.4vjjg8flqihor4vt     --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303

6、檢查初始化結果

在master節點上執行命令: kubectl get nodes -o wide 

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS   ROLES    AGE     VERSION
k8s-master   Ready    master   6h45m   v1.17.2
k8s-node1    Ready    <none>   26m     v1.17.2
k8s-node2    Ready    <none>   62s     v1.17.2

至此,集群安裝成功。希望對您有幫助


免責聲明!

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



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