- 準備工作
- 三臺節點都安裝了containerd 詳情見這裏
- 操作節點具備kx上網能力,可以通過配置all.yaml 使用http 或者https 代理
- 節點三臺
節點數 >=3臺 CPU >=2 Memory >=2G
我這裏本地有三臺虛擬機ip分別爲
192.168.88.130192.168.88.131
192.168.88.132
- 系統設置所有節點都使用root用戶執行
1.修改主機名 **以下操作三個節點都需要執行** node-1 192.168.88.130 node-2 192.168.88.131 node-3 192.168.88.132 # 查看主機名 $ hostname # 修改主機名 $ hostnamectl set-hostname <your_hostname> 2.關閉防火牆 # 關閉selinux $ setenforce 0 $ sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config # 關閉防火牆 $ systemctl stop firewalld && systemctl disable firewalld # 設置iptables規則 $ iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT # 關閉swap $ swapoff -a && free –h # 關閉dnsmasq(否則可能導致容器無法解析域名) $ service dnsmasq stop && systemctl disable dnsmasq 3.k8s參數設置 # 製作配置文件 $ cat > /etc/sysctl.d/kubernetes.conf <<EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_nonlocal_bind = 1 net.ipv4.ip_forward = 1 vm.swappiness = 0 vm.overcommit_memory = 1 EOF # 生效文件 $ sysctl -p /etc/sysctl.d/kubernetes.conf 4.移除docker 軟件包 (可選操作) $ yum remove -y docker* $ rm -f /etc/docker/daemon.json
- 使用kubespray部署集羣
-
- 首先配置密鑰
# 1. 生成keygen(執行ssh-keygen,一路回車下去) $ ssh-keygen # 2. 查看並複製生成的pubkey $ cat /root/.ssh/id_rsa.pub # 3. 分別登陸到每個節點上,將pubkey寫入/root/.ssh/authorized_keys $ mkdir -p /root/.ssh $ echo "<上一步驟複製的pubkey>" >> /root/.ssh/authorized_keys
- 依賴軟件下載安裝(這個操作只需要在操作節點上面執行)
首先cd 到kubespray-2.15.0目錄以下操作節點上的操作都在此目錄上執行
# 安裝基礎軟件 $ yum install -y epel-release python36 python36-pip git # 下載kubespray源碼 $ wget https://github.com/kubernetes-sigs/kubespray/archive/v2.15.0.tar.gz # 解壓縮 $ tar -xvf v2.15.0.tar.gz && cd kubespray-2.15.0 # 安裝requirements $ cat requirements.txt $ pip3.6 install -r requirements.txt ## 如果install遇到問題可以先嚐試升級pip ## $ pip3.6 install --upgrade pip
- 生成配置(此操作只需要在操作節點上執行)
# copy一份demo配置,準備自定義 $ cp -rpf inventory/sample inventory/mycluster # 使用真實的hostname(否則會自動把你的hostname改成node1/node2...這種哦) $ export USE_REAL_HOSTNAME=true # 指定配置文件位置 $ export CONFIG_FILE=inventory/mycluster/hosts.yaml # 定義ip列表(你的服務器內網ip地址列表,3臺及以上,前兩臺默認爲master節點) $ declare -a IPS=(192.168.88.130 192.168.88.131 192.168.88.132) # 生成配置文件 $ python3 contrib/inventory_builder/inventory.py ${IPS[@]}
- 一些個性化配置
# 定製化配置文件 # 1. 節點組織配置(這裏可以調整每個節點的角色) $ vi inventory/mycluster/hosts.yaml # 2. containerd配置(教程使用containerd作爲容器引擎) $ vi inventory/mycluster/group_vars/all/containerd.yml # 3. 全局配置(可以在這配置http(s)代理實現外網訪問) $ vi inventory/mycluster/group_vars/all/all.yml 這裏如果需要用到http代理的話可以通過proxy關鍵字來使用http代理(後面操作FQ比較方便很多資源都是在國外的) # 4. k8s集羣配置(包括設置容器運行時、svc網段、pod網段等) $ vi inventory/mycluster/group_vars/k8s-cluster/k8s-cluster.yml 這裏做了如下操作的修改 kube_service_addresses: 10.233.0.0/18 -> 10.200.0.0/16 kube_pods_subnet: 10.233.64.0/18 -> 100.233.0.0/16 container_manager: docker -> containerd # 5. 修改etcd部署類型爲host(默認是docker)etcd_deployment_type: host $ vi ./inventory/mycluster/group_vars/etcd.yml # 6. 附加組件(ingress、dashboard等) ingress_nginx_enabled: true dashboard_enabled: true $ vi ./inventory/mycluster/group_vars/k8s-cluster/addons.yml
- 首先配置密鑰
- 開始一鍵部署
- 使用以下命令進行部署
# -vvvv會打印最詳細的日誌信息,建議開啓 $ ansible-playbook -i inventory/mycluster/hosts.yaml -b cluster.yml -vvvv
-
下載鏡像(可選)三臺都要執行
爲了減少“一鍵部署”的等待時間,可以在部署的同時,預先下載一些鏡像。(首先要檢查每個節點是否已經安裝了crictl命令)
$ curl https://gitee.com/pa/pub-doc/raw/master/kubespray-v2.15.0-images.sh|bash -x
- 使用以下命令進行部署
- 遇到的一些問題以及解決方案
-
-
- 最後一步一鍵安裝過程中報如下超時
解決方案
#進入到這個目錄kubespray-2.15.0 cd kubespray-2.15.0 vi ansible.cfg 在[default]節點下添加 remote_user=root
我這裏是使用clash for window 進行**上網的。 默認的system proxy 只能保證瀏覽器上網。如果要使用命令行也能訪問外網的話需要打開TUN Model具體操作如下圖
- 最後一步一鍵安裝過程中報如下超時
-