天天看點

2.2019-11-19ubunt環境準備及k8s安裝環境準備

伺服器主名稱設定

master   192.168.200.198    1.5g
master2  192.168.200.197   1.5g
node1    192.168.200.206    4g
node2    192.168.200.207    4g
harbor   192.168.200.200     1.5g
harbor2  192.168.200.199    1.5g
haproxy1 192.168.200.201  1.5g
etcd1    192.168.200.203      2g
etcd2    192.168.200.204      2g
etcd3    192.168.200.205      2g
      

haproxy2 192.168.200.202 1.5g

2.2019-11-19ubunt環境準備及k8s安裝環境準備
2.2019-11-19ubunt環境準備及k8s安裝環境準備

轉存失敗重新上傳取消

2.2019-11-19ubunt環境準備及k8s安裝環境準備

選擇版本,克隆

在master節點上克隆項目

root@master:~# git clone -b 0.6.1 https://github.com/easzlab/kubeasz.git
root@master:~# apt install ansible -y
root@master:~# ssh-keygen 
開啟免密要登入
root@master:~# apt install sshpass -y
root@master:~# cat scp.sh 
#!/bin/bash
#目标主機清單
IP="
192.168.200.198
192.168.200.199
192.168.200.200
192.168.200.201
192.168.200.202
192.168.200.203
192.168.200.204
192.168.200.205
192.168.200.206
"
for node in ${IP};do
sshpass -p 123456 ssh-copy-id ${node} -o StrictHostKeyChecking=no
if [ $? -eq 0 ];then
echo "${node} 秘鑰copy完成"
else
echo "${node} 秘鑰copy失敗"
fi
done
root@master:~# bash scp.sh 
允許master2上可以上傳鏡像
root@master:~# scp -r /root/.docker/ 192.168.200.197:/root/.docker/
把登入網址的資訊拷貝過去
root@master:~# scp -r /etc/docker/certs.d/ 192.168.200.197:/etc/docker/
把公鑰私鑰拷貝過去
      

第二個master節點

root@master2:~# docker pull alpine
下載下傳鏡像
root@master2:~# vim /etc/hosts
192.168.200.200 harbor.wyh.net
root@master2:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
alpine              latest              965ea09ff2eb        4 weeks ago         5.55MB
root@master2:~# vim /etc/hosts
root@master2:~# docker tag 965ea09ff2eb harbor.wyh.net/linux37/alpine:v2
修改名稱
root@master2:~# docker push harbor.wyh.net/linux37/alpine:v2
送出到伺服器
      
root@master:~# cp limits.conf /etc/security/limits.conf 
替換預設的配置檔案
root@master:~# cp sysctl.conf /etc/sysctl.conf 
替換預設的配置檔案
      

在master節點優化,其他節點的腳本

root@master:~# cat scp.sh | grep ^[^#]
IP="
192.168.200.197
192.168.200.203
192.168.200.204
192.168.200.205
192.168.200.206
192.168.200.207
"
for node in ${IP};do
      scp docker-install.sh ${node}:/opt/
      scp -r /etc/docker/certs.d ${node}:/etc/docker/
      scp /etc/hosts ${node}:/etc/
      scp /etc/sysctl.conf ${node}:/etc/
      scp /etc/security/limits.conf ${node}:/etc/security/
      ssh ${node} "reboot"
      echo ${node},"重新開機成功"
done
      

安裝haprox和keepalive的

root@haproxy1:~# apt install keepalived haproxy -y
root@etcd3:~# apt install keepalived haproxy -y
root@haproxy1:~# cp /usr/share/doc/keepalived/samples/keepalived.conf.vrrp /etc/keepalived/keepalived.conf

修改keepalived的配置檔案
root@haproxy1:~# vim /etc/keepalived/keepalived.conf 

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen
   }
   notification_email_from [email protected]
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interface ens32
修改為本機網卡
    garp_master_delay 10
    smtp_alert
    virtual_router_id 88
修改id為88
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.200.248  dev ens32 label ens32:0
修改虛拟ip位址

    }
}

#systemctl enable keepalived      

拷貝至另一個伺服器上

root@haproxy1:~# scp /etc/keepalived/keepalived.conf 192.168.200.205:/etc/keepalived/keepalived.conf

root@etcd3:~# vim /etc/keepalived/keepalived.conf 
vrrp_instance VI_1 {
    state BACKUP
修改狀态為backup
    interface ens32
    garp_master_delay 10
    smtp_alert
    virtual_router_id 88
    priority 80
優先級為80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
#systemctl enable keepalived      

修改haproxy的配置檔案

root@haproxy1:~# vim /etc/haproxy/haproxy.cfg 
listen k8s-api-6443
  bind 192.168.200.248:6443
  mode tcp
  server 192.168.200.198 192.168.200.198:6443 check fall 3 rise 3 inter 3s
  server 192.168.200.197 192.168.200.197:6443 check fall 3 rise 3 inter 3s
root@haproxy1:~# systemctl restart haproxy
root@haproxy1:~# systemctl enable haproxy
root@haproxy1:~# scp /etc/haproxy/haproxy.cfg 192.168.200.205:/etc/haproxy/
拷貝配置檔案過去
root@etcd3:~# systemctl restart haproxy
root@etcd3:~# systemctl enable haproxy
root@master:~# mv /etc/ansible/* /tmp/
root@master:~# git clone -b 0.6.1 https://github.com/easzlab/kubeasz.git
root@master:~# cp -rf kubeasz/* /etc/ansible/
      

檢視安裝指南

​​​https://github.com/easzlab/kubeasz/tree/0.6.1​​

2.2019-11-19ubunt環境準備及k8s安裝環境準備

image.png

python2.7在master和node節點還有3個etcd都要安裝

root@master:/etc/ansible# cp example/hosts.m-masters.example ./hosts
# 安裝python2
apt-get install python2.7
 Ubuntu18.04可能需要配置以下軟連接配接
ln -s /usr/bin/python2.7 /usr/bin/python

      

解壓

下載下傳二進制檔案 請從分享的​​​百度雲連結​​​,下載下傳解壓到/etc/ansible/bin目錄,如果你有合适網絡環境也可以按照/down/download.sh自行從官網下載下傳各種tar包

​​​https://github.com/kubernetes/kubernetes/releases?after=v1.13.12​​ 下載下傳包的位址

root@master:/etc/ansible/bin# tar xf k8s.1-13-5.tar.gz 
root@master:/etc/ansible/bin# mv bin/* .
      
2.2019-11-19ubunt環境準備及k8s安裝環境準備

image.png

2.2019-11-19ubunt環境準備及k8s安裝環境準備

下載下傳這個官網二進制包

驗證是否能夠執行指令

root@master:/etc/ansible/bin# ./kube-apiserver --version
Kubernetes v1.13.5
root@master:/etc/ansible/bin# ./docker --version
Docker version 18.09.2, build 6247962
      

修改hosts檔案

root@master:/etc/ansible# cat hosts 
# 叢集部署節點:一般為運作ansible 腳本的節點
# 變量 NTP_ENABLED (=yes/no) 設定叢集是否安裝 chrony 時間同步
[deploy]
192.168.200.198 NTP_ENABLED=no
# etcd叢集請提供如下NODE_NAME,注意etcd叢集必須是1,3,5,7...奇數個節點
[etcd]
192.168.200.203 NODE_NAME=etcd1
192.168.200.204 NODE_NAME=etcd2
192.168.200.205 NODE_NAME=etcd3
[new-etcd] # 預留組,後續添加etcd節點使用
#192.168.1.x NODE_NAME=etcdx
[kube-master]
192.168.200.198
#192.168.200.197
[new-master] # 預留組,後續添加master節點使用
#192.168.1.5
#192.168.200.197
[kube-node]
192.168.200.206
[new-node] # 預留組,後續添加node節點使用
192.168.200.207
# 參數 NEW_INSTALL:yes表示建立,no表示使用已有harbor伺服器
# 如果不使用域名,可以設定 HARBOR_DOMAIN=""
[harbor]
#192.168.1.8 HARBOR_DOMAIN="harbor.yourdomain.com" NEW_INSTALL=no
# 負載均衡(目前已支援多于2節點,一般2節點就夠了) 安裝 haproxy+keepalived
[lb]
192.168.1.1 LB_ROLE=backup
192.168.1.2 LB_ROLE=master
#【可選】外部負載均衡,用于自有環境負載轉發 NodePort 暴露的服務等
[ex-lb]
#192.168.1.6 LB_ROLE=backup EX_VIP=192.168.1.250
#192.168.1.7 LB_ROLE=master EX_VIP=192.168.1.250
[all:vars]
# ---------叢集主要參數---------------
#叢集部署模式:allinone, single-master, multi-master
DEPLOY_MODE=multi-master
#叢集主版本号,目前支援: v1.8, v1.9, v1.10,v1.11, v1.12, v1.13
K8S_VER="v1.13"
# 叢集 MASTER IP即 LB節點VIP位址,為差別與預設apiserver端口,設定VIP監聽的服務端口8443
# 公有雲上請使用雲負載均衡内網位址和監聽端口
MASTER_IP="192.168.200.248"
KUBE_APISERVER="https://{{ MASTER_IP }}:6443"
# 叢集網絡插件,目前支援calico, flannel, kube-router, cilium
CLUSTER_NETWORK="calico"
# 服務網段 (Service CIDR),注意不要與内網已有網段沖突
SERVICE_CIDR="10.20.0.0/16"
# POD 網段 (Cluster CIDR),注意不要與内網已有網段沖突
CLUSTER_CIDR="172.31.0.0/16"
# 服務端口範圍 (NodePort Range)
NODE_PORT_RANGE="30000-65000"
# kubernetes 服務 IP (預配置設定,一般是 SERVICE_CIDR 中第一個IP)
CLUSTER_KUBERNETES_SVC_IP="10.20.0.1"
# 叢集 DNS 服務 IP (從 SERVICE_CIDR 中預配置設定)
CLUSTER_DNS_SVC_IP="10.20.254.254"
# 叢集 DNS 域名
CLUSTER_DNS_DOMAIN="linux37.local."
# 叢集basic auth 使用的使用者名和密碼
BASIC_AUTH_USER="admin"
BASIC_AUTH_PASS="123456"
# ---------附加參數--------------------
#預設二進制檔案目錄
bin_dir="/usr/bin"
#證書目錄
ca_dir="/etc/kubernetes/ssl"
#部署目錄,即 ansible 工作目錄,建議不要修改
base_dir="/etc/ansible"      

把資源限制改大點

root@master:/etc/ansible# vim roles/prepare/templates/30-k8s-ulimits.conf.j2 

* soft nofile 1000000
* hard nofile 1000000
* soft nproc 1000000
* hard nproc 1000000
root@master:/etc/ansible# vim 01.prepare.yml 
    #  - lb
注釋掉lb,因為已經有負載均衡了
      

位址需要修改你所在的城市

root@master:/etc/ansible# grep HangZhou roles/ -R
roles/harbor/templates/harbor-csr.json.j2:      "ST": "HangZhou",      

分步安裝,這個時候就需要所有伺服器必須安裝python2.7

root@master:/etc/ansible# ansible-playbook 01.prepare.yml