使用kubeadm搭建生产环境的单master节点集群——v1.20.4

1.使用kubeadm 部署 Kubernetes 集群

初始化集群环境

#修改主机名
[root@master01 ~]#hostnamectl set-hostname master01
[root@node01 ~]#hostnamectl set-hostname node01
[root@node02 ~]#hostnamectl set-hostname node02
​
#配置hosts文件,在后三行添加
[root@master01 ~]# vim /etc/hosts 
10.0.0.92 master01
10.0.0.93 node01
10.0.0.98 node02
​
#配置主机间无密码登录
[root@master01 ~]#ssh-keygen 
[root@master01 ~]#ssh-copy-id master01
[root@master01 ~]#ssh-copy-id node01
[root@master01 ~]#ssh-copy-id node02
​
[root@node01 ~]#ssh-keygen 
[root@node01 ~]#ssh-copy-id master01
[root@node01 ~]#ssh-copy-id node01
[root@node01 ~]#ssh-copy-id node02
​
[root@node02 ~]#ssh-keygen 
[root@node02 ~]#ssh-copy-id master01
[root@node02 ~]#ssh-copy-id node01
[root@node02 ~]#ssh-copy-id node02
​
#关闭所有防火墙
[root@master01 ~]#systemctl stop firewalld ; systemctl disable firewalld
[root@node01 ~]#systemctl stop firewalld ; systemctl disable firewalld
[root@node02 ~]#systemctl stop firewalld ; systemctl disable firewalld
​
#关闭SElinux
[root@master01 ~]#setenforce 0 
[root@node01 ~]#setenforce 0 
[root@node02 ~]#setenforce 0 
​
#关闭交换分区swap
[root@master01 ~]#swapoff -a
[root@node01 ~]#swapoff -a
[root@node02 ~]#swapoff -a
#永久关闭:注释 swap 挂载
[root@master01 ~]#vim /etc/fstab    #给 swap 这行开头加一下注释#
#/dev/mapper/centos-swap swap swap  defaults  0 0
[root@node01 ~]#vim /etc/fstab    #给 swap 这行开头加一下注释#
#/dev/mapper/centos-swap swap swap  defaults  0 0
[root@node02 ~]#vim /etc/fstab    #给 swap 这行开头加一下注释#
#/dev/mapper/centos-swap swap swap  defaults  0 0
##注:如果是克隆主机请删除网卡中的 UUID 并重启网络服务!
##大家如果自己电脑本身内存较小,不想要关闭交换分区,安装 k8s 的时候可以指定--ignorepreflight-errors=Swap 来解决。
​
#修改内核参数
[root@master01 ~]#modprobe br_netfilter
[root@master01 ~]#echo "modprobe br_netfilter" >> /etc/profile
[root@master01 ~]#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
[root@master01 ~]#sysctl -p /etc/sysctl.d/k8s.conf
​
[root@node01 ~]#modprobe br_netfilter
[root@node01 ~]#echo "modprobe br_netfilter" >> /etc/profile
[root@node01 ~]#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
[root@node01 ~]#sysctl -p /etc/sysctl.d/k8s.conf
​
[root@node02 ~]#modprobe br_netfilter
[root@node02 ~]#echo "modprobe br_netfilter" >> /etc/profile
[root@node02 ~]#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
[root@node02 ~]#sysctl -p /etc/sysctl.d/k8s.conf
​
#配置服务器时间跟网络时间同步
[root@naster01 ~]#yum install -y ntpdate
[root@node01 ~]#yum install -y ntpdate
[root@node02 ~]#yum install -y ntpdate
[root@master01 ~]#ntpdate cn.pool.ntp.org
[root@node01 ~]#ntpdate cn.pool.ntp.org
[root@node02 ~]#ntpdate cn.pool.ntp.org
​
[root@master01 ~]#crontab -e
* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org
[root@node01 ~]#crontab -e
* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org
[root@node02 ~]#crontab -e
* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org
​
[root@master01 ~]#service crond restart
[root@node01 ~]#service crond restart
[root@node02 ~]#service crond restart

离线docker和安装 k8s 组件需要的 repo 源

#docker.tar.gz 压缩包在课件里,手动上传到 master01机器
[root@master01 ~]#ls
anaconda-ks.cfg  docker.tar.gz
[root@master01 ~]#tar xf docker.tar.gz -C /opt/
[root@master01 ~]#tee /etc/yum.repos.d/k8s-docker.repo << 'EOF'
[k8s-docker]
name=k8s-docker
baseurl=file:///opt/k8s-docker
enable=1
gpgcheck=0
EOF
​
[root@node01 ~]#ls
anaconda-ks.cfg  docker.tar.gz
[root@node01 ~]#tar xf docker.tar.gz -C /opt/
[root@node01 ~]#tee /etc/yum.repos.d/k8s-docker.repo << 'EOF'
[k8s-docker]
name=k8s-docker
baseurl=file:///opt/k8s-docker
enable=1
gpgcheck=0
EOF
​
​
[root@node02 ~]#ls
anaconda-ks.cfg  docker.tar.gz
[root@node02 ~]#tar xf docker.tar.gz -C /opt/
[root@node02 ~]#tee /etc/yum.repos.d/k8s-docker.repo << 'EOF'
[k8s-docker]
name=k8s-docker
baseurl=file:///opt/k8s-docker
enable=1
gpgcheck=0
EOF

配置阿里云安装 k8s 和 docker 需要的 repo 源

[root@master01 ~]#tee /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
​
[root@node01 ~]#tee /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
​
[root@node02 ~]#tee /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

安装iptables

[root@master01 ~]#yum install iptables-services -y
#禁用 iptables
[root@master01 ~]#service iptables stop && systemctl disable iptables
​
[root@node01 ~]#yum install iptables-services -y
#禁用 iptables
[root@node01 ~]#service iptables stop && systemctl disable iptables
​
[root@node02 ~]#yum install iptables-services -y
#禁用 iptables
[root@node02 ~]#service iptables stop && systemctl disable iptables

开启ipvs

#把 ipvs.modules 上传到 hgops17 机器的 /etc/sysconfig/modules/ 目录下
[root@master01 ~]#cd /etc/sysconfig/modules/
[root@master01 /etc/sysconfig/modules]#ls
ipvs.modules
​
[root@master01 ~ ]# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs
​
​
[root@node01 ~]#cd /etc/sysconfig/modules/
[root@node01 /etc/sysconfig/modules]#ls
ipvs.modules
​
[root@node01 ~ ]# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs
​
​
[root@node02 ~]#cd /etc/sysconfig/modules/
[root@node02 /etc/sysconfig/modules]#ls
ipvs.modules
​
[root@node02 ~ ]# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs
​

安装基础安装包

[root@master01 ~]#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
​
[root@node01 ~]#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
​
[root@node02 ~]#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

安装docker-ce(三台机器都要安装)

[root@master01 ~]#yum install docker-ce docker-ce-cli containerd.io
[root@master01 ~]#systemctl start docker && systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@master01 ~]#tee /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.dockercn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hubmirror.c.163.com","http://qtid6917.mirror.aliyuncs.com","https://rncxm540.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
} 
EOF
[root@master01 ~]#systemctl daemon-reload
[root@master01 ~]#systemctl restart docker
您在 /var/spool/mail/root 中有新邮件
[root@master01 ~]#systemctl is-active docker
​
[root@node01 ~]#yum install docker-ce docker-ce-cli containerd.io
[root@node01 ~]#systemctl start docker && systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@node01 ~]#tee /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.dockercn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hubmirror.c.163.com","http://qtid6917.mirror.aliyuncs.com","https://rncxm540.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
} 
EOF
[root@node01 ~]#systemctl daemon-reload
[root@node01 ~]#systemctl restart docker
您在 /var/spool/mail/root 中有新邮件
[root@node01 ~]#systemctl is-active docker
​
[root@node02 ~]#yum install docker-ce docker-ce-cli containerd.io
[root@node02 ~]#systemctl start docker && systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@node02 ~]#tee /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.dockercn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hubmirror.c.163.com","http://qtid6917.mirror.aliyuncs.com","https://rncxm540.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
} 
EOF
​
[root@node02 ~]#systemctl daemon-reload
[root@node02 ~]#systemctl restart docker
您在 /var/spool/mail/root 中有新邮件
[root@node02 ~]#systemctl is-active docker
​
​

安装初始化 k8s 需要的组件(三台都需要)

[root@master01 ~]#yum install -y kubelet-1.20.4 kubeadm-1.20.4 kubectl-1.20.4
[root@master01 ~]#systemctl enable kubelet && systemctl start kubelet
​
[root@node01 ~]#yum install -y kubelet-1.20.4 kubeadm-1.20.4 kubectl-1.20.4
[root@node01 ~]#systemctl enable kubelet && systemctl start kubelet
​
[root@node02 ~]#yum install -y kubelet-1.20.4 kubeadm-1.20.4 kubectl-1.20.4
[root@node02 ~]#systemctl enable kubelet && systemctl start kubelet

初始化集群

#导入镜像
[root@master01 ~]#docker load -i k8s-images-v1.20.4.tar.gz
[root@master01 ~]#gzip -dc k8s-images-v1.20.4.tar.gz |ssh root@node01 'cat | docker load'
[root@master01 ~]#gzip -dc k8s-images-v1.20.4.tar.gz |ssh root@node02 'cat | docker load'
#使用 kubeadm 初始化 k8s 集群
[root@master01 ~]#kubeadm init --kubernetes-version=1.20.4 \
> --apiserver-advertise-address=10.0.0.92 \
> --image-repository registry.aliyuncs.com/google_containers \
> --pod-network-cidr=10.244.0.0/16

[root@master01 ~]#mkdir -p $HOME/.kube
您在 /var/spool/mail/root 中有新邮件
[root@master01 ~]#  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master01 ~]#  sudo chown $(id -u):$(id -g) $HOME/.kube/config

node节点加入集群

#在master01节点上查看加入节点命令
[root@master01 ~]#kubeadm token create --print-join-command
​
#在节点加入
[root@node01 ~]# kubeadm join 10.0.0.92:6443 --token 70wsvd.jr6wxknw0tuwqqbk --discovery-token-ca-cert-hash sha256:e4e60bd41ec628fb8378b85a989cd0d786a88cbd9cabba77058dd04f06d12da4
[root@node02 ~]# kubeadm join 10.0.0.92:6443 --token 70wsvd.jr6wxknw0tuwqqbk --discovery-token-ca-cert-hash sha256:e4e60bd41ec628fb8378b85a989cd0d786a88cbd9cabba77058dd04f06d12da4
​

安装Calico

[root@master01 ~]#kubectl apply -f calico.yaml
[root@master01 ~]#kubectl get pod --all-namespaces
[root@master01 ~]#kubectl get pod -A

#再次查看集群状态
[root@master01 ~]#kubectl get node
NAME       STATUS   ROLES                  AGE   VERSION
master01   Ready    control-plane,master   58m   v1.20.4
node01     Ready    worker                 44m   v1.20.4
node02     Ready    worker                 44m   v1.20.4
  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值