K8S部署

一、準備工作:

三臺虛擬機:centos7系統(tǒng)

二、開始安裝:

1.設置主機名:


2.修改hosts


3.安裝依賴包

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


4.設置防火墻為Iptables并設置空規(guī)則

systemctl stop firewalld?

systemctl disable firewalld

yum -y install iptables-services?

systemctl start iptables?

systemctl enable iptables?

service iptables save



5.關閉SELINUX,關閉swap

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

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



6.調(diào)整內(nèi)核參數(shù),對于K8S

cat? >? kubernetes.conf? <

net.bridge.bridge-nf-call-iptables=1 #重要 開啟網(wǎng)格模式

net.bridge.bridge-nf-call-ip6tables=1 #重要

net.ipv4.ip_forward=1

net.ipv4.tcp_tw_recycle=0

vm.swappiness=0? #禁止使用swap空間,只有當系統(tǒng)OOM時才允許使用它

vm.overcommit_memory=1? #不檢查物理內(nèi)存是否夠用

vm.panic_on_oom=0? #開啟OOM

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 #重要,關閉ipv6協(xié)議

net.netfilter.nf_conntrack_max=2310720

EOF


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

sysctl? -p? /etc/sysctl.d/kubernetes.conf #刷新

刷新時候可能會提示文件不存在,不用管:



7.設置rsyslogd 和system-journald

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

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

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

[Journal]

# 持久化保存到磁盤

Storage=persistent

# 壓縮歷史日志

Compress=yes

SyncIntervalSec=5m

RateLimitInterval=30s

RateLimitBurst=1000

# 最大占用空間10G

SystemMaxUse=10G

# 單日志文件最大200M

SystemMaxFileSize=200M

# 日志保存時間2 周

MaxRetentionSec=2week

#? 不將日志轉(zhuǎn)發(fā)到? syslog

ForwardToSyslog=no?

EOF


?systemctl? restart?systemd-journald



8.升級系統(tǒng)內(nèi)核為4.44

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

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

?#設置開機從新內(nèi)核啟動

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

完成后?reboot 重啟

uname -a 查看內(nèi)核版本


9.kube-proxy開啟ipvs的前置條件

modprobe?br_netfilter


cat?>?/etc/sysconfig/modules/ipvs.modules?<

#!/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


10.安裝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 docker-ce-18.09.9-3.el7docker-ce-cli-18.09.9-3.el7 containerd.io

注意:Docker請使用18.09, k8s暫不支持Docker最新版19.x


11.創(chuàng)建?/etc/docker? 目錄并配置daemon.json

cat?>? /etc/docker/daemon.json? <

{

"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"],

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

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

"log-opts":? {

????"max-size":? "100m"

????}

}

EOF

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

其中https://xxxxxxxx.mirror.aliyuncs.com為阿里云鏡像加速地址,?xxxxxxxx需要替換為自己賬戶中的地址,也可以為其他鏡像地址,沒有賬戶的整個刪掉不填



12.重啟docker服務設置docker開機自啟

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



13.安裝 Kubeadm?

cat?<? /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/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

EOF


yum -y install kubeadm kubectl kubelet

systemctl enable? kubelet.service



以上為主從節(jié)點都需要完成的


14.初始化主節(jié)點

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

將advertiseAddress修改為自己ip,imageRepository修改為阿里云鏡像倉庫,運行以下命令

kubeadm?init? --config=kubeadm-init.yaml? |?tee? kubeadm-init.log

成功后如下圖:



mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config



15.部署主節(jié)點網(wǎng)絡

這里使用calico,giuhub下載 calico.yaml

kubectl apply?-f??calico.yaml


成功后用:kubectl get pod -n kube-system 查看狀態(tài)

kubectl get node?列出節(jié)點狀態(tài)信息:


16.從節(jié)點加入集群

運行在主節(jié)點初始化成功后,輸出的信息最后面兩句



最后結(jié)果:




三、遇到問題

1.couldn’t validate the identity ofthe API Server: abort connecting to API servers after timeout of 5m0s

解決:在master節(jié)點上運行 kubeadm token create,得到新的token



2.no route to host

解決: 在主節(jié)點上運行? iptables -F


3.cpu核心數(shù)沒有達到要求

解決:?加

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容