3.1kubeadm集群安装

一.说明

二 . 安装软路由

三 . 集群安装

3.1 主机准备

设置系统主机名以及host文件的相互解析

hostnamectl set-hostname k8s-master01
hostnamectl set-hostname k8s-node01
hostnamectl set-hostname k8s-node02

Vim /etc/hosts

192.168.66.10 k8s-master01
192.168.66.20 k8s-node01
192.168.66.21 k8s-node02

安装依赖包

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

调整内核参数, 对于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 空间,只有当系统 OOM 时才允许使用它 
vm.overcommit_memory=1 # 不检查物理内存是否够用 
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协议
net.netfilter.nf_conntrack_max=2310720 
EOF 
cp kubernetes.conf /etc/sysctl.d/kubernetes.conf 
sysctl -p /etc/sysctl.d/kubernetes.conf 

调整系统时区

# 设置系统时区为 中国/上海
timedatectl set-timezone Asia/Shanghai 
# 将当前的 UTC 时间写入硬件时钟 
timedatectl set-local-rtc 0
# 重启依赖于系统时间的服务
systemctl restart rsyslog
systemctl restart crond 

关闭系统不需要服务

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 
[Journal]
# 持久化保存到磁盘
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

CentOS 7.x 系统自带的 3.10.x 内核存在一些 Bugs,导致运行的 Docker、Kubernetes 不稳定,例如: 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-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)' 
grub2-set-default 'CentOS Linux (4.4.218-1.el7.elrepo.x86_64) 7 (Core)'
grub2-set-default 'CentOS Linux (4.4.219-1.el7.elrepo.x86_64) 7 (Core)'
	
查看所有可用内核
awk -F \' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
grub2-set-default 'CentOS Linux (4.4.248-1.el7.elrepo.x86_64) 7 (Core)'

3.2 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 

3.4 安装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

3.5 安装kubeadm(主从配置)

cat <<EOF > /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
yum -y install kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1 
systemctl enable kubelet.service 

3.6 初始化主节点 (根据日志里面的内容做下步操作)

kubeadm config print init-defaults > kubeadm-config.yaml 
#更改kubeadm-config.yaml 文件
localAPIEndpoint: 
advertiseAddress: 192.168.66.10 #更改为master的ip地址
kubernetesVersion: v1.15.1 #更改版本为当前版本
networking: 
  podSubnet: "10.244.0.0/16" #添加flanel 网络不然后面麻烦
  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 

3.7 查看kubeadm-init.log 进行下步操作

3.8 加入主节点以及其余工作节点

执行安装日志中的加入命令即可
mkdir install-k8s
mv ./ install-k8s

3.9 部署网络flannel

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

kubectl apply -f 是在原有基础上升级

kubectl create -f 是直接新建

3.10 加入其他节点

加入其他节点(在子节点执行 )(在主节点的日志文件里面找到命令):

	kubeadm join 192.168.66.10:6443 --token abcdef.0123456789abcdef \
	    --discovery-token-ca-cert-hash sha256:ed81ab06be57fa61df388ddce02b4a6d70d0e6a0be91b7b7382d8fd82970c964 

四 . 配置私有仓库

1、安装docker

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install docker-ce -y
yum install python-pip -y
pip install --upgrade pip
pip install docker-compose (单机编排工具)

2、更改vim /etc/docker/daemon.json 让其信任syuee.com 这个域名

{
  "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "registry-mirrors": ["https://f4573wwn.mirror.aliyuncs.com"],
  "insecure-registries": ["https://hub.syuee.com"]
}

3、创建证书

#生成私钥输入两次密码(4位以上)
openssl genrsa -des3 -out server.key 2048
#创建一个证书的请求
openssl req -new -key server.key -out server.csr
#第一个国家名:CN
#第二个省:SH
#第三个市:SH
#第四个组织:syuee
#第五个机构:syuee
#完全合规域名:hub.syuee.com
#管理员邮箱:sivan@syuee.com
#是否要改密码

#备份私钥
cp server.key server.key.org
#去掉密码
openssl rsa -in server.key.org -out server.key
#签名生成证书
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 
mkdir /data/cert #创建/data/cert 目录 (存储ssl的目录)
chmod -R 777 /data/cert 

4、上传harbor并解压

tar xf harbor-offline-installer-v1.2.0.tgz
mv harbor /usr/local/

更改配置文件vim /usr/local/harbor/harbor.cfg

更改hostname 
hostname = hub.syuee.com
更改访问为https
ui_url_protocol = https

默认证书的位置是
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key

安装harbor

./install.sh

5、其他配置

配置hosts 解析

C:\Windows\System32\drivers\etc 的hosts 
默认账号密码是 
admin\Harbor12345

6、更改其他docker 指定仓库

{
  "exec-opts": ["native.cgroupdriver=systemd"], 
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "insecure-registries": ["https://hub.syuee.com"]
}

7、验证

登录
docker login https://hub.syuee.com
admin/Harbor12345

下载一个镜像
docker pull nginx
重新打标签
docker tag nginx:latest hub.syuee.com/library/nginx:v1
推送到仓库
docker push hub.syuee.com/library/nginx:v1

hub.syuee.com/library/ingress-nginx-controller:v0.44.0
posted @ 2021-07-25 14:59  白色的番茄  阅读(81)  评论(0编辑  收藏  举报