一、Kubernetes简介

Kubernetes(简称K8S)是开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。它既是一款容器编排工具,也是全新的基于容器技术的分布式架构领先方案。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等功能,提高了大规模容器集群管理的便捷性。

K8S集群中有管理节点与工作节点两种类型。管理节点主要负责K8S集群管理,集群中各节点间的信息交互、任务调度,还负责容器、Pod、NameSpaces、PV等生命周期的管理。工作节点主要为容器和Pod提供计算资源,Pod及容器全部运行在工作节点上,工作节点通过kubelet服务与管理节点通信以管理容器的生命周期,并与集群其他节点进行通信。

提示:master并且开启面密钥登陆

ssh-keygen -t rsa
ssh-copy-id root@192.168.3.71
ssh-copy-id root@192.168.3.72

二、安装环境配置(下步骤在所有主机上都需执行)

1.在安装之前,需要先做如下准备。三台CentOS 7主机如下(具体多少可以自己定,至少2台以上):
在各自主机上设置主机名
192.168.3.70

   hostnamectl set-hostname master

2.编辑 /etc/hosts 文件,添加域名解析。

cat <<EOF >>/etc/hosts

192.168.3.70 master
192.168.3.71 node1
192.168.3.72 node2

EOF

3.关闭防火墙、selinux和swap。

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

swapoff -a

sed -i 's/.*swap.*/#&/' /etc/fstab

4.第一次安装打开路由转发功能,很多文档上没有写,但是我安装的时候确实报错了

 echo "1" > /proc/sys/net/ipv4/ip_forward

5.配置内核参数,将桥接的IPv4流量传递到iptables的链

cat > /etc/sysctl.d/k8s.conf <<EOF

net.bridge.bridge-nf-call-ip6tables = 1
    
net.bridge.bridge-nf-call-iptables = 1
    
EOF

使其生效

sysctl --system

6.配置国内yum源

yum install -y wget

mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo

wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo

yum clean all && yum makecache

配置国内Kubernetes源

cat > /etc/yum.repos.d/kubernetes.repo << EOF 
[kubernetes] 
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 
enabled=1 
gpgcheck=0 
epo_gpgcheck=0 
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg 
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg 
EOF

配置 docker 源

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

三、开始安装docker、kubeadm、kubectl、kubelet

1.安装docker

yum install -y docker-ce-18.06.1.ce-3.el7

systemctl enable docker && systemctl start docker

docker version
#修改docker配置
cat > /etc/docker/daemon.json << EOF
{
    "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

systemctl daemon-reload
systemctl restart docker

2.安装kubeadm、kubelet、kubectl

yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0
systemctl enable kubelet

四、master部署
提示:在master节点执行
1.在master进行Kubernetes集群初始化。

kubeadm init --kubernetes-version=1.20.0 --apiserver-advertise-address=192.168.3.70 --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=Swap

apiserver-advertise-address=192.168.3.70(master机地址)

最后会生成token如下

kubeadm join 192.168.3.70:6443 --token kekvgu.nw1n76h84f4camj6 \

--discovery-token-ca-cert-hash sha256:4ee74205227c78ca62f2d641635afa4d50e6634acfaa8291f28582c7e3b0e30e

2.配置kubectl工具

系统由admin.conf文件启动kubernetes,如果不配置会起不来

mkdir -p /root/.kube

cp /etc/kubernetes/admin.conf /root/.kube/config

kubectl get nodes #查看所有集群内的节点,此时都还是notread状态,因为还没部署flannel网络

3.部署flannel网络
注意:flannel镜像好像下不到,自己在阿里云搜索可下载镜像替换yaml文件里的镜像即可

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

五、node节点部署

将我们在master上生成的token那段直接在各node执行
注意:需要使用swap分区也需要添加–ignore-preflight-errors=Swap

kubeadm join 192.168.3.70:6443 --token kekvgu.nw1n76h84f4camj6 \

--discovery-token-ca-cert-hash sha256:4ee74205227c78ca62f2d641635afa4d50e6634acfaa8291f28582c7e3b0e30e

此时,集群部署就完成了,可以在master上获取nodes的状态

kubectl get nodes -o wide

为read说明部署成功。

Logo

开源、云原生的融合云平台

更多推荐