离线安装kubernetes-1.19.3

因公司内网机器不能访问互联网,只能用离线安装的办法。

一、找一台能下载的linux,下载依赖的安装包和镜像

  1. 下载docker
    配置docker-ce 阿里云的yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce  --downloadonly --downloaddir=./
  1. 下载kubernetes
    配置kubernetes 阿里云的yum源
cat >  /etc/yum.repos.d/kubernetes.repo  <<EOF 
[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
EOF

下载kubernetes安装包

yum install --downloadonly --downloaddir=./  kubelet-1.19.3 kubeadm-1.19.3 kubectl-1.19.3
  1. 下载kubernetes镜像
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.19.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.19.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.19.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.19.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.13-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.7.0
docker pull kubernetesui/dashboard:v2.0.1
docker pull kubernetesui/metrics-scraper:v1.0.4

docker images     | grep registry.cn-hangzhou.aliyuncs.com/google_containers     | sed 's/registry.cn-hangzhou.aliyuncs.com\/google_containers/k8s.gcr.io/'     | awk '{print "docker tag " $3 " " $1 ":" $2}'     | sh

docker save -o kube-controller-manager-v1.19.3.tar k8s.gcr.io/kube-controller-manager:v1.19.3
docker save -o kube-apiserver-v1.19.3.tar k8s.gcr.io/kube-apiserver:v1.19.3
docker save -o kube-scheduler-v1.19.3.tar k8s.gcr.io/kube-scheduler:v1.19.3
docker save -o kube-proxy-v1.19.3.tar k8s.gcr.io/kube-proxy:v1.19.3
docker save -o coredns-1.7.0.tar k8s.gcr.io/coredns:1.7.0
docker save -o etcd-3.4.13-0.tar k8s.gcr.io/etcd:3.4.13-0
docker save -o pause-3.2.tar k8s.gcr.io/pause:3.2
docker save -o dashboard-v2.0.1.tar kubernetesui/dashboard:v2.0.1
docker save -o metrics-scraper-v1.0.4.tar kubernetesui/metrics-scraper:v1.0.4

https://github.com/coreos/flannel/releases
下载flanneld-v0.13.0-amd64.docker

wget https://github.com/coreos/flannel/releases/download/v0.13.0/flanneld-v0.13.0-amd64.docker

master节点需要的镜像有:
k8s.gcr.io/kube-scheduler v1.19.3
k8s.gcr.io/kube-apiserver v1.19.3
k8s.gcr.io/kube-controller-manager v1.19.3
k8s.gcr.io/etcd 3.4.13-0
k8s.gcr.io/coredns 1.7.0
kubernetesui/dashboard v2.0.1
quay.io/coreos/flannel v0.13.0
k8s.gcr.io/kube-proxy v1.19.3
kubernetesui/metrics-scraper v1.0.4
k8s.gcr.io/pause 3.2

node节点需要的镜像有:
quay.io/coreos/flannel v0.13.0
k8s.gcr.io/kube-proxy v1.19.3
kubernetesui/metrics-scraper v1.0.4
k8s.gcr.io/pause 3.2

二、master、node节点环境准备

设置主机名、/etc/hosts
配置ssh无密码登录
关闭防火墙、SElinux
关闭虚拟内存
cat >> /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge‐nf‐call‐ip6tables = 1
net.bridge.bridge‐nf‐call‐iptables = 1
EOF
在这里插入图片描述

三、安装k8s-master节点

将下载下来的rpm安装包、tar包等,全部拷贝到内网机器上

  1. 安装kubernetes
rpm -Uvh --force --nodeps *.rpm
  1. 加载docker镜像
 docker load -i kube-controller-manager-v1.19.3.tar
 docker load -i kube-apiserver-v1.19.3.tar
 docker load -i kube-scheduler-v1.19.3.tar
 docker load -i kube-proxy-v1.19.3.tar
 docker load -i flanneld-v0.13.0-amd64.docker 
 docker load -i pause-3.2.tar 
 docker load -i coredns-1.7.0.tar 
 docker load -i etcd-3.4.13-0.tar 
 docker load -i dashboard-v2.0.1.tar
 docker load -i metrics-scraper-v1.0.4.tar
  1. 初始化master节点
kubeadm init --apiserver-advertise-address 10.23.120.66 --apiserver-bind-port 6443 --kubernetes-version 1.19.3 --pod-network-cidr 10.244.0.0/16

需要记录下token 后续node节点加入集群需要用到

mkdir -p /root/.kube
cp /etc/kubernetes/admin.conf /root/.kube/config
  1. 配置flanneld网络
    外网下载kube-flannel.yml 文件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

同样地拷贝到内网机器上
因为kube-flannel.yml中依赖的镜像名称是flanneld-v0.13.0,需要改名

docker tag quay.io/coreos/flannel:v0.13.0-amd64 quay.io/coreos/flannel:v0.13.0
kubectl apply -f kube-flannel.yml

四、安装k8s-node1节点

将下载下来的rpm安装包、tar包等,全部拷贝到内网节点机器上

  1. 安装kubernetes
rpm -Uvh --force --nodeps *.rpm
  1. 加载docker镜像
 docker load -i kube-proxy-v1.19.3.tar
 docker load -i flanneld-v0.13.0-amd64.docker 
 docker load -i pause-3.2.tar 
 docker load -i metrics-scraper-v1.0.4.tar
  1. 加入kubernetes集群
    用刚才记录下的token,加入集群
kubeadm join 10.23.120.66:6443 --token qrduuk.l0o62raqkip0tnjr \
    --discovery-token-ca-cert-hash sha256:1f6b96d4530de4128c1b9cd4efdaaa4440b03de2b07ba090dd9caf8e3cf393bb

五、状态检查

  1. 在master节点执行
kubectl get nodes

在这里插入图片描述

各个节点都是ready状态
如果node节点是not ready状态。
在node 节点查看状态
systemctl status kubelet
在这里插入图片描述
可以看到node节点上也依赖
docker load -i kube-proxy-v1.19.3.tar
docker load -i flanneld-v0.13.0-amd64.docker
docker load -i pause-3.2.tar
这几个镜像。加载上以后就是read 状态了

  1. 查看pod状态
kubectl get pod --all-namespaces -o wide

在这里插入图片描述pod都是ready状态

  1. 查看组件状态
kubectl get cs

在这里插入图片描述发现 两处unhealthy状态,端口10252和10251端口也没启用。
解决方法
/etc/kubernetes/manifests/目录下的
kube-controller-manager.yaml和kube-scheduler.yaml 删掉- – port=0
重启服务systemctl restart kubelet
然后状态就可以了
在这里插入图片描述

六、配置UI

外网下载配置文件:

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.1/aio/deploy/recommended.yaml
kubectl create -f recommended.yaml

网络类型修改为NodePort

kubectl -n kubernetes-dashboard patch svc kubernetes-dashboard -p '{"spec":{"type":"NodePort"}}'
#token:
kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

#重启服务
kubectl delete -f recommended.yaml
kubectl create -f recommended.yaml

查看端口

kubectl get svc -n kubernetes-bashboard

在这里插入图片描述
看到NodePort端口是30001,即可通过浏览器访问集群任意一台节点的30001端口了。

另外为方便管理,内网环境最好部署一个docker镜像仓库,如Harbor。在此不再赘述。

全文结束。

Logo

开源、云原生的融合云平台

更多推荐