版本信息:
Docker:
REPOSITORY | TAG | SIZE |
---|---|---|
Docker | v19.03.13 | 100MB |
Kubernetes 镜像
Image Version:
REPOSITORY | TAG | SIZE |
---|---|---|
k8s.gcr.io/kube-proxy | v1.19.4 | 118MB |
k8s.gcr.io/kube-controller-manager | v1.19.4 | 111MB |
k8s.gcr.io/kube-apiserver | v1.19.4 | 119MB |
k8s.gcr.io/kube-scheduler | v1.19.4 | 45.7MB |
quay.io/coreos/flannel | v0.13.0 | 57.2MB |
k8s.gcr.io/etcd | 3.4.13-0 | 253MB |
k8s.gcr.io/coredns | 1.7.0 | 45.2MB |
k8s.gcr.io/pause | 3.2 | 683kB |
安装步骤
安装 docker
复制 docker-packages 到离线机,安装 docker 并启动
1. 安装 yum utilities :
yum install -y --cacheonly --disablerepo=* k8s-installer/docker-packages/yum/*.rpm
2. 安装 Docker file drivers :
yum install -y --cacheonly --disablerepo=* k8s-installer/docker-packages/dm/*.rpm
yum install -y --cacheonly --disablerepo=* k8s-installer/docker-packages/lvm2/*.rpm
3. 安装 container-selinux :
yum install -y --cacheonly --disablerepo=* k8s-installer/docker-packages/se/*.rpm
4.安装 docker :
yum install -y --cacheonly --disablerepo=* k8s-installer/docker-packages/docker-ce/*.rpm
5. 启动 docker :
systemctl enable docker && systemctl start docker
安装 Kubernetes
1. 安装 Kubernetes utilities
yum install -y --cacheonly --disablerepo=* k8s-installer/k8s-packages/kube/*.rpm
2. 检查所需镜像
kubeadm config images list
3. 导入 k8s 所需镜像
sh k8s-installer/k8s-images/load.sh
--load.sh
|- docker load < kube-apiserver:v1.19.4.tar
docker load < kube-controller-manager:v1.19.4.tar
docker load < kube-scheduler:v1.19.4.tar
docker load < kube-proxy:v1.19.4.tar
docker load < pause:v3.2.tar
docker load < etcd:v3.4.13-0.tar
docker load < coredns:v1.7.0.tar
docker load < flannel:v0.13.0.tar
4. 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
5. 永久关闭 swap
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
6. 确保 SELinux 是 permissive 模式
setenforce 0 && sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
7. 分别配置 hosts 文件
IP | ROLE |
---|---|
xxxxxx | master |
xxxxxx | node |
8. 内核调整,将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOFnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOF$ sysctl --system
建议执行下面的:
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables
9. 开起 kubelet
systemctl enable kubelet # 一定不能 start
10. 在 master 节点上创建集群,初始化集群
kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.19.4
安装完成后,注意输出指令,如需执行命令请执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
11. 配置 kubectl 管理集群
grep -q "KUBECONFIG" ~/.bashrc || {
echo 'export KUBECONFIG=/etc/kubernetes/admin.conf' >> ~/.bashrc
. ~/.bashrc
}
12. 检查集群是否创建成功
kubectl get nodes
13. 配置初始化 flannel 网络插件
kubectl apply -f k8s-installer/k8s-network/kube-flannel.yml
14. 修改 kube-apiserver.yaml 配置文件打开 TokenRequestAPI
添加以下配置:
- --service-account-signing-key-file=/etc/kubernetes/pki/sa.key
- --service-account-key-file=/etc/kubernetes/pki/sa.pub
- --service-account-issuer=api
- --service-account-api-audiences=api,vault,factors
15. 查看集群状态是否正常,若不正常请重启集群
kubectl get nodes
kubectl get pods -ALL
15. 查看加入节点的 token
kubeadm token create --print-join-command
16. 从节点执行机加入集群
kubeadm join --token <token> <primary-ip>:<primary-port> --discovery-token-ca-cert-hash sha256:<hash>
17. 从主节点查看集群情况
kubectl get nodes