从零开始的 Kubernetes 学习笔记(二)

部署 Kubernetes

Kubernetes 有多种部署方式,一般不是很推荐使用 kubeadm 方式安装(主要是因为众所周知的大陆网络原因),以下采用的却是 kubeadm 方式。。

前置条件

最低需求:

  • 2 GB 及以上 RAM
  • 2 CPUs (双核以上 CPU)
  • 集群内网络互通
  • 禁用 Swap (必须关闭 swap 以便 kubelet 工作正常)

唯一性:

确保 MAC 地址和设备识别码在集群内唯一

  • MAC 地址可以通过 ip link 查看
  • 设备识别码可以通过 cat /sys/class/dmi/id/product_uuid 查看

小贴士:如果服务器使用硬盘克隆或者批量部署的虚拟机可能存在此问题,一般情况下可忽略。

网络通讯:

让 iptables 接管流量,确保当前使用的是 br_netfilter 模块。

# lsmod | grep br_netfilter   //查看是否已加载
# modprobe br_netfilter       //如果未加载需要手动加载(需要内核的支持)

修改sysctl配置:

# cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# sysctl --system

检查所需端口:

全新机器可以跳过本步骤,主要是为了防止端口冲突导致。

  • 控制节点
协议方向端口范围作用使用者
TCP入站6443*Kubernetes API 服务器所有组件
TCP入站2379-2380Etcd server client APIKube-apiserver,etcd
TCP入站10250Kudelet API自身、控制平面组件
TCP入站10251Kube-scheduler自身
TCP入站10252Kube-controller-manager自身
  • 工作节点
协议方向端口范围作用使用者
TCP入站10250Kubelet API自身、控制平面组件
TCP入站30000-32767NodePort 服务*所有组件

禁用Swap分区:

# swapoff -a

小贴士:如果在服务器安装时添加了swap分区,则修改/etc/fstab,将类型为swap的分区注释,防止重启设备时自动挂载。

一、安装Kubernets

1. 添加Kubernets源

# curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
# echo "deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main" | tee -a /etc/apt/sources.list.d/kubernetes.list

2. 安装

# apt-get update
# apt-get install -y kubelet kubeadm kubectl
# apt-mark hold kubelet kubeadm kubectl 

//kubelet kubeadm kubectl解释
kubelet 在群集中所有节点上运行的核心组件, 用来执行如启动 pods 和 containers 等操作。
kubeadm 引导启动 k8s 集群的命令行工具,用于初始化 Cluster。
kubectl 是 Kubernetes 命令行工具。通过 kubectl 可以部署和管理应用,查看各种资源,创建、删除和更新各种组件。

3. 配置及优化

# 命令行补齐(为 kubectl、kubeadm 命令配置命令行补全功能)

  • kubectl
# kubectl completion bash > /etc/bash_completion.d/kubectl
  • kubeadm
# mkdir ~/.kube
# kubeadm completion bash > $HOME/.kube/kubeadm_completion.bash.inc
# printf "# Kubeadm shell completion\nsource '$HOME/.kube/kubeadm_completion.bash.inc'\n" >> $HOME/.bash_profile

二、准备所需镜像

# 无法连接外网,直接使用国内阿里云的缓存镜像

1. 查看所需下载的组件

# kubeadm config images list | tee -a image.list
k8s.gcr.io/kube-apiserver:v1.20.2
k8s.gcr.io/kube-controller-manager:v1.20.2
k8s.gcr.io/kube-scheduler:v1.20.2
k8s.gcr.io/kube-proxy:v1.20.2
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.13-0
k8s.gcr.io/coredns:1.7.0

2. 下载aliyun镜像

# vim get-k8s-images.sh
#!/bin/bash
cat image.list | while read line
do
    aliImage=`echo $line | sed "s/k8s.gcr.io/registry.cn-hangzhou.aliyuncs.com\/google_containers/g"`
    docker pull $aliImage
    docker tag $aliImage $line
    docker rmi $aliImage
done
# bash get-k8s-images.sh
# docker images
REPOSITORY                           TAG           IMAGE ID       CREATED         SIZE
k8s.gcr.io/kube-proxy                v1.20.2       43154ddb57a8   2 weeks ago     118MB
k8s.gcr.io/kube-apiserver            v1.20.2       a8c2fdb8bf76   2 weeks ago     122MB
k8s.gcr.io/kube-controller-manager   v1.20.2       a27166429d98   2 weeks ago     116MB
k8s.gcr.io/kube-scheduler            v1.20.2       ed2c44fbdd78   2 weeks ago     46.4MB
k8s.gcr.io/etcd                      3.4.13-0      0369cf4303ff   5 months ago    253MB
k8s.gcr.io/coredns                   1.7.0         bfe3a36ebd25   7 months ago    45.2MB
k8s.gcr.io/pause                     3.2           80d28bedfe5d   11 months ago   683kB

小贴士: 通过脚本下载阿里云镜像,改名、删除一气呵成,如何有自己的能连接外网仓库请参考下方链接↓
私有仓库拉取镜像

附录

相关链接:

参考链接:

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页