Kubernetes安装
1.操作系统安装及调优
1.1.操作系统版本
使用centos7.7 1908
1.2.配置yum
yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git
1.3.关闭防火墙
service iptables stop
service firewalld stop
systemctl disable firewalld
1.4.关闭swap分区
swapoff -a && sed -i '/ swap / s/^(.*)$/#\1/g' /etc/fstab
1.5.关闭selinux
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
1.6.调整内核参数
cat > kubernetes.conf <
cp kubernetes.conf /etc/sysctl.d/kubernetes.conf
sysctl -p /etc/sysctl.d/kubernetes.conf
会提示sysctl: cannot stat /proc/sys/net/netfilter/nf_conntrack_max: No such file or directory
没事的
1.6.关闭系统不需要的服务
systemctl stop postfix && systemctl disable postfix
1.7.设置rsyslogd和systemd journald
mkdir /var/log/journal
mkdir /etc/systemd/journald.conf.d
cat > 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
cp 99-prophet.conf /etc/systemd/journald.conf.d/99-prophet.conf
1.8.升级内核
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install -y kernel-lt
可以通过cat /boot/grub2/grub.cfg |grep "menuentry "查看可以使用的内核
grub2-set-default "CentOS Linux (4.4.214-1.el7.elrepo.x86_64) 7 (Core)"
1.9.重启
reboot
1.10.检查内核版本
uname -r
1.11.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
/etc/sysconfig/modules/ipvs.modules && lsmod |grep -e ip_vs -e nf_conntrack_ipv4
2.安装docker
2.1.安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
2.2.导入阿里的docker仓库
2.3.更新系统
yum update -y && yum install -y docker-ce
2.4.重启
grub2-set-default "CentOS Linux (4.4.214-1.el7.elrepo.x86_64) 7 (Core)"
reboot
2.5.创建目录
mkdir /etc/docker
cat > /etc/docker/daemon.json << EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100M"
}
}
EOF
2.6.启动docker
systemctl start docker
systemctl enable docker
mkdir -p /etc/systemd/system/docker.service.d
systemctl daemon-reload && systemctl restart docker && systemctl enable docker
2.7.导入阿里的kubernetes仓库
yum -y install kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1
systemctl enable kubelet.service
3.安装kubernetes(所有节点都要执行)
3.1.初始化主节点
上传 kubeadm-basic.images.tar.gz并解压
touch /tmp/temp1.log
cat > /root/docker_imput.sh << EOF
#!/bin/sh
ls /root/kubeadm-basic.images>/tmp/temp1.log
cd /root/kubeadm-basic.images
for i in \$( cat /tmp/temp1.log )
do
docker load -i \$i
done
EOF
chmod 755 /root/docker_imput.sh
sh /root/docker_imput.sh
3.2.生成kubeadm默认配置文件
kubeadm config print init-defaults>kubeadm-config.yaml
3.2.修改 vi kubeadm-config.yaml
localAPIEndpoint:
advertiseAddress 本机地址
kubernetesVersion: v1.15.1
networking增加
podSubnet: "10.244.0.0/16"
scheduler后换行增加:
---
apiVersion: kubeproxy.config.k8s.io/vlalphal
kind: kubeProxyConfiguration
featureGates:
SupportIPVSProxyMode: true
mode: ipvs
3.3.初始化配置
kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log
如果提示需要关闭swap,执行
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
mkdir $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
3.4.归档重要文件(非必须)
cd $HOME
mkdir install-8s
mv kubeadm-init.log kubeadm-config.yaml install-8s
mkdir plugin
cd plugin
mkdir flannel
3.5.安装flannel
将docker_flannel_v0.11.0-amd64.tar传入/root下
docker load < docker_flannel_v0.11.0-amd64.tar
方法1:
#kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yum
方法2:
cd /root/plugin/flannel
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yum
kubectl create -f kube-flannel.yum
3.6.检查有无kube-flannel开头的pod
kubectl get pod -n kube-system
3.7.检查node的状态是否为ready
kubectl get node
4.kubernetes Node节点加入集群
4.1.查看init日志
找到kubeadm join 192.168.66.10:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:22e3c51db9f42ffc891eb910bef42f9284053d9a68c5760e0224f2dc493a2717
4.2.Node加入集群
在node节点上行执行上一步找到的kubeadm join命令,如果报错,建议先执行:
kubeadm reset
再重新执行
5.构建harbor
5.1.登陆所有k8s节点,增加harbor地址至docker,避免https信任问题
vi /etc/docker/daemon.json
在倒数第二个}后面加,(注意这个逗号),在换行追加
"insecure-registries":["https://hub.yao.com"]
保存退出
5.2.重启docker
systemctl restart docker
5.3.修改hosts
在所有k8s节点上修改hosts,添加
7.7.7.7(你的 ip) https://hub.yao.com
至hosts文件保存
5.2.登陆harbor服务器,并参照之前的方法,安装docker
5.3.部署docker-compose
上传docker-compose
mv docker-compose /usr/bin
chmod a+x /usr/bin/docker-compose
上次harbor-offline-installer-v1.2.0.tgz
解压tar -zxvf harbor-offline-installer-v1.2.0.tgz
mv harbor /usr/local/
vi /usr/local/harbor/harbor.cfg
修改hostname = hub.yao.com
修改ui_url_protocol=https
保存退出
5.4.制作https证书
1.新建证书目录
mkdir -p /data/cert/
2.制作证书:
openssl genrsa -des -out server.key 2048
输入两次密码
3.制作证书请求:
openssl req -new -key server.key -out server.csr
密码-CN,BJ,BJ,atguigu-atguigu,hub.atguigu.com,[email protected],两次回车
4.备份私钥:
cp server.key server.key.org
5.私钥转证书,删除里面的密码:
openssl rsa -in server.key.org -out server.key
输入旧密码
6.用证书请求签名:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
7.赋权:
chmod a+x *
5.5.安装harbor
cd /usr/local/harbor
./install.sh
5.6.测试harbor是否可用
1.使用浏览器登陆:
https://hub.yao.com
2.登陆任意k8s节点
docker login https://hub.yao.com
dockup push 你的镜像(具体命令可以子在harbor页面找到)