在CentOS 7上离线安装Kubernetes(K8s)
实现非联网环境下安装Kubernetes和Docker,首先需要在互联网机器上下载相关安装包,为下载到所有依赖包,需使用最小安装源,之前未安装过Kubernetes和Docker的系统。
互联网服务器上下载Kubernetes必备文件
配置系统
变更主机名称
vim /etc/hostname
1、最小化安装centos7,并换源
yum install wget
cd /etc/yum.repos.d
sudo mv CentOS-Base.repo CentOS-Base.repo.backup
sudo wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
2、vi /etc/sysconfig/network-scripts/ifcfg-<按tab键补齐>选第一个,然后修改该文件以下内容:
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.3.20
NETMASK=255.255.255.0
GATEWAY=192.168.3.1
DNS1=8.8.8.8
DNS2=114.114.114.114
3、重启网络
systemctl restart NetworkManager
下载Docker安装包
1、安装yum存储库
yum install -y epel-release.noarch
2、安装Docker Yum源
yum-config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
(找不到命令执行:yum -y install yum-utils)
3、下载Docker CE及依赖包
mkdir ~/docker
cd ~/docker
yumdownloader --resolve docker-ce
下载如下:
image.png
下载Kubernetes安装包
1、增加Kubernetes(K8s) yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
2、下载Kubernetes及依赖包
mkdir ~/k8s
cd ~/k8s
yumdownloader --resolve kubelet kubeadm kubectl
下载文件如下:
image.png
打包Docker镜像
1、安装Docker
cd ~/docker
rpm -ivh --replacefiles --replacepkgs *.rpm
执行结果如下:
image.png
2、启动Docker
systemctl enable docker.service
systemctl start docker.service
配置代理(使用国内源可跳过该步)
国内拉取镜像需设置docker代理(命令为样例,需根据实际自行设置,也可以在下载时另换阿里源)
1、创建代理文件
mkdir /etc/systemd/system/docker.service.d
vi /etc/systemd/system/docker.service.d/http-proxy.conf
2、http-proxy.conf内容如下
[Service]
Environment="HTTP_PROXY=http://192.168.3.4:7890"
3、应用变更
systemctl daemon-reload
4、验证配置
systemctl show --property Environment docker
5、重启docker
systemctl restart docker
安装Kubernetes
1、安装离线包
systemctl stop firewalld
cd ~/k8s
rpm -ivh --replacefiles --replacepkgs ~/k8s/*.rpm
执行结果如下:
image.png
2、初始化
swapoff -a
kubeadm init --image-repository registry.aliyuncs.com/google_containers
3、查看Kubernetes必要镜像
docker image ls -a
image.png
4、保存所有镜像到压缩包
docker save $(docker images -q) -o ~/k8s/k8simages.tar
5、保存镜像名称
docker images | sed '1d' | awk '{print $1 " " $2 " " $3}' > ~/k8s/k8simages.list
6、下载Flannel网络脚本
cd ~/k8s
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
(国内不能直接下载配置代理下载)
wget -e use_proxy=yes -e https_proxy=http://192.168.3.4:7890 https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
以上完成所有在线下载任务,接着在离线服务器上安装Kubernetes
离线安装Docker及Kubernetes
安装Docker及恢复镜像
1、拷贝~/docker
及~/k8s
到目标服务器上
2、安装docker
cd ~/docker
rpm -ivh --replacefiles --replacepkgs *.rpm
运行结果如下
image.png
3、运行docker
systemctl enable docker.service
systemctl start docker.service
4、加载Kubernetes镜像
docker load -i ~/k8s/k8simages.tar
image.png
image.png
5、恢复镜像名称及tag
while read REPOSITORY TAG IMAGE_ID
do
echo "== Tagging $REPOSITORY $TAG $IMAGE_ID =="
docker tag "$IMAGE_ID" "$REPOSITORY:$TAG"
done < ~/k8s/k8simages.list
image.png
安装Kubernetes
1、设置Kubernetes对应内核参数
cat > /etc/sysctl.d/kubernetes.conf << EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
2、重新加载参数
modprobe br_netfilter
sysctl --system
3、关闭swap区
swapoff -a
sed -e '/swap/s/^/#/g' -i /etc/fstab
4、Linux防火墙上放开Kubernetes端口
master主节点
firewall-cmd --permanent --add-port={6443,2379,2380,10250,10251,10252}/tcp
工作节点
firewall-cmd --permanent --add-port={10250,30000-32767}/tcp
重新加载防火墙配置
firewall-cmd --reload
设置SELinux模式为Permissive
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
5、离线安装Kubernetes
rpm -ivh --replacefiles --replacepkgs ~/k8s/*.rpm
image.png
6、bash中启用kubectl
source <(kubectl completion bash)
kubectl completion bash > /etc/bash_completion.d/kubectl
7、初始化Kubernetes主节点
kubeadm init --image-repository registry.aliyuncs.com/google_containers
结果如下
image.png
8、执行建议脚本
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
9、启动kublet.service
systemctl enable kubelet.service
systemctl start kubelet.service
10、增加Flannel网络
kubectl apply -f ~/k8s/kube-flannel.yml
11、显示Kubernetes(K8s)集群节点
kubectl get nodes
image.png