搭建一个 kubernetes 集群

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

软件安装

  • 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 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    116 引用 • 54 回帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 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