Primeiro, a descrição ambiental
Em segundo lugar, o sistema é inicializado (mestre, nó 1, nó 2)
1. cat / etc / hosts
192.168.1.136 K8S-master01
192.168.1.134 K8S-node1
192.168.1.137 K8S-node2
192.168.1.25 hub.testwang.com
2. As dependências base de montagem
yum install -y conntrack ntpdate NTP ipvsadm ipset jq iptables onda sysstat libseccomp wget vim net-tools git
3. Defina firewall iptables regras e configurar vazia
parada systemctl firewalld && systemctl desativar firewalld
yum -y install iptables-serviços && systemctl começar iptables && systemctl permitir iptables
&& iptables -F && service iptables save
4. Feche selinux
swapoff -a && sed -i '/ swap / s / ^ \ (. * \) $ / # \ 1 / g' / etc / fstab
setenforce 0 && sed -i 's / ^ SELINUX =. * / SELINUX = deficientes /' / etc / selinux / config
A otimização de parâmetros do kernel
modprobe br_netfilter
cat> kubernetes.conf << EOF
net.bridge.bridge-nf-call-iptables = 1
NF-Call -. Net.bridge.bridge os ip6tables = 1
. É nomeado net.ipv4.ip_forward e = 1
net.ipv4.tcp_tw_recycle = 0
vm.swappiness = proibir o uso de espaço de swap # 0, somente quando o sistema só é permitido usá-lo OOM
vm.overcommit_memory = # 1 não verifica se a memória física suficiente
vm.panic_on_oom = 0 # abrir o Oom
fs.inotify.max_user_instances = 8192
fs.inotify.max_user_watches = 1048576
fs.file-max = 52706963
fs.nr_open = 52706963
net.ipv6.conf. =. 1 all.disable_ipv6
net.netfilter.nf_conntrack_max = 2.310.720
EOF
6. A zona de sistema de ajuste
# Defina o fuso horário para China / Shanghai
timedatectl o SET-TimeZone Ásia / em Shanghai
# A hora UTC atual para o relógio de hardware
timedatectl a 0 SET-local-a RTC
# reboot do sistema depende do tempo de serviço
systemctl restart rsyslog
systemctl restart crond
Desativar os serviços desnecessários
systemctl parada postfix.service && systemctl postfix.service disable
7. Defina rsyslogd e systemd journald
mkdir / var / log / journal
/etc/systemd/journald.conf.d mkdir
CAT> /etc/systemd/journald.conf.d/99-prophet.conf << EOF
[Journal]
# persistentemente guardado no disco
de armazenamento persistente =
# log compressão história
Compress = yes
SyncIntervalSec = 5m
RateLimitInterval = 30s
RateLimitBurst = 1000
# o espaço máximo 10G
SystemMaxUse = 10G
# único log de arquivo máximo 200M
SystemMaxFileSize = 200M
# log economizar tempo duas semanas
MaxRetentionSec = 2 semanas
# não toras para a frente para syslog
ForwardToSyslog = nO
8. O sistema do kernel atualizar 4,44
CentOS 7.x sistema vem com alguns do kernel 3.10.x erros, levando a executar Docker, a instabilidade Kubernetes, tais como: RPM -Uvh
http://www.elrepo.org/elrepo-release-7.0-3.el7. elrepo.noarch.rpm
RPM -Uvh http://www.elrepo.org/elrepo-release-7.0
Em terceiro lugar, instalar janela de encaixe e K8S
1. kube-proxy abrir as ipvs condição prévia
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 / módulos /ipvs.modules && festa /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
2.安装docker
yum install -y lvm2 yum-utils device-mapper-persistent-data
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum update-y && yum install -y estivador-ce
##创建/ / janela de encaixe目录etc
mkdir / etc / janela de encaixe
#配置daemon.
CAT> /etc/docker/daemon.json << EOF
{
"Exec-opta": [ "native.cgroupdriver = systemd"],
"log-piloto": "json-file",
"log-opta": {
" max-size ": "100m"
}
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
#重启janela de encaixe服务
systemctl daemon-reload &&
3. Instalação Kubeadm (configuração mestre-escravo)
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/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key. gpg
EOF
yum -y instalar kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1
systemctl permitir kubelet.service
4 Configure o arquivo de configuração inicial
cat kubeadm-config.yaml
kubeadm.k8s.io/v1beta2: apiVersion bootstrapTokens: - grupos: - Sistema: bootstrappers: kubeadm: default-nó-token de token: abcdef.0123456789abcdef TTL: 24h0m0s usos: - assinatura - autenticação tipo: InitConfiguration localAPIEndpoint: advertiseAddress: 192.168.1.136 bindport: 6443 nodeRegistration: criSocket: /var/run/dockershim.sock nome: K8S-master01 impurezas: - efeito: NoSchedule chave: node-role.kubernetes.io/master --- apiServer: timeoutForControlPlane: 4m0s apiVersion: kubeadm.k8s .io / v1beta2 certificatesDir: / etc / Kubernetes / PKI clusterName: Kubernetes controllerManager: {} DNS: Tipo: CoreDNS ETCD: local: DataDir: / var / lib / ETCD imageRepository: k8s.gcr.io tipo: ClusterConfiguration kubernetesVersion: v1.15.3 rede: DNSDOMAIN: cluster.local podSubnet: "10,244 .0.0 / 16" serviceSubnet: 10.96.0.0/12 Scheduler: {} --- apiVersion: kubeproxy.config.k8s.io/v1alpha1 tipo: KubeProxyConfiguration featureGates: SupportIPVSProxyMode: true modo: ipvs