2020 实战CentOS7.8 安装 Kubernetes1.18.6 教程


kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
按照与允许Google每周运行数十亿个容器的相同原则设计,Kubernetes可以在不增加运营团队的情况下进行扩展。
无论是在本地测试还是在全球性企业中运行,Kubernetes的灵活性都会随着您的需求而增长,无论您的需求多么复杂,它都能始终如一地轻松交付应用程序。
混合云切记一定要打通网络

统一安装环境(如果你节点很多,自己规划好)

系统 节点 IP
CentOS7.8 64位3.10.0-1127.13.1.el7.x86_64 Master 10.10.10.10
CentOS7.8 64位3.10.0-1127.13.1.el7.x86_64 Node1 192.168.100.100

本次测试环境两台服务器,一台Master节点,一台Node1节点

基本配置

第一次写,写的不好得地方还请谅解

修改主机名和本地hosts解析

通过修改vim /etc/hostname 来修改主机名
Master节点修改为 master1
Node1节点修改为 node1
修改vim /etc/hosts 来相互解析
两台都相互添加如下解析

10.10.10.10				master1
192.168.100.100			node1

时间同步

企业中建议使用时间同步服务器
使用chronyd服务
systemctl start chronyd
systemctl enable chronyd
date命令来验证时间

禁用iptables和firewalld服务

关闭firewalld服务
systemctl stop firewalld
systemctl disable firewalld
关闭iptables服务
systemctl stop iptables
systemctl disable iptables

禁用selinux

Selinux是Linux系统下的一个安全服务,如果不关闭它,在安装集群中回产生各种各样的奇葩问题
编辑 /etc/selinux/config 文件,修改 SELINUX 的值为disabled
SELINUX=disabled
修改完成后需要重启系统生效
查看命令: getenforce

禁用swap分区

编辑/etc/fstab 注释swap分区一行,重启Linux即可

修改Linux的内核参数

修改Linux的内核参数,添加网桥过滤和地址转发的功能
编辑/etc/sysctl.d/kubernetes.conf文件,添加如下配置:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
加载网桥过滤模块
modprobe br_netfilter
查看网桥过滤模块是否加载成功
lsmod | grep br_netfilter
重新加载配置
sysctl -p

配置ipvs功能

中kubernetes中service有两种代理模型,一种是基于iptables的,一种是基于ipvs的,两者比较的话,ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块
安装ipset和ipvsadm

yum install ipset ipvsadm -y

添加需要加载的模块写入脚本文件( —是两个 横杠 )

cat <<EOF > /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 +x /etc/sysconfig/modules/ipvs.modules

执行脚本文件

/bin/bash /etc/sysconfig/modules/ipvs.modules

查看对应的模块是否加载成功

lsmod | grep -e ip_vs -e nf_conntrack_ipv4

安装docker

这里是指定版本安装docker的 3:19.03.13-3.el7 版本

sudo yum -y install docker-ce-19.03.13-3.el7

根据文档安装后,记住添加开机自动启动

systemctl enable docker

配置镜像加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": ["https://kq1fsint.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

更多可以查看阿里云镜像:https://developer.aliyun.com/mirror/docker-ce?spm=a2c6h.13651102.0.0.3e221b11qRSjZE

安装kubernetes

更多可以查看阿里云镜像:https://developer.aliyun.com/mirror/kubernetes?spm=a2c6h.13651102.0.0.3e221b11qRSjZE

这里使用指定版本安装kubernetes的 1.19.4-0 版本

yum install -y kubelet-1.19.4-0 kubeadm-1.19.4-0 kubectl-1.19.4-0

查看文档地址安装好后,在执行如下操作

注意:以上所有操作每一台节点也都需要安装

初始化集群

通过kubeadm config images list查看需要安装的镜像和版本

创建集群:

kubeadm init \
--kubernetes-version=v1.19.4 \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.96.0.0/12 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--apiserver-advertise-address=10.10.10.10 \
--v=6

完成会看到这句话

Your Kubernetes control-plane has initialized successfully!

就代表初始化成功,否则失败
然后执行如下操作:

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

记录初始化完成后的最后一条命令

kubeadm join 10.10.10.10:6443 --token azyw4b.009sd5vupsnwrtz3     --discovery-token-ca-cert-hash sha256:a779406c375aabea58040a6501242ff8f3441b4d7d4c079f6f8083df2b5b2741

原本的是有效时间过期的加入集群命令,可以通过如下操作创建一个永久令牌

kubeadm token create --ttl 0 --print-join-command

使用令牌在node节点操作一次

查看节点状态:应该此时的状态为NotReady是未安装网络插件

kubelet get nodes

查看节点状态

安装网络插件

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

查看状态,等待就绪

watch kubectl get pod -n kube-system -o wide

查看到状态为Running为止

在次查看节点状态:应该此时的状态为Ready

kubelet get nodes

到此,K8S集群搭建基本工作加完成了

猜你喜欢

转载自blog.csdn.net/weixin_42795002/article/details/111561505