【kubernetes】k8s v1.20单master多node节点部署

一,安装环境

1,硬件要求

内存:2GB或更多RAM

CPU: 2核CPU或更多CPU

硬盘: 30GB或更多

2,本次环境说明:

操作系统:CentOS 7.9

内核版本:3.10.0-1160

虚拟机

IP地址

节点

k8s-master

192.168.1.20

master

k8s-node-1

192.168.1.25

worker

k8s-node-2

192.168.1.26

worker

二,环境前期准备工作(三台机器同步执行)

1,防火墙关闭

systemctl stop firewalld && systemctl disable firewalld

2,selinux关闭

sed -i 's/enforcing/disabled/' /etc/selinux/config && setenforce 0

shutdown -r now重启机器

3,关闭swap

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

4,设置主机名

在三台主机分别执行:

hostnamectl set-hostname k8s-master && bash

hostnamectl set-hostname k8s-node-1 && bash

hostnamectl set-hostname k8s-node-2 && bash

5,修改hosts文件

添加三台主机的地址及主机名

6,开启包转发功能和修改内核参数

modprobe br_netfilter

echo "modprobe br_netfilter" >> /etc/profile

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

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

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

net.ipv4.ip_forward = 1

EOF

7,配置生效

sysctl -p /etc/sysctl.d/k8s.conf

8,时间同步

yum install ntpdate -y

ntpdate cn.pool.ntp.org

echo "* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org >> /tmp/tmp.txt" >> /var/spool/cron/root

service crond restart

9,安装基础软件包

yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet ipvsadm openssh-clients

10,安装docker

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

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

systemctl start docker && systemctl enable docker

cat > /etc/docker/daemon.json <<EOF

{

"registry-mirrors": ["https://k73dxl89.mirror.aliyuncs.com"],

"exec-opts": ["native.cgroupdriver=systemd"]

}

EOF

systemctl daemon-reload && systemctl restart docker

三,k8s安装

1,备份原repo文件,替换阿里云yum源(三台机器上执行)

mkdir /root/repo.bak

mv /etc/yum.repos.d/* /root/repo.bak/

cd /etc/yum.repos.d/

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

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

EOF

yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6

systemctl enable kubelet

2,使用kubeadm初始化k8s集群(master节点上执行)

kubeadm config print init-defaults > kubeadm.yaml

根据我们自己的需求修改配置,比如修改 imageRepository 的值,kube-proxy 的模式为 ipvs,初始化节点的时候需要指定cgroupDriver为systemd

kubeadm.yaml配置如下:

apiVersion: kubeadm.k8s.io/v1beta2

bootstrapTokens:

- groups:

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

token: abcdef.0123456789abcdef

ttl: 24h0m0s

usages:

- signing

- authentication

kind: InitConfiguration

localAPIEndpoint:

advertiseAddress: 192.168.1.20 #控制节点的ip

bindPort: 6443

nodeRegistration:

criSocket: /var/run/dockershim.sock

name: k8s-master #控制节点主机名

taints:

- effect: NoSchedule

key: node-role.kubernetes.io/master

---

apiServer:

timeoutForControlPlane: 4m0s

apiVersion: kubeadm.k8s.io/v1beta2

certificatesDir: /etc/kubernetes/pki

clusterName: kubernetes

controllerManager: {}

dns:

type: CoreDNS

etcd:

local:

dataDir: /var/lib/etcd

imageRepository: registry.aliyuncs.com/google_containers

kind: ClusterConfiguration

kubernetesVersion: v1.20.6

networking:

dnsDomain: cluster.local

serviceSubnet: 10.96.0.0/12

podSubnet: 10.244.0.0/16 #指定pod网段

scheduler: {}

#追加如下几行

---

apiVersion: kubeproxy.config.k8s.io/v1alpha1

kind: KubeProxyConfiguration

mode: ipvs

---

apiVersion: kubelet.config.k8s.io/v1beta1

kind: KubeletConfiguration

cgroupDriver: systemd

3,基于kubeadm.yaml文件初始化k8s

kubeadm init --config=kubeadm.yaml --ignore-preflight-errors=SystemVerification

看到此段证明安装成功;

根据提示执行以下命令:

mkdir -p $HOME/.kube

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

sudo chown $(id -u):$(id -g) $HOME/.kube/config

4,添加node工作节点(node节点上执行)

kubeadm join 192.168.1.20:6443 --token abcdef.0123456789abcdef \

--discovery-token-ca-cert-hash sha256:ae0f981397b883bf2a51f7ce80a333f1cf1cd4f9a1bf8b485cdc74d1de1773f7

5,安装calico.yaml网络组件(master上执行)

wget -O https://docs.projectcalico.org/manifests/calico.yaml

kubectl apply -f calico.yaml

kubectl get nodes -owide

四,愿为江水,与君相逢

到此k8s 单master多node集群就安装完成了,如有问题或遗漏请留言指正。

谨以此文记录我们学习kubernetes的经历,希望能认识更多志同道合的朋友,一起分享遇到的问题和学习经验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值