计算机系统应用教程网站

网站首页 > 技术文章 正文

【k8s安装】centos7 二进制方式安装 指定IP段

btikc 2024-09-30 13:03:04 技术文章 12 ℃ 0 评论

【k8s安装】centos7 二进制方式安装 指定IP段

一:基础环境配置

配置固定IP

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

#BOOTPROTO=dhcp

BOOTPROTO=static

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens33

#UUID=3d99fe82-66d8-4a45-be60-171c380f3425

DEVICE=ens33

ONBOOT=yes

#IPADDR0=192.168.137.150

IPADDR0=10.0.0.3

PREFIXO0=8

GATEWAY0=10.0.0.2

DNS1=10.0.0.2

主机信息

10.0.0.3 k8s1

10.0.0.4 k8s2

10.0.0.5 k8s3


基础配置

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

setenforce 0

systemctl stop firewalld

systemctl disable firewalld

#sysconf

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
EOF

sysctl --system


二:etcd配置

Etcd需要在3台主机上都安装

修改网卡标识

sed -i "s/ens192/ens33/g" install_etcd.sh

1、注意编辑install_etcd.sh脚本中ifconfig获取本机ip地址的命令,按照实际情况进行修改以正确过滤获得主机IP。

/root/k8s_v1.10.0_install/etcd/install_etcd.sh

ETCD_LISTEN_IP=`ifconfig ens33 | grep 'inet ' | awk '{ print $2}'`


2、在3台主机上分别执行如下命令(同时执行避免等待选举)

/root/k8s_v1.10.0_install/etcd

./install_etcd.sh etcd01 etcd01=http://10.0.0.3:2380,etcd02=http://10.0.0.4:2380,etcd03=http://10.0.0.5:2380

./install_etcd.sh etcd02 etcd01=http://10.0.0.3:2380,etcd02=http://10.0.0.4:2380,etcd03=http://10.0.0.5:2380

./install_etcd.sh etcd03 etcd01=http://10.0.0.3:2380,etcd02=http://10.0.0.4:2380,etcd03=http://10.0.0.5:2380

注意:执行上述命令时,不能等一台完全执行成功了再去下一台执行,因为etcd启动后会进行选举leader投票,如果各etcd启动间隔过大,会导致etcd集群启动失败

#配置环境变量

export PATH=$PATH:/usr/local/kubernetes/bin

确认

[root@k8s1 etcd]# etcdctl member list

1a5336f8e6f41dc6: name=etcd03 peerURLs=http://10.0.0.5:2380 clientURLs=http://10.0.0.5:2379 isLeader=false

98184e85afc2ec7a: name=etcd01 peerURLs=http://10.0.0.3:2380 clientURLs=http://10.0.0.3:2379 isLeader=true

b91cb809d7dea3b3: name=etcd02 peerURLs=http://10.0.0.4:2380 clientURLs=http://10.0.0.4:2379 isLeader=false


三:安装Flannel

修改网卡标识

sed -i "s/ens192/ens33/g" install_flannel.sh

Flannel需要在所有主机上安装

1、编辑install_flannel.sh脚本设置正确的网卡接口及etcd键值

/root/k8s_v1.10.0_install/flannel/install_flannel.sh

IFACE="ens33"

#FLANNEL_NET='{"Network":"172.18.0.0/16", "SubnetMin": "172.18.1.0", "SubnetMax": "172.18.254.0", "Backend": {"Type": "vxlan"}}'

FLANNEL_NET='{"Network":"10.0.0.0/8", "SubnetMin": "10.1.0.0", "SubnetMax": "10.3.0.0", "Backend": {"Type": "vxlan"}}'

2、在3台主机上分别执行下面命令

./install_flannel.sh http://10.0.0.3:2379,http://10.0.0.4:2379,http://10.0.0.5:2379

确认

# ifconfig flannel.1

Docker需要在所有主机上安装

此次docker部署采用二进制安装方式进行。

1、编辑 install-docker.sh

在二进制安装脚本中添加flannel参数

执行安装脚本

./install-docker.sh docker-18.03.0-ce.tgz

确认

# docker version


三:部署Kubernetes

1、部署Master节点

在10.0.0.3主机上执行下面命令

/root/k8s_v1.10.0_install/kubernetes/master

./install_k8s_master.sh 10.0.0.3 http://10.0.0.3:2379,http://10.0.0.4:2379,http://10.0.0.5:2379

部署Minion节点

在节点主机上执行下面命令

/root/k8s_v1.10.0_install/kubernetes/node

./install_k8s_node.sh 10.0.0.3

#配置环境变量

export PATH=$PATH:/usr/local/kubernetes/bin

确认

kubectl get cs

kubectl get nodes

各个节点上

导出镜像:

#!/bin/bash

docker images |awk '{print $1,$2,$3}'|grep -v REPOSITORY >images.txt

#sed -i 's/\//\-/g' images.txt

#sed -i '1d' images.txt

while read line

do

echo $line

ImageName=`echo "$line"|awk '{print $1}'`

TarImageName=`echo "$line"|awk '{print $1}'|sed 's/\//\-/g'`

ImageVer=`echo "$line"|awk '{print $2}'`

ImageId=`echo "$line"|awk '{print $3}'`

TarName="${TarImageName}#${ImageVer}"

#echo $ImageName

#echo $ImageVer

#echo $ImageId

#echo $TarName

#echo $TarImageName

#save images

#docker save -o ${TarName} ${TarImageName} | bzip2 -9 -c > ${TarName}.tar.bz2

docker save -o ${TarName}.tar ${ImageName}:${ImageVer}

#bzip2 press

bzip2 -9 ${TarName}.tar

#exit

done


删除所有镜像

docker rmi `docker images|awk '{print $3}'|sed 's/IMAGE//g'|xargs`

#高压率

bzip2 -9 `ls *.tar|xargs`

导入镜像

#!/bin/bash

for i in `ls *.tar.bz2`;do echo $i;bzip2 -d -c < $i | docker load < $i;done


#启动本地仓库

docker run -d -p 5000:5000 --restart=always --name="docker-image" --hostname="docker-image" -v /opt/docker-images:/registry -e REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/registry registry

本机存储目录:

/opt/docker-images


#把busybox转存到本地仓库

1.查看镜像

docker images

2.打上标签

docker tag 8ac48589692a k8s1:5000/busybox:v1

3.推送标签

docker push k8s1:5000/busybox:v1

4.查看仓库镜像列表

curl -XGET http://10.0.0.3:5000/v2/_catalog

部署busybox

busybox-rc.yaml busybox.yaml

修改镜像地址

image: k8s1:5000/busybox:v1

并去掉策略

imagePullPolicy: Never


5.kube-dns和DashBoard服务

部署kube-dns服务

Kube-dns作为集群内部的域名解析服务,没有它就只能使用ip地址来相互访问。

注意修改kube-dns.yaml中的clusterIP地址和kube-master-url地址。

cd /root/k8s_v1.10.0_install/kubernetes/addons/kube-dns

执行命令:kubectl create -f kube-dns.yaml,部署启动kube-dns服务


部署DashBoard服务

注意修改kubernetes-dashboard.yaml中的API server地址和开放的Node port。

cd /root/k8s_v1.10.0_install/kubernetes/addons/kube-dns

执行命令:kubectl create -f kubernetes-dashboard.yaml,部署启动dashboard服务。

使用get pods命令找出pod运行的node,使用http://{NodeIP}:30090访问即可。

注意:镜像也要手工load到本地

kubectl get pods -o wide --namespace kube-system

访问控制台

http://{NodeIP}:30090

http://192.168.10.6:30090





Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表