Kubernetes叢集搭建(vagrant)

無名亦為名發表於2019-05-01

虛擬機器準備

通過Vagrant準備三臺虛擬機器。vagrantfile如下,使用vagrant up命令安裝。

Vagrant.require_version ">= 1.6.0"

boxes = [
    {
        :name => "manager",
        :eth1 => "192.168.200.10",
        :mem => "1024",
        :cpu => "4"
    },
    {
        :name => "worker1",
        :eth1 => "192.168.200.11",
        :mem => "1024",
        :cpu => "2"
    },
    {
        :name => "worker2",
        :eth1 => "192.168.200.12",
        :mem => "1024",
        :cpu => "2"
    }
]

Vagrant.configure(2) do |config|

  config.vm.box = "centos/7"

  boxes.each do |opts|
      config.vm.define opts[:name] do |config|
        config.vm.hostname = opts[:name]
        config.vm.provider "vmware_fusion" do |v|
          v.vmx["memsize"] = opts[:mem]
          v.vmx["numvcpus"] = opts[:cpu]
        end

        config.vm.provider "virtualbox" do |v|
          v.customize ["modifyvm", :id, "--memory", opts[:mem]]
          v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]
        end

        config.vm.network :private_network, ip: opts[:eth1]
      end
  end
end
複製程式碼

環境準備

基礎準備

由於vagrant machine比較精簡所以先安裝必要軟體

yum install -y vim wget
複製程式碼

配置docker yum源,安裝及啟動。現使用的docker版本為docker-ce-18.06

cd /etc/yum.repos.d/
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum -y install docker-ce-18.06.1.ce-3.el7

systemctl enable docker && systemctl start docker
複製程式碼

關閉swap分割槽(若機器關機重啟需再次執行此命令,可以執行使其開機初始化)

swapoff -a
複製程式碼

更改hosts

vim /etc/hosts
複製程式碼

新增以下內容

192.168.200.10  manager manager
192.168.200.11  worker1 worker1
192.168.200.12  worker2 worker2
複製程式碼

K8s準備

配置K8s源,使用的為阿里源

vim /etc/yum.repos.d/kubernetes.repo
複製程式碼

將以下內容加入檔案

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

enabled=1

gpgcheck=1

repo_gpgcheck=1

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
複製程式碼

安裝kubeadm等,版本為13.3

yum install -y kubectl-1.13.3 kubelet-1.13.3 kubeadm-1.13.3 
複製程式碼

設定核心引數

cat <<EOF > /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

EOF
複製程式碼

使配置生效

sysctl --system
複製程式碼

啟動kubelet

systemctl enable kubelet && systemctl start kubelet
複製程式碼

搭建K8s叢集

主節點(manger)

使用kubeadm初始化

kubeadm init --apiserver-advertise-address=192.168.200.10 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.13.3 --pod-network-cidr=10.244.0.0/16 --service-dns-domain=cluster.local --ignore-preflight-errors=Swap --ignore-preflight-errors=NumCPU
複製程式碼

初始化成功應該會出現如下情景

You can now join any number of machines by running the following on each node........
複製程式碼

執行以下命令,使得使用kubectl更為方便

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
複製程式碼

配置網路外掛,可以選擇flannel ,但個人使用中出現問題,最終選擇使用canal

kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/canal/rbac.yaml
kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/canal/canal.yaml
複製程式碼

從節點(worker1和2)

在主節點執行如下命令獲取加入叢集指令後再在從節點執行

kubeadm token create --print-join-command
複製程式碼

確定叢集狀態

代pod啟動完畢後在主節點執行如下指令

kubectl get node
複製程式碼

若各個節點狀態正常即成功搭建叢集

.bashrc

配置.bashrc檔案,個人選用kc作為快捷命令

alias kc='kubectl'
複製程式碼

配置自動補全

source <(kubectl completion bash | sed s/kubectl/kc/g)
複製程式碼

進一步

訪問K8s文件基礎部分嘗試體驗

中文官方文件

書籍推薦:Kubernetes in Action中文版

相關文章