1揽浙、集群搭建
-
環(huán)境準(zhǔn)備,hosts文件中的配置
192.168.241.140 kubernetes-master 192.168.241.141 kubernetes-node1 192.168.241.142 kubernetes-node2 192.168.241.143 kubernetes-node3 192.168.241.140 k8s.apiserver.com
-
安裝初始化環(huán)境
-
執(zhí)行腳本
# 在 master 節(jié)點和 worker 節(jié)點都要執(zhí)行 curl -sSL https://kuboard.cn/install-script/v1.16.0/install-kubelet.sh | sh
-
腳本內(nèi)容如下湾盗,主要目的初始化環(huán)境安裝:docker伏蚊、kubelet kubeadm kubectl
#!/bin/bash # 在 master 節(jié)點和 worker 節(jié)點都要執(zhí)行 # 安裝 docker # 參考文檔如下 # https://docs.docker.com/install/linux/docker-ce/centos/ # https://docs.docker.com/install/linux/linux-postinstall/ # 卸載舊版本 yum remove -y docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine # 設(shè)置 yum repository yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 安裝并啟動 docker yum install -y docker-ce-18.09.7 docker-ce-cli-18.09.7 containerd.io systemctl enable docker systemctl start docker # 安裝 nfs-utils # 必須先安裝 nfs-utils 才能掛載 nfs 網(wǎng)絡(luò)存儲 yum install -y nfs-utils # 關(guān)閉 防火墻 systemctl stop firewalld systemctl disable firewalld # 關(guān)閉 SeLinux setenforce 0 sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config # 關(guān)閉 swap swapoff -a yes | cp /etc/fstab /etc/fstab_bak cat /etc/fstab_bak |grep -v swap > /etc/fstab # 修改 /etc/sysctl.conf # 如果有配置,則修改 sed -i "s#^net.ipv4.ip_forward.*#net.ipv4.ip_forward=1#g" /etc/sysctl.conf sed -i "s#^net.bridge.bridge-nf-call-ip6tables.*#net.bridge.bridge-nf-call-ip6tables=1#g" /etc/sysctl.conf sed -i "s#^net.bridge.bridge-nf-call-iptables.*#net.bridge.bridge-nf-call-iptables=1#g" /etc/sysctl.conf # 可能沒有淹仑,追加 echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf # 執(zhí)行命令以應(yīng)用 sysctl -p # 配置K8S的yum源 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [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 # 卸載舊版本 yum remove -y kubelet kubeadm kubectl # 安裝kubelet丙挽、kubeadm、kubectl yum install -y kubelet-1.16.0 kubeadm-1.16.0 kubectl-1.16.0 # 修改docker Cgroup Driver為systemd # # 將/usr/lib/systemd/system/docker.service文件中的這一行 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock # # 修改為 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd # 如果不修改匀借,在添加 worker 節(jié)點時可能會碰到如下錯誤 # [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". # Please follow the guide at https://kubernetes.io/docs/setup/cri/ sed -i "s#^ExecStart=/usr/bin/dockerd.*#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd#g" /usr/lib/systemd/system/docker.service # 設(shè)置 docker 鏡像颜阐,提高 docker 鏡像下載速度和穩(wěn)定性 # 如果您訪問 https://hub.docker.io 速度非常穩(wěn)定,亦可以跳過這個步驟 curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io # 重啟 docker吓肋,并啟動 kubelet systemctl daemon-reload systemctl restart docker systemctl enable kubelet && systemctl start kubelet docker version
-
-
將安裝初始化環(huán)境的虛擬機克隆三臺凳怨,IP分布為以上的說明
192.168.241.141 kubernetes-node1 192.168.241.142 kubernetes-node2 192.168.241.143 kubernetes-node3
-
初始化master
-
下載flannel配置文件
curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
-
編寫腳本文件,init-master.sh
#!/bin/bash # 只在 master 節(jié)點執(zhí)行 MASTER_IP=192.168.241.140 # 替換 apiserver.demo 為 您想要的 dnsName (不建議使用 master 的 hostname 作為 APISERVER_NAME) APISERVER_NAME=k8s.apiserver.com # kubeadm init # 根據(jù)您服務(wù)器網(wǎng)速的情況,您需要等候 3 - 10 分鐘 kubeadm init --pod-network-cidr=10.244.0.0/16 --control-plane-endpoint=${APISERVER_NAME}:6443 --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --upload-certs # 配置 kubectl rm -rf /root/.kube/ mkdir /root/.kube/ cp -i /etc/kubernetes/admin.conf /root/.kube/config # 安裝 flannel 網(wǎng)絡(luò)插件 kubectl apply -f kube-flannel.yml
-
執(zhí)行腳步完成集群的安裝
sh init-master.sh
-
-
注冊worker
-
獲取token
# 只在 master 節(jié)點執(zhí)行 kubeadm token create --print-join-command
-
在worker節(jié)點執(zhí)行以上命令執(zhí)行之后的輸出
kubeadm join k8s.apiserver.com:6443 --token edbh39.vk3gqwxbvmszruek --discovery-token-ca-cert-hash sha256:2f9a195441cae739f5116019cdb6dc1d71c4614e2bc38851e5867160b6b93feb
-
-
查看集群中的節(jié)點
kubectl get nodes
2肤舞、安裝metallb
Metallb是一個軟負(fù)載均衡的實現(xiàn)紫新,可以用于實現(xiàn)在私有云環(huán)境下對LoadBalancer類型的service分配IP地址。
-
下載配置
curl -O https://raw.githubusercontent.com/google/metallb/v0.8.1/manifests/metallb.yaml
-
安裝
kubectl apply -f metallb.yaml
-
創(chuàng)建configmap文件,設(shè)置IP分配區(qū)間李剖,configmap.yaml
apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: config data: config: | address-pools: - name: default protocol: layer2 addresses: - 192.168.241.200-192.168.241.230 # 需要和集群是在一個網(wǎng)段
-
應(yīng)用
kubectl apply -f configmap.yaml