4.1搭建k8s環境

 

  • 項目摘要:

本內容是一個主節點,兩個從節點的k8s環境。非高可用環境。是一個簡易的入門案例。

前期準備:需要三臺centos服務器,本文是基於centos7。如果安裝Harbor,需要四臺centos服務器。

本文檔內容龐雜,可能會有少部分不全或者不正確,但是都是可以通過百度修正的。同時,後期也會不斷的修正。

  • 項目具體實施:
  1. 前期準備(每臺機器都需要執行)
  1. 配置host文件

192.168.1.1 k8s-master

192.168.1.2 k8s-node01

192.168.1.3 k8s-node02

  1. 安裝環境

安裝依賴包

#yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git

設置防火牆爲IPtables並設置空規則

#systemctl stop firewalld && systemctl disable firewalld

# yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save

關閉selinux

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

# setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/ ' /etc/selinux/config

# 調整內核參數,對於k8s [這裏報錯不用管它] 

cat > kubernetes.conf << EOF

net.bridge.bridge-nf-call-iptables=1

net.bridge.bridge-nf-call-ip6tables=1

net.ipv4.ip_forward=1

net.ipv4.tcp_tw_recycle=0 

vm.swappiness=0 #禁止使用 swap空間,只有當系統00M時才允許使用它

vm.overcommit_memory=1  #不檢查物理內存是否夠用

vm.panic_on_oom=0 #開啓00M

fs.inotify.max_user_instances=8192

fs.inotify.max_user_watches=1048576

fs.file-max=52706963

fs.nr_open=52706963

net.ipv6.conf.all.disable_ipv6=1

net.netfilter.nf_conntrack_max= 2310720

EOF

# cp kubernetes.conf /etc/sysctl.d/kubernetes.conf

# sysctl -p /etc/sysctl.d/kubernetes.conf

同步時間

# ntpdate -u cn.pool.ntp.org

關閉不需要的服務

# systemctl stop postfix && systemctl disable postfix

設置rsyslogd和systemd journald

# mkdir /var/log/journal  #持久化保存日誌的目錄

# mkdir /etc/systemd/journald.conf.d

# cat > /etc/systemd/journald.conf.d/99-prophet.conf <<EOF

[Journa1l]

#持久化保存到磁盤

Storage=persistent

#壓縮歷史日誌

Compress=yes

SyncIntervalSec=5m

RateLimitInterval=30s

RateLimitBurst=1000

#最大佔用空間10G

SystemMaxUse=10G

#單日誌文件最大200M

SystemMaxFileSize=200M

#日誌保存時間2周

MaxRetentionSec=2week

#不將日誌轉發到syslog

ForwardToSyslog=no

EOF

# systemctl restart systemd-journald

升級系統內核爲4.44

# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

安裝完成後檢查/boot/grub2/grub.cfg中對應內核menuentry 中是否包含initrd16 配置,如果沒有,再安裝一次!

# yum --enablerepo=elrepo-kernel install -y kernel-lt

設置開機從新內核啓動

# grub2-set-default 'CentOS Linux (4.4.189-1.el7. elrepo.x86_64) 7 (Core)'

# reboot

# uname -r

  1. 搭建k8s(每臺機器都需要執行,除3部分內容)
  1. kube-proxy 開啓ipvs的前置條件。

modprobe br_netfilter

#cat > /etc/sysconfig/modules/ipvs.modules <<EOF

#!/bin/bash

modprobe -- ip_vs

modprobe -- ip_vs_rr

modprobe -- ip_vs_wrr

modprobe -- ip_vs_sh

modprobe -- nf_conntrack_ipv4

EOF

# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules &&

lsmod | grep -e ip_vs -e nf_conntrack_ipv4

  1. 安裝Docker軟件,每臺機器都執行。

# yum install -y yum-utils device-mapper-persistent-data lvm2

# yum-config-manager \

  --add-repo \

http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# yum update -y && yum install -y docker-ce

創建/etc/docker 目錄

#mkdir /etc/docker

配置daemon

# cat > /etc/docker/daemon.json <<EOF

{

  "exec-opts": ["native.cgroupdriver=systemd"],

  "log-driver":"json-file",

  "log-opts":{

    "max-size": "100m"

  }

}

EOF

# mkdir -p /etc/systemd/system/docker.service.d

重啓docker服務

systemctl daemon-reload && systemctl restart docker && systemctl enable docker

(或者按如下教程:  安裝docker教程

  1. 安裝Kubeadm(主從配置)

#cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=0

repo_gpgcheck=0

gpgkey=http://mirrors.aliyun.com/kubernetes/yumdoc/yum-key.gpg

http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF

# yum -y install kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1

# systemctl enable kubelet.service

初始化主節點(在主節點機器操作)

#kubeadm config print init-defaults > kubeadm-config.yaml

對照修改如下內容

localAPIEndpoint:

advertiseAddress: 【主節點ip地址】

kubernetesVersion: v1.15.1

networking:

podSubnet: "10.244.0.0/16"

serviceSubnet: 10.96.0.0/12

---

apiVersion: kubeproxy.config.k8s.io/v1alpha1

kind: KubeProxyConfiguration

featureGates :

SupportIPVSProxyMode: true

mode : ipvs

# kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log

隨後執行日誌中要求的命令,並且加入主節點以及其餘工作節點

部署網絡:

# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# kubectl create -f kube-flannel.yml 

或者

#kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# kubectl get pod -n kube-system

  1. 至此,環境搭建完成。
  1. 附:安裝Harbor私有倉庫 (之後springboot將直接製作鏡像到該服務器)

機器: 192.168.1.4

  1. 安裝docker(略)
  2. 安裝docker-componse

# curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# chmod +x /usr/local/bin/docker-compose

# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# docker-compose --version

docker-compose version 1.24.1, build 1110ad01

  1. 製作證書(以下示例ip全改成自己的)

在嘗試http的時候,會遇到讓配置--insecure-registry serverIP,但是總是報錯,所以這裏直接採用證書的方式,通過https訪問。

創建目錄存放位置

# mkdir /root/ca -p

# cd /root/ca

以下命令創建CA證書

# openssl req  -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt

其中:(req:申請證書籤署請求;-newkey 新密鑰 ;-x509:可以用來顯示證書的內容,轉換其格式,給CSR簽名等X.509證書的管理工作,這裏用來自簽名。)
一路回車出現Common Name 輸入IP或域名,示例:
Common Name (eg, your name or your server's hostname) []:192.168.1.4

生成證書籤名請求

# openssl req  -newkey rsa:4096 -nodes -sha256 -keyout 192.168.1.4.key -out 192.168.1.4.csr

一路回車出現Common Name 輸入IP或域名,示例:

Common Name (eg, your name or your server's hostname) []:192.168.1.4

生成證書

備註:若需要添加多個地址(允許鏈接的ip等)

# echo subjectAltName = IP:192.168.1.4 > extfile.cnf

# openssl x509 -req -days 365 -in 192.168.1.4.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out 192.168.1.4.crt

  1. 安裝Harbor

# cd /usr/local

下載離線安裝包

# wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-offline-installer-v1.8.0.tgz

 解壓文件

# tar xvf harbor-offline-installer-v1.8.0.tgz

進入Harbor目錄

# cd harbor

配置harbor.yml

# vim harbor.yml

 配置如下

hostname: 192.168.1.4

https:

   port: 443

 certificate: /root/ca/192.168.1.4.crt

 private_key: /root/ca/192.168.1.4.key

harbor_admin_password: 123456

data_volume: /usr/local/harbor/data

location: /var/log/harbor

  1. 運行腳本進行安裝

# ./install.sh 

  1. 訪問測試

瀏覽器輸入:https://192.168.1.4,用戶名: admin 密碼:123456

  1. 配置當前主機docker的daemon.json文件

指定鏡像倉庫地址

# vim /etc/docker/daemon.json

添加如下內容:

#vim /etc/docker/daemon.json

 { 

 "insecure-registries": ["https://192.168.1.4"] 

} 

  1. 在當前主機嘗試docker登錄

docker login 192.168.1.4

用戶名: admin 密碼:123456

  1. 上傳鏡像進行上傳測試 

 a、下載測試鏡像

#docker pull hello-world 

 b、給鏡像重新打標籤(它需要去前端查看生成規則,否則會push失敗)

#docker tag hello-world:latest 192.168.1.4/library/hello-world:v1 

 d、登錄docker服務器

#docker login 192.168.1.4 

     f、上傳鏡像

         docker push 192.168.1.4/library/hello-world:v1

  1. 其它 Docker客戶端下載測試

  a、指定鏡像倉庫地址 

  # vim /etc/docker/daemon.json

 { 

   "insecure-registries": ["https://192.168.1.4"]

} 

 b、下載測試鏡像

# docker pull 192.168.1.4/library/hello-world:v1

  1. 添加CA證書實現免密登錄(在客戶機或者當前主機都可以)

# mkdir -p /etc/docker/certs.d/192.168.1.4

# cp ca.crt /etc/docker/certs.d/192.168.1.4/ca.crt

# systemc restart docker.service

相關材料下載(本材料包含和本頁內容一致的文檔、三份k8s講義,一套kubernetes培訓文檔,共大約20個文檔):
https://download.csdn.net/download/qq_25337221/12499378

  • 參考鏈接:
  1. 參閱培訓教程
  2. 安裝harbor: https://learnku.com/articles/29884  
  3. 配置CA證書: https://www.cnblogs.com/Dev0ps/p/10566398.html

本內容由安康學院“雨季”原創。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章