雖然有Rancher OS和CoreOS這類的發行版,但Kubernetes集羣的安裝也不是太麻煩,所以,仍是先從最基本的實驗下。如下是本人CentOS7.6上安裝Kubernetes集羣的筆記,而且分章節記錄,持續更新...。linux
Kubernete集羣的主機生產環境也有多種選擇,以下:git
但我如今手上只有一臺7代i7的筆記本,雖有16G內存,但這雙核四線程真不夠看啊,單機和minikube安裝先不考慮,等小型實驗集羣實驗好後再逐個實現。個人筆記本是安裝的fedora,使用kvm虛擬機虛擬了三個主機每一個主機也就1vcpu+1G內存,分別安裝一個master節點和兩個計算節點。
各個節點須要安裝的kubernetes組件以下:github
如chrony,配置文件/etc/chrony.conf(內網須要配置時間服務器),服務啓動使用systemctl命令。建議不管內網和能鏈接Internet的環境都爲集羣配置時間同步服務器。vim
在/etc/hosts文件中配置集羣的IP和主機名解析(同時能夠減小DNS的解析時延)api
CentOS7上關閉防火牆bash
# systemctl stop firewalld.service # systemctl disable firewalld.service
# setenforce 0
同時配置時/etc/selinux/config文件服務器
# vim /etc/selinux/config ... SELINUX=disable
或者網絡
# sed -i 's@^\(SELINUX=\).*@\1disabled@' /etc/sysconfig/selinux
Kubernetes 1.8 開始須要關閉系統 Swap 交換分區,若是不關閉,則沒法啓動。
查看app
# free -m
臨時關閉ide
# swapoff -a # echo "vm.swappiness = 0" >> /etc/sysctl.conf
或者
# swapoff -a && sysctl -w vm.swappiness=0
同時編輯配置文件/etc/fstab進行永久關閉,即註釋掛載swap設備的行。
注:本次實驗因爲資源有限沒有關閉,但後續有解決方法(僅限於實驗環境)
kube-proxy 支持 iptables 和 ipvs,若是條件知足,默認使用 ipvs,不然使用 iptables。
cat <<EOF > /etc/sysctl.d/kubernetes.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF modprobe br_netfilter sysctl -p /etc/sysctl.d/kubernetes.conf 或者 sysctl --system
因爲 ipvs 已經加入到了內核的主幹,因此爲 kube-proxy 開啓 ipvs 的前提須要加載如下的內核模塊:
執行如下腳本加載內核
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
參考:https://github.com/kubernetes/kubernetes/blob/master/pkg/proxy/ipvs/README.md
上面腳本建立了的/etc/sysconfig/modules/ipvs.modules文件,保證在節點重啓後能自動加載所需模塊。 使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看是否已經正確加載所需的內核模塊。
接下來還須要確保各個節點上已經安裝了 ipset 軟件包。 爲了便於查看 ipvs 的代理規則,最好安裝一下管理工具 ipvsadm。
yum install ipset ipvsadm
可使用ipvsadm檢查是否開啓ipvs,示例以下:
# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 10.0.0.1:443 rr persistent 10800 -> 192.168.0.1:6443 Masq 1 1 0
若是以上前提條件若是不知足,則即便 kube-proxy 的配置開啓了 ipvs 模式,也會退回到 iptables 模式。