CD集成介紹一:環境準備

<code>原創不易,請多多支持!對軟件技術感興趣的童鞋請關注我,後續技術分享更精彩。/<code> 

容器編排從幾年前群雄割據、各方亂戰,到如今Google的k8s一統天下。能迅速力挽狂瀾,已說明其技術實力。但k8s複雜的架構,不太友好的文檔,確實讓一些初學者望而卻步。近期正好一直在學習k8s的東西,走了一些彎路。整理出來以備參考。

由於內容過多,本文將分多章介紹k8s集群構建過程,併發布demo到k8s集群,簡單演示一個完整CI/CD的自動化過程。各章節內容如下:

<code>一、k8s集群環境準備
二、rancher搭建k8s集群環境
三、Jenkins自動化構建示例到k8s集群/<code>

部署資源

centos7.7虛擬機3臺,對應ip如下:

<code>- 192.168.0.110
- 192.168.0.111
- 192.168.0.112/<code>

192.168.0.110 : rancher和jenkins部署機器。

192.168.0.111/192.168.0.112:k8s集群node節點。筆者機器資源所限,超過3臺虛擬機,個人筆記本電腦將無法工作。使用者可根據具體情況增加虛擬機節點。

環境準備

安裝k8s集群前,請務必按以下操作初始化工作環境。否則後續k8s集群可能出現各種不可預期錯誤。筆者就因一個ipv4端口問題浪費2天時間。

注:未特別說明,後續操作默認在所有虛擬機節點上安裝。

docker環境安裝

添加阿里docker鏡像源,沒有daemon.json,請自行新增相應文件。

<code>vi /etc/docker/daemon.json/<code>
<code>{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}/<code>

docker環境安裝請參考以下官方文檔,這裡不再詳述。

https://docs.docker.com/install/linux/docker-ce/centos/

添加k8s國內鏡像源

<code>cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF/<code>

設置主機名

設置k8s node節點主機名。192.168.0.110為公共服務rancher和Jenkins,無需設置。

<code>cat >> /etc/hosts 

退出,重新登錄 root 賬號,可以看到主機名生效。

關閉防火牆

關閉防火牆,清理防火牆規則,設置默認轉發策略:

<code>systemctl stop firewalld
systemctl disable firewalld
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat
iptables -P FORWARD ACCEPT/<code>

關閉 swap 分區

關閉 swap 分區,否則kubelet 會啟動失敗(可以設置 kubelet 啟動參數 --fail-swap-on 為 false 關閉 swap 檢查):

<code>swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab /<code>

關閉 SELinux

關閉 SELinux,否則 kubelet 掛載目錄時可能報錯 Permission denied:

<code>setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config/<code>

優化內核參數

<code>cat > kubernetes.conf 

關閉 tcp_tw_recycle,否則與 NAT 衝突,可能導致服務不通;

設置系統時區

<code>timedatectl set-timezone Asia/Shanghai/<code>

設置系統時鐘同步

<code>systemctl enable chronyd
systemctl start chronyd
/<code>

查看同步狀態:

<code>timedatectl status
/<code>

輸出:

System clock synchronized: yes NTP service: active RTC in local TZ: no System clock synchronized: yes,表示時鐘已同步; NTP service: active,表示開啟了時鐘同步服務;

將當前的 UTC 時間寫入硬件時鐘

<code>timedatectl set-local-rtc 0
/<code> 

重啟依賴於系統時間的服務

<code>systemctl restart rsyslog 
systemctl restart crond/<code>


k8s集群資源環境準備完成,請關注我,瞭解後續k8s CI/CD自動化集成過程。


分享到:


相關文章: