老男孩K8S集群部署(一)


本文是我學習了老男孩k8s后做的筆記,整理成博客發表出來便於自己之后復習回顧。

使用docker的意義

我們的互聯網有3次重大的飛躍:
第一次飛躍:C/S架構-->B/S架構 (客戶端/服務器-->瀏覽器/服務器)
第二次飛躍:app
第三次飛躍:小程序

使用docker引擎的缺點

CNCF 雲原生計算機基金會

UTS
NET 網絡
IPC 進程間通信

ingress用的最多,因為互聯網公司大多是七層的服務。
由一個域名去尋找pod的過程:ingress-->service-->pod

所有組件是通過apiserver來通信的,是一個通信樞紐

controller-manager需要有高可用機制

scheduler調度

kubelet 干活的組件,臟活累活都是kubelet干

kube-proxy組件:將clusterip和podip關聯起來,提供集群網絡
ipvs:ipvs工具已經內嵌到linux內核里了。

節點網絡-->宿主機網絡 10.4.7.0/24 實網絡
pod網絡-->從宿主機上nat出來的 172.7.0.0/16 實網絡
service網絡-->連接pod和節點網絡 192.168.0.0/16 虛網絡

三個對應3段私有地址
node第二位ip 4 代表機房地址
第三位ip 7 區分業務和環境 通過vlan做物理隔離

上圖是邏輯上的數據流向

反代的同時做了高可用。
4層反代apiserver 7層反代ingress

准備虛擬機

我使用的是192.168.172.0/24網絡

主機名 ip 功能
hdss172-21.host.com 192.168.172.21 k8s-master01 k8s代理節點1
hdss172-22.host.com 192.168.172.22 k8s-master02 k8s代理節點2
hdss172-23.host.com 192.168.172.23 k8s-worker01 k8s運算節點1
hdss172-24.host.com 192.168.172.24 k8s-worker02 k8s運算節點2
hdss172-25.host.com 192.168.172.25 docker倉庫 k8s運維節點(docker倉庫)

vip 192.168.172.100

安裝epel源:

yum install epel-release -y

關閉selinux和firewalld:

setenforce 0
getenforce
systemctl stop firewalld

安裝必要工具:

yum install wget net-tools telnet tree nmap sysstat lrzsz dos2unix bind-utils -y

DNS服務初始化

在hdss-172-21.host.com上:
安裝bind9軟件,因為我們要用ingress,7層流量調度,要有域名。

yum install bind –y

配置主配置文件:

vim /etc/named.conf
listen-on port 53 { 192.168.172.21; };
allow-query     { any; };
forwarders      { 114.114.114.114; };
recursion yes;  dns查詢是使用遞歸的方式來查詢的
dnssec-enable no;
dnssec-validation no;

檢查配置:

named-checkconf

沒有報錯

配置區域配置文件:

vim /etc/named.rfc1912.zones
在最后添加:
zone "host.com" IN {
        type master;
        file "host.com.zone";
        allow-update { 192.168.172.21; };
};

zone "od.com" IN {
        type master;
        file "od.com.zone";
        allow-update { 192.168.172.21; };
};

主機域:毫無意義且好記的域 host.com
允許本機update。

業務域:od.com

編輯區域數據文件:

vim /var/named/host.com.zone
$ORIGIN host.com.
$TTL 600    ; 10 minutes        
@       IN SOA  dns.host.com.  dnsadmin.host.com. (
                2021070501 ; serial
                10800      ; refresh(3 hours)
                900        ; retry(15 minutes)
                604800     ; expire(1 week)
                86400 )    ; minimum(1 day)
        NS      dns.host.com.        
$TTL 60 ; 1 minute
dns            A       192.168.172.21    
hdss172-21     A       192.168.172.21    
hdss172-22     A       192.168.172.22    
hdss172-23     A       192.168.172.23    
hdss172-24     A       192.168.172.24    
hdss172-25     A       192.168.172.25

配置文件中的;分號代表注釋

cp /var/named/host.com.zone /var/named/od.com.zone

vim /var/named/od.com.zone
$ORIGIN od.com.
$TTL 600    ; 10 minutes        
@       IN SOA  dns.od.com.  dnsadmin.od.com. (
                2021070501 ; serial
                10800      ; refresh(3 hours)
                900        ; retry(15 minutes)
                604800     ; expire(1 week)
                86400 )    ; minimum(1 day)
        NS      dns.od.com.  
$TTL 60 ; 1 minute
dns            A       192.168.172.21

再次檢查配置:

named-checkconf

啟動named服務:

systemctl start named

dns服務開啟的是53端口

dig檢查一下dig -t A hdss172-21.host.com @192.168.172.21 +short

所以,DNS服務正常。

修改網絡配置,將所有DNS1修改為hdss172-21.host.com的ip 192.168.172.21,重啟網絡服務,ping www.baidu.com是否正常,此時的dns服務器是192.168.172.21。

ping hdss172-21.host.com

編輯5台機器:

vim /etc/resolv.conf
search host.com
nameserver 192.168.172.21

准備簽發證書環境

在hdss172-25.host.com上:

wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/bin/cfssl
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/bin/cfssl-json
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -O /usr/bin/cfssl-certinfo
chmod +x /usr/bin/cfssl*

新建存放自簽證書的目錄:

mkdir /opt/certs

根證書--ca證書,也就是權威證書,權威機構簽發的。
創建ca證書的請求文件:

/opt/certs/ca-csr.json

expiry:過期時間,默認是1年。175200h就是20年。

cat ca-csr.json 
{
  "CN": "OldboyEdu",
  "hosts": [
  ],
  "key": {
      "algo": "rsa",
      "size":  2048
  },
  "names": [
     {
        "C": "CN",
        "ST": "beijing",
        "L": "beijing",
        "O": "od",
        "OU": "ops"
     }
  ],
  "ca": {
      "expiry": "175200h"
  }
}

簽證書:

cfssl gencert --initca ca-csr.json | cfssl-json -bare ca

最重要的是ca-key.pem和ca.pem
是根證書和根證書的私鑰

Docker環境安裝

在hdss172-23.host.com,hdss172-24.host.com,hdss172-25.host.com三台主機上。

簡單部署docker的命令:

curl –fsSL https://get.docker.com | bash –s docker --mirror Aliyun

hdss172-23.host.com機器配置:


cat /etc/docker/daemon.json
{
  "graph": "/data/docker",
  "storage-driver": "overlay2", 
  "insecure-registries": ["registry.access.redhat.com","quay.io","harbor.od.com"],
  "registry-mirrors": ["https://q2gr04ke.mirror.aliyuncs.com"],
  "bip": "192.168.23.1/24",
  "exec-opts": ["native.cgroupdriver=systemd"],
  "live-restore": true
}

hdss172-24.host.com機器配置:

cat /etc/docker/daemon.json
{
  "graph": "/data/docker",
  "storage-driver": "overlay2", 
  "insecure-registries": ["registry.access.redhat.com","quay.io","harbor.od.com"],
  "registry-mirrors": ["https://q2gr04ke.mirror.aliyuncs.com"],
  "bip": "192.168.24.1/24",
  "exec-opts": ["native.cgroupdriver=systemd"],
  "live-restore": true
}

hdss172-25.host.com機器配置:

cat /etc/docker/daemon.json
{
  "graph": "/data/docker",
  "storage-driver": "overlay2", 
  "insecure-registries": ["registry.access.redhat.com","quay.io","harbor.od.com"],
  "registry-mirrors": ["https://q2gr04ke.mirror.aliyuncs.com"],
  "bip": "192.168.25.1/24",
  "exec-opts": ["native.cgroupdriver=systemd"],
  "live-restore": true
}

3台主機上:

mkdir -p /data/docker
systemctl start docker
docker info

私有倉庫 harbor

harbor的github地址:https://github.com/goharbor/harbor/releases

在hdss172-25.host.com主機上:
選擇1.7.6及其以上的版本,下載offline版本:

tar zxf harbor-offline-installer-v1.8.3.tgz -C /opt/
mv harbor/ harbor-v1.8.3

做軟鏈接便於harbor升級:

ln -s harbor-v1.8.3/ harbor

編輯harbor的配置文件harbor.yml:

vim harbor.yml
hostname: harbor.od.com
http:
  port: 180
log:
  location: /data/harbor/logs
data_volume: /data/harbor
harbor_admin_password: Harbor12345   #生產中需要改成較為復雜的密碼

新建日志目錄,安裝docker-compose,啟動harbor:

mkdir -p /data/harbor/logs
yum install docker-compose –y
sh /opt/harbor/install.sh

docker-compose ps 

docker ps –a

用nginx反代180端口

安裝nginx,配置反向代理:

yum install nginx –y
nginx –t
systemctl start nginx
systemctl enable nginx

在hdss172-21.host.com中做dns的解析。

vim /var/named/od.com.zone

注意序列號serial前滾一個序號

systemctl restart named
dig -t A harbor.od.com +short

瀏覽器中訪問:harbor.od.com
用戶名:admin
密碼:Harbor12345

image

新建項目 public 公開

下載鏡像nginx:

docker pull nginx:1.7.9
==
docker pull docker.io/library/nginx:1.7.9
docker images | grep 1.7.9

登錄

docker login harbor.od.com
用戶名:admin
密碼:Harbor12345

上傳鏡像到harbor的public庫:

docker push harbor.od.com/public/nginx:v1.7.9


免責聲明!

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



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