[kubernetes]-centos7 使用kubeadm安装高可用kubernetes集群

Centos7 用kubeadm安装kubernetes

 

192.168.10.147  kubernetes-master-01

192.168.10.129  kubernetes-master-02

192.168.10.146  kubernetes-master-03

 

192.168.10.148  kubernetes-node-01

192.168.10.150   kubernetes-node-02

192.168.10.149   kubernetes-node-03

192.168.10.222  vip

 

 

注:在所有节点上进行如下操作

设置主机名  master设置为master    node设置为node

hostnamectl set-hostname kubernetes-master-01

需要设置其他主机名称时,可将 master 替换为正确的主机名node1、node2即可。

 

编辑 /etc/hosts 文件,添加解析

cat <<EOF >>/etc/hosts

192.168.10.147  kubernetes-master-01

192.168.10.129  kubernetes-master-02

192.168.10.146  kubernetes-master-03

192.168.10.148  kubernetes-node-01

192.168.10.150   kubernetes-node-02

192.168.10.149   kubernetes-node-03

EOF

 

关闭防火墙、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

 

配置内核参数,将桥接的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

 

执行下面命令 临时生效 重启失效

modprobe -- ip_vs

modprobe -- ip_vs_rr

modprobe -- ip_vs_wrr

modprobe -- ip_vs_sh

modprobe -- nf_conntrack_ipv4

 

创建/etc/sysconfig/modules/ipvs.modules内容如下

modprobe -- ip_vs

modprobe -- ip_vs_rr

modprobe -- ip_vs_wrr

modprobe -- ip_vs_sh

modprobe -- nf_conntrack_ipv4

 

在/etc/rc.d/rc.local下添加一条

chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

 

执行chmod +x /etc/rc.d/rc.local

 

 

配置国内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 <<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

 

 

 

配置 docker 源

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

 

注:在所有节点上进行如下操作

安装docker

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

systemctl enable docker && systemctl start docker

docker --version

Docker version 18.06.1-ce, build e68fc7a

docker服务为容器运行提供计算资源,是所有容器运行的基本平台。

 

安装kubeadm、kubelet、kubectl

yum install -y kubelet kubeadm kubectl

systemctl enable kubelet

Kubelet负责与其他节点集群通信,并进行本节点Pod和容器生命周期的管理。Kubeadm是Kubernetes的自动化部署工具,降低了部署难度,提高效率。Kubectl是Kubernetes集群管理工具。

安装的版本可以用kubeadm version查看

 

 

 

安装happroxy和keepalived

cd /opt

创建haproxy-start.sh如下

#!/bin/bash

# -----------------修改 Master 地址

MasterIP1=192.168.10.147

MasterIP2=192.168.10.129

MasterIP3=192.168.10.146

 

# ----------------- kube-apiserver 默认端口 6443 不需要修改

MasterPort=6443

HaproxyPort=6444

 

# 启动

docker run -d --restart=always --name=HAProxy -p $HaproxyPort:$HaproxyPort \

        -e MasterIP1=$MasterIP1 \

        -e MasterIP2=$MasterIP2 \

        -e MasterIP3=$MasterIP3 \

        -e MasterPort=$MasterPort \

        wise2c/haproxy-k8s

 

创建keepalived-start.sh如下

#!/bin/bash

# ----------------- 修改虚拟 IP 地址

VIRTUAL_IP=192.168.10.222

# ----------------- 网卡名

INTERFACE=ens192

# ----------------- 子网掩码

NETMASK_BIT=24

# ----------------- HAProxy 暴露端口,内部指向 kube-apiserver 的 6443 端口

CHECK_PORT=6444

# ----------------- 路由标识符

RID=10

# ----------------- 虚拟路由标识符

VRID=160

# ----------------- IPV4 多播地址,默认 224.0.0.18

MCAST_GROUP=224.0.0.18

 

docker run -itd --restart=always --name=Keepalived \

        --net=host --cap-add=NET_ADMIN \

        -e VIRTUAL_IP=$VIRTUAL_IP \

        -e INTERFACE=$INTERFACE \

        -e CHECK_PORT=$CHECK_PORT \

        -e RID=$RID \

        -e VRID=$VRID \

        -e NETMASK_BIT=$NETMASK_BIT \

        -e MCAST_GROUP=$MCAST_GROUP \

        wise2c/keepalived-k8s

 

给脚本附加执行权限

chmod +x *.sh

 

将脚本复制到各个master节点

cd /opt

scp -r * 192.168.10.129:/opt/

scp -r * 192.168.10.146:/opt/

 

3台虚拟机上均执行2个脚本

sh haproxy-start.sh

sh keepalived-start.sh

 

 

 

部署master 节点

注:在master-01节点上进行如下操作

 

创建kubeadm.yml内容如下

apiVersion: kubeadm.k8s.io/v1beta1

bootstrapTokens:

- groups:

  - system:bootstrappers:kubeadm:default-node-token

  token: abcdef.0123456789abcdef

  ttl: 24h0m0s

  usages:

  - signing

  - authentication

kind: InitConfiguration

localAPIEndpoint:

  # -------- 修改为 当前Master 节点ip

  advertiseAddress: 192.168.10.147

  bindPort: 6443

nodeRegistration:

  criSocket: /var/run/dockershim.sock

  # 当前master节点

  name: kubernetes-master-01

  taints:

  - effect: NoSchedule

    key: node-role.kubernetes.io/master

---

apiServer:

  timeoutForControlPlane: 4m0s

apiVersion: kubeadm.k8s.io/v1beta1

certificatesDir: /etc/kubernetes/pki

clusterName: kubernetes

# -------- 修改为 VIP

controlPlaneEndpoint: "192.168.10.222:6444"

controllerManager: {}

dns:

  type: CoreDNS

etcd:

  local:

    dataDir: /var/lib/etcd

# 这里的仓库地址是阿里云仓库

imageRepository: registry.aliyuncs.com/google_containers

kind: ClusterConfiguration

kubernetesVersion: v1.15.2

networking:

  dnsDomain: cluster.local

  # -------- 这里使用的是flannel 网络,默认网段

  podSubnet: 10.244.0.0/16

scheduler: {}

---

# -------- 开启 ipvs

apiVersion: kubeproxy.config.k8s.io/v1alpha1

kind: KubeProxyConfiguration

featureGates:

  SupportIPVSProxyMode: true

mode: ipvs

 

 

kubeadm  init --config=kubeadm.yml --experimental-upload-certs

 

 

配置kubectl工具

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config kubectl get nodes

 

查看所有namespace 是否ready

kubectl get pods --all-namespaces

 

部署flannel网络

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

这里可以先下载下来 然后-f 指定文件

 

部署其余master节点

注:在其余所有master节点上进行如下操作

执行如下命令,使所有node节点加入Kubernetes集群

kubeadm join 192.168.10.222:6444 --token abcdef.0123456789abcdef \

>     --discovery-token-ca-cert-hash sha256:052fe13053db89f08212a9aa897f9c7d147a20f02a325ed9e037c031b15f4ab6 \

>     --control-plane --certificate-key 1cf7b67d154bccf9c59c30e167a4aa2344a2e152f7d2b198799a0e7056d78f67

查看集群状态

kubectl get node

 

部署node节点

执行如下命令,使所有node节点加入Kubernetes集群

kubeadm join 192.168.10.222:6444 --token abcdef.0123456789abcdef \

>     --discovery-token-ca-cert-hash sha256:052fe13053db89f08212a9aa897f9c7d147a20f02a325ed9e037c031b15f4ab6

全部添加完之后 在master上查看

kubectl get node

 

高可用目前创建完毕

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爷来辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值