Kubernetes安裝手冊

Kubernetes在2014年開源後,很快便佔據了容器編排的主導地位,成爲容器編排的事實標準。那麼Kubernetes的安裝是瞭解它的第一步。目前有非常多的工具方法來實現Kubernetes的安裝,收集了一些如下。

使用kubeadm部署單機版k8s

Master節點安裝

  1. 機器準備
  • 虛機配置2核4G以上
  • 可訪問外網
  • 操作系統CentOS 7.6
  1. 準備工作
$ systemctl stop firewalld
$ systemctl disable firewalld
$ setenforce 0
$cat /etc/selinux/config
...
SELINUX=disabled
...
$ hostnamectl set-hostname master1
  1. 添加k8s yum源
[k8s]
name=k8s
baseurl=https://mirrors.tuna.tsinghua.edu.cn/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
  1. 確保 iptables 工具不使用 nftables 後端
$ update-alternatives --set iptables /usr/sbin/iptables-legacy
  1. 安裝軟件
$ yum install -y docker kubelet kubeadm kubectl kubernetes-cni
$ echo "KUBELET_EXTRA_ARGS=--cgroup-driver=systemd" > /etc/sysconfig/kubelet
  1. 關閉系統的Swap
$ swapoff -a
$ # 將/etc/fstab文件中的Swap註釋掉
$ cat /etc/fstab
/dev/mapper/VolGroup00-LogVol00 /                       xfs     defaults        0 0
UUID=1539acb0-0589-4eae-a0a4-24566186e425 /boot                   xfs     defaults        0 0
#/dev/mapper/VolGroup00-LogVol01 swap                    swap    defaults        0 0
  1. 創建/etc/sysctl.d/k8s.conf文件,添加如下內容
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness=0
  1. 啓動docker與配置kubelet服務
systemctl start docker
systemctl enable docker
systemctl enable kubelet
  1. 對docker進行加速,在/etc/sysconfig/docker配置項中添加如下內容
--registry-mirror=https://r03u9tep.mirror.aliyuncs.com
  1. 使用hub.docker.com中的鏡像,例如:docker.io/aiotceo/kube-apiserver
$ # 下載aiotceo鏡像
$ kubeadm config images list | sed -e 's/^/docker pull /g' -e 's/k8s.gcr.io/docker.io\/aiotceo/g' -e 's/-0//g' | sh -x
$ #將aiotceo重新tag到k8s.gcr.io
$ docker images | grep aiotceo | awk '{print "docker tag " $1":"$2,$1":"$2}' | sed -e "s#docker.io/aiotceo#k8s.gcr.io#2" -e "s#3.4.3#3.4.3-0#2" | sh -x
$ #刪除aiotceo鏡像
$ docker images |grep aiotceo |awk '{print "docker rmi ", $1":"$2}' |sh -x 
  1. 初始化kube集羣
$ kubeadm init
...
kubeadm join 10.0.2.15:6443 --token 8o8yv2.tv836s1jncmrwgsp \
    --discovery-token-ca-cert-hash sha256:d9d15b5905e8defc0ef6de294be5eff08d720ed9d98b8d6cb99d153bc7332e8e
  1. 創建管理員訪問文件
$ mkdir -p $HOME/.kube
$ cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  1. 安裝網絡插件,例如calico
$ kubectl apply -f https://kuboard.cn/install-script/calico/calico-3.13.1.yaml
  1. 查看k8s狀態
$ kubectl get node
NAME    STATUS   ROLES    AGE   VERSION
node1   Ready    master   14m   v1.18.2

添加計算節點

重複 0-9 步,完成環境準備,安裝軟件及下載鏡像。

  1. kubeadm將計算節點加入集羣
kubeadm join 10.0.2.15:6443 --token 8o8yv2.tv836s1jncmrwgsp \
    --discovery-token-ca-cert-hash sha256:d9d15b5905e8defc0ef6de294be5eff08d720ed9d98b8d6cb99d153bc7332e8e
  1. 查看k8s狀態
$ kubectl get node
NAME    STATUS   ROLES    AGE   VERSION
node1   Ready    master   14m   v1.18.2
node2   Ready    <none>   30m   v1.18.2

補充說明:

  1. 安裝時可以通過kubeadm config print init-defaults查看默認配置
$ kubeadm config print init-defaults
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 1.2.3.4
  bindPort: 6443
nodeRegistration:
  criSocket: /var/run/dockershim.sock
  name: master1
  taints:
  - effect: NoSchedule
    key: node-role.kubernetes.io/master
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
  type: CoreDNS
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.18.0
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
scheduler: {}
  1. 使用kubeadm init --config可以指定kubeadm配置文件

參考文章

使用kubeadm安裝kubernetes_v1.18.x
利用 kubeadm 創建高可用集羣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章