K8S安装

K8S安装

需要注意的是如果没有特殊说明,各个节点都需要步骤操作

环境准备

1.配置主机名

hostnamectl set-hostname master  # master节点
hostnamectl set-hostname node1  # node1节点
hostnamectl set-hostname node2  # node2节点

2.配置hosts文件

每个节点配置相同

vim /etc/hosts
10.0.0.138 master m
10.0.0.143 node1 n1
10.0.0.139 node2 n2

3.安装依赖包

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

4.清空防火墙和SELinux

systemctl  stop firewalld  &&  systemctl  disable firewalld  # 关闭firewalld防火墙
yum -y install iptables-services  &&  systemctl  start iptables  &&  systemctl  enable iptables  &&  iptables -F  &&  service iptables save  # 安装iptables并清空规则

setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config  # 关闭SELinux

5.关闭交换分区

防止容器运行在swap空间里

swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
free -h  # 查看swap分区是否关闭成功

6.调整内核参数

# 开机会调用
cat > /etc/sysctl.d/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
net.ipv6.conf.all.disable_ipv6=1  # 关闭ipv6的协议
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
net.netfilter.nf_conntrack_max=2310720
EOF

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

7.调整系统时区

在分布式领域里,一定要统一时间,否则会出现问题

timedatectl set-timezone Asia/Shanghai  # 中国上海,在C7里这是修改时区的标准方式
timedatectl set-local-rtc 0  # 将当前的UTC时间写入硬件时钟
/sbin/ntpdate -u ntp1.aliyun.com  # 将时间同步写入定时任务
# 重启依赖于系统时间的服务
systemctl restart rsyslog && systemctl restart crond

8.关闭不需要的服务

systemctl stop postfix && systemctl disable postfix  

9.设置 systemd journald

mkdir /var/log/journal # 持久化保存日志的目录
mkdir /etc/systemd/journald.conf.d  # 创建journal的配置文件存放目录
# 生成journal配置文件
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  # 重启journal日志服务

10.升级系统内核为 4.44

# CentOS 7.x 系统自带的 3.10.x 内核存在一些 Bugs,导致运行的 Docker、Kubernetes 不稳定,查看内核命令uname -r,升级步骤如下:
方式一:
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.182-1.el7.elrepo.x86_64) 7 (Core)"  #设 置开机从新内核启动
reboot  # 重启
uname -r  # 查看内核变化啦

11.安装docker

  • 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
  • 配置阿里的docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 安裝指定的docker版本
yum install -y docker-ce  # 不指定版本,默认安装最新版
  • 镜像加速、日志设置、私有仓库-
mkdir /etc/docker  # 创建/etc/docker目录
# 设置一下daemon中cgroup为syetemd 默认有两个cgroup 存储文件格式为json-flle,大小为100Mb
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "insecure-registries": ["10.0.0.136:9090"]
}
EOF
  • 重启docker服务
systemctl daemon-reload  # 重新加载docker
systemctl restart docker  # 重启docker
systemctl enable docker  # 设置开机自启

12.配置IPVS

ipvs是开启kube-proxy的前置条件

kube-prxy实现负载均衡

k8s在1.14版本以后,默认使用ipvs作为调度器

modprobe br_netfilter  # 加载netfilter模块
 # 生成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  # 执行ipvs.modules,并且查看执行结果

部署Kubernetes

1.配置K8S的yum源

# 配置K8S的yum源
cat > /etc/yum.repos.d/kubernetes.repo <<EOF 
[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

2.安装Kueradm、Kuberctl、Kuberlet

yum -y install kubeadm-1.15.1 kubectl-1.15.1 kubelet-1.15.1  
systemctl enable kubelet.service  # K8S中首先启动的服务,所有组件中只要kuberlet是以进程的方式启动,其他都是容器化启动,将其他的组件拉起来
# kuberadm 自动化安装工具
# kuberctl 命令行工具
# kuberlet node节点和master的API交互

3.设置Master节点(主节点操作)

kubeadm config print init-defaults > kubeadm-config.yaml  # 打印初始化模板文件
vim kubeadm-config.yaml  # 需要修改的内容
  advertiseAddress: 10.0.0.138  # 这个IP修改为master节点IP
  kubernetesVersion: v1.15.1  # 指定安装的K8s的版本
  dnsDomain: cluster.local  # 指定集群的域名
  serviceSubnet: 10.96.0.0/12  # 暴露给用户的网段
  podSubnet: 10.244.0.0/16  # 给pod分配的地址段
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1  # 调度方式修改为ipvs的方式,增加内容
kind: KubeProxyConfiguration
featureGates:
 SupportIPVSProxyMode: true	
mode: ipvs

4.将其他组件的镜像导入系统

直接下载的话不能直接访问谷歌的云服务器,需要提前下载

kuberadm软件包导入,其中有其他核心组件的镜像

docker load < 其他组件镜像

5.集群初始化(主节点操作)

# 需要注意,CPU的核心要大,内存空间要大
kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log
#注意事项:生成的token需要保留下来,用于子节点添加的凭证,建立一个文件保存起来
#例如:kubeadm join 10.0.0.138:6443 --token 5pwx77.ahs98fxdfpdwpjf1 --discovery-token-ca-cert-hash sha256:d81f347530ad3e1b03cfdf53666a20b62ab09f1ce3d3ccf2a437ee33805f5183

6.配置环境变量(主节点操作)

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

7.子节点加入(子节点操作)

kubeadm join 10.0.0.138:6443 --token 5pwx77.ahs98fxdfpdwpjf1 --discovery-token-ca-cert-hash sha256:d81f347530ad3e1b03cfdf53666a20b62ab09f1ce3d3ccf2a437ee33805f5183
# 各个节点加入集群,这个命令是在master节点初始化的时候生成的

8.配置flannel网络

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

dicker load < flannel.tar # 将镜像导入

9.启动k8s(主节点操作)

kuberctl create -f kube-flannel.yml  # 创建flannel的联系方式
kubectl get pod -n kube-system  # 指定kube-system名称空间

9.查看各节点状态(主节点操作)

# 查看所有节点是否是Ready状态
kubectl get nodes #查看节点信息
NAME     STATUS   ROLES    AGE     VERSION
master   Ready    master   5h1m    v1.15.1
node1    Ready    <none>   4h52m   v1.15.1
node2    Ready    <none>   4h52m   v1.15.1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值