Ubuntu Server 22.04 家用k8s集群搭建

  1. 创建虚拟机(KVM),桥接网络

    virt-install --name=kmaster --description='k8s master' --ram=8192 --vcpus=4 --disk path=/home/yiran/vm/kmaster.qcow2,size=120 --cdrom /home/yiran/iso/ubuntu-22.04.2-live-server-amd64.iso --graphics vnc
    
    ......
    
  2. Forwarding IPv4 and letting iptables see bridged traffic

    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
    overlay
    br_netfilter
    EOF
    
    sudo modprobe overlay
    sudo modprobe br_netfilter
    
    # sysctl params required by setup, params persist across reboots
    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-iptables  = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.ipv4.ip_forward                 = 1
    EOF
    
    # Apply sysctl params without reboot
    sudo sysctl --system
    
  3. 安装Docker:https://docs.docker.com/engine/install/ubuntu/

  4. 配置Docker镜像源和cgroup driver

    vim /etc/docker/daemon.json
    
    {
      "exec-opts": ["native.cgroupdriver=systemd"],
      "registry-mirrors": ["https://2qgjyg7c.mirror.aliyuncs.com"]
    }
    
    systemctl restart docker
    
  5. 安装cri-dockerd:https://github.com/Mirantis/cri-dockerd

    dpkg -i cri-dockerd_0.3.4.3-0.ubuntu-jammy_amd64.deb
    
  6. 修改pause image

    vim /usr/lib/systemd/system/cri-docker.service
    
    ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
    
    systemctl daemon-reload
    systemctl restart cri-docker.service
    
  7. 关闭swap分区

    swapoff -a
    
    vim /etc/fstab
    
  8. 安装kubeadm, kubelet, kubectl:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

    apt-get update
    apt-get install -y apt-transport-https ca-certificates curl
    apt-get install software-properties-common
    curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add
    apt-add-repository "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"
    apt-get update
    apt-get install -y kubelet kubeadm kubectl
    apt-mark hold kubelet kubeadm kubectl
    
  9. master初始化集群

    kubeadm init --apiserver-advertise-address=192.168.0.105 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --cri-socket=unix:///var/run/cri-dockerd.sock
    
    export KUBECONFIG=/etc/kubernetes/admin.conf
    
    Your Kubernetes control-plane has initialized successfully!
    
    To start using your cluster, you need to run the following as a regular user:
    
      mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    Alternatively, if you are the root user, you can run:
    
      export KUBECONFIG=/etc/kubernetes/admin.conf
    
    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.0.105:6443 --token crtr8j.hveq3vuqar8oy6jr \
    	--discovery-token-ca-cert-hash sha256:6aacb508259e6736343b6832db364193aeb631b7998d5c3bd423530ac0ae9f13
    
  10. Deploy a pod network to the cluster:https://kubernetes.io/docs/concepts/cluster-administration/addons/

    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    
  11. node加入集群

    kubeadm join 192.168.0.105:6443 --token crtr8j.hveq3vuqar8oy6jr  --discovery-token-ca-cert-hash sha256:6aacb508259e6736343b6832db364193aeb631b7998d5c3bd423530ac0ae9f13 --cri-socket=unix:///var/run/cri-dockerd.sock
    
  12. 测试

    kubectl create deploy nginx --image=nginx
    kubectl expose deploy nginx --port=80 --type=NodePort
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值