Kubernetes集群

Kubernetes集群部署

Master&noed节点的配置
参考链接: https://blog.csdn.net/cyfblog/article/details/108077248


安装准备

#网络通信

节点网络:
1.master 192.168.10.31
2.node1 192.168.10.41
3.node2 192.168.10.51

pod网络 :10.244.0.0/16
service网络 :1.96.0.0/12

#ssh免密登录配置

安装sshpass

sudo apt update
sudo apt install sshpass

允许root用户远程登录
修改ssh服务配置文件

sudo vim /etc/ssh/sshd_config

调整PermitRootLogin参数值为yes

配置ssh秘钥登录
脚本如下:

#!/bin/bash
ssh-keygen -f /root/.ssh/id_rsa -P ''
NET=192.168.10
export SSHPASS=123456
for IP in 31 41 51
do
	sshpass -e ssh-copy-id -f root@$NET.$IP -o StrictHostKeyChecking=no
done

写入配置文件
/home/sbw/.ssh/config

Host 31
    HostName 192.168.10.31
    User root
    Port 22
    IdentityFile yes


Host 41
    HostName 192.168.10.41
    User root
    Port 22
    IdentityFile yes

Host 51
    HostName 192.168.10.51
    User root
    Port 22
    IdentityFile yes

#配置/etc/hosts解析(所有节点)

echo "
192.168.10.31 master
192.168.10.41 node1
192.168.10.51 node2
" >> /etc/hosts

#系统时间配置

#下载ntp时间服务
root@master:~# apt install -y ntpdate
#校验系统时间
root@master:~# ntpdate -u ntp.api.bz / ntpdate ntp1.aliyun.com

#关闭防火墙

root@master:~# systemctl disable ufw
root@master:~# ufw disable
#防火墙在系统启动时自动禁用

#关闭SELinux

root@master:~# setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

#关闭swap
注释/etc/fstab文件中swap行

root@master:~# swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab
root@master:~# free -m
              总计         已用        空闲      共享    缓冲/缓存    可用
内存:        3936         394        1854           7        1686        3302
交换:           0           0           0

#配置系统参数
在没有配置系统参数的时候,kubeadm init初始化时会产生如下错误

[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables does not exist
[ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1
[ERROR Swap]: running with swap on is not supported. Please disable swap

通过配置如下参数,避免上面产生的错误

root@master:~# 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
>vm.swappiness=0  #禁止启用swap空间,只有当系统OOM时才使用它
# 可选
>net.ipv6.conf.all.disable_ipv6=1  # 禁用ipv6
>vm.overcommit_memory=1  # 不检查物理内存是否够用
>vm.panic_on_oom=0  # 开启OOM
>fs.inotify.max_user_instances=8192
>fs.inotify.max_user_watches=1048576
>fs.file-max=52706963
>fs.nr_open=52706963
>EOF
#执行命令使修改生效
root@master:~# modprobe br_netfilter
root@master:~# sysctl -p /etc/sysctl.conf/k8s.conf

#配置kube-proxy开启ipvs的前置条件
kube-proxy开启ipvs的前提条件,由于ipvs已经加入到了内核的主干,kube-proxy代理模式使用ipvs转发,则需要配置ipvs模块:

在每个节点上安装ipvs,加载相关系统模块

root@master:~# mkdir -p /etc/sysconfig/modules && cat >/etc/sysconfig/modules/ipvs.modules << EOF
> #!/bin/bash
> 
> modprobe -- ip_vs
> modprobe -- ip_vs_rr
> modprobe -- ip_vs_wrr
> modprobe -- ip_vs_sh
> modprobe -- nf_conntrack
> EOF

// 执行脚本

root@master:~# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack

上面脚本创建了/etc/sysconfig/modules/ipvs.modules文件,保证在节点重启后能自动加载所需模块。 使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看是否已经正确加载所需的内核模块。 接下来还需要确保各个节点上已经安装了ipset软件包。 为了便于查看ipvs的代理规则,最好安装一下管理工具ipvsadm。

root@master:~# apt-get update && apt-get install ipset ipvsadm -y

安装kubeadm、kubelet、kubectl、docker

配置kubernetes.repo的源

root@master:~# apt-get update && apt-get install -y apt-transport-https
root@master:~# curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
root@master:~# cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
>deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
>EOF  

更新 apt 包索引

root@master:~# apt-get update

所有master节点按如下方式安装

root@master:~# apt-get install -y kubelet kubeadm kubectl docker-ce docker-ce-cli

所有node节点按如下方式安装

root@master:~# apt-get install -y kubelet kubeadm docker-ce docker-ce-cli

配置 kubelet、docker 开机自启

root@master:~# systemctl enable docker && systemctl start docker
root@master:~# systemctl restart kubelet && systemctl start kubelet

配置Master
修改 kube-proxy 的配置,明确使用 ipvs 方式

kubectl edit cm  kube-proxy  -n kube-system
ipvs:
  excludeCIDRs: null
  minSyncPeriod: 0s
  scheduler: ""
  strictAPP: false
  syncPeriod: 0s
  tcpFinTimeout: 0s
  tcpTimeout: 0s
  udpTimeout: 0s
kind: KubeProxyConfiguration
metricsBindAddress: ""
mode:"ipvs"

初始化

root@master:~# kubeadm init \
--apiserver-advertise-address=192.168.10.31 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.19.4 \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr 10.96.0.0/12 \

初始化完成

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

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.10.31:6443 --token cv7gff.dywq4vepeyny2xpw \
    --discovery-token-ca-cert-hash sha256:8dd5a22f053c0d1d847f870f8833b2d26048b3416bfd585fe247e0813df868b3

master节点配置config

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

如果加入集群命令丢失,可通过如下命令找回

root@master:~# kubeadm token create --print-join-command

部署网络插件Flannel

root@master:~# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
root@master:~# kubectl apply -f kube-flannel.yml    #执行flannel.yml文件

配置node节点

加入集群

root@master:~# kubeadm join 192.168.10.31:6443 --token cv7gff.dywq4vepeyny2xpw \
> --discovery-token-ca-cert-hash sha256:8dd5a22f053c0d1d847f870f8833b2d26048b3416bfd585fe247e0813df868b3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值