搭建一个 kubernetes 集群

本贴最后更新于 1510 天前,其中的信息可能已经时移世改

软件安装

  • docker
  • kubernetes-cni
  • kubeadm
  • kubectl
  • kubelet

前置条件

  1. 关闭防火墙
  2. 关闭 selinux
  3. 关闭 swapoff swapoff -a
  4. 设置系统环境
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl -p /etc/sysctl.d/k8s.conf
  1. 开启 ipvs
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack_ipv4"
for kernel_module in \${ipvs_modules}; do
    /sbin/modinfo -F filename \${kernel_module} > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        /sbin/modprobe \${kernel_module}
    fi
done
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs

生成 kubernetes 配置文件

kubeadm config print init-defaults ClusterConfiguration >kubeadm.conf

或者

kubeadm config print init-defaults >kubeadm-config.yaml

修改 kubeadm.conf

imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kubernetesVersion: v1.18.1

修改 API 服务器地址

localAPIEndpoint:
  advertiseAddress: {masterIP}
  bindPort: 6443

配置子网络

networking:
  dnsDomain: cluster.local
  podSubnet: 10.244.0.0/16
  serviceSubnet: 10.96.0.0/12
scheduler: {}

添加 proxy 的 mode 为 ipvs

---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
featureGates:
  SupportIPVSProxyMode: true
mode: ipvs

查看需要的镜像

kubeadm config images list --config kubeadm.conf

拉取镜像

kubeadm config images pull --config kubeadm.conf

初始化主节点

kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs |tee kubeadm-init.log

--experimental-upload-certs 在搭建高可用集群时用到

node 节点加入主节点

执行初始化主节点最后输出的最后一条命令即可 带有 join 字段的

配置网络

sysctl net.bridge.bridge-nf-call-iptables=1
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl create -f kube-flannel.yml

注意事项:查看配置文件里是否有指定网卡选项,根据实际情况进行修改

185       containers:
186       - name: kube-flannel
187         image: quay.io/coreos/flannel:v0.12.0-amd64
188         command:
189         - /opt/bin/flanneld
190         args:
191         - --ip-masq
192         - --kube-subnet-mgr
193         - --iface=ens32

查看节点

kubectl get nodes

查看运行 pod

kubectl get pod -n kube-system -o wide

pod 节点状态全部为 running 代表集群搭建成功

  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    110 引用 • 54 回帖 • 3 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • zhhui
    作者

    如何设置国内 kubernetes 的 yum 源

    1 回复
  • 添加阿里云的 yum 源

    [kubernetes]
    name=Kubernetes
    baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
            http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    EOF