kubernetes部署微服务_kubernetes离线安装

kubernetes部署微服务_kubernetes离线安装微服务之容器化技术—kubernetes的安装

大家好,又见面了,我是你们的朋友全栈君。

Kubernetes的安装

配置集群时注意:时间同步

环境准备

三台机器

kube1-master:192.168.3.166
kube2-node1:192.168.3.242
kube3-node2:192.168.3.190

配置主机名(/etc/hostname)

  • 192.168.3.166(作为master)
> vim /etc/hostname
kube1-master
  • 192.168.3.242(作为node1)
> vim /etc/hostname
kube2-node1
  • 192.168.3.190(作为node2)
> vim /etc/hostname
kube3-node2

配置hosts(/etc/hosts)

  • 192.168.3.166(作为master)
> vim /etc/hosts
192.168.3.166 kube1-master
192.168.3.242 kube2-node1
192.168.3.190 kube3-node2
  • 192.168.3.242(作为node1)
> vim /etc/hosts
192.168.3.166 kube1-master
192.168.3.242 kube2-node1
192.168.3.190 kube3-node2
  • 192.168.3.190(作为node2)
> vim /etc/hosts
192.168.3.166 kube1-master
192.168.3.242 kube2-node1
192.168.3.190 kube3-node2

配置完成后,重启计算机,可以相互ping,如果可以ping通,则表示配置成功。

配置master

配置仓库

  • 获取docker repo
> cd /etc/yum.repos.d
> wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
> # 查询docker-ce可用版本
> yum list docker-ce --showduplicates|sort -r
  • 获取kubernetes
> vim kubernetes.repo
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
enabled=1
> :wq(保存退出)
> yum repolist

开始安装

> yum install docker-ce kubelet kubeadm kubectl

这样虽然可以安装,但是后续会出现docker和kubernetes版本不兼容的问题,kubernetes的当前stable版本是V1.12.2,docker的当前stable版本是V18.09,但是kubernetes V1.12.2并不兼容docker V18.09,而只支持docker V18.06,所以需要指定docker的版本,如下:

> yum install docker-ce-18.06.1.ce

安装完成后需要配置国内镜像,否则会出现下载速度很慢或者有的镜像无法获取的现象,配置镜像的方法如下:

> cd /etc/docker
{
  "registry-mirrors": ["https://krg1ud1i.mirror.aliyuncs.com"]
}
> systemctl daemon-reload
> systemctl restart docker

安装过程中会出现gpgcheck错误的问题,可以用如下方法解决:

> wget https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
> rpm --import yum-key.gpg
> wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
> rpm --import rpm-package-key-gpg

继续安装,则安装成功!

修改相关配置文件

修改docker配置文件
> vim /usr/lib/systemd/system/docker.service
# 在ExecStart上面增加如下语句
Environment="HTTPS_PROXY=http://www.ik8s.io:10080" 
Environment="NO_PROXY=127.0.0.0/8,172.20.0.0/16"

修改完成后,启动docker

> systemctl daemon-reload
> systemctl start docker
> cat /proc/sys/net/bridge/bridge-nf-call-ip6tables
> 1
> cat /proc/sys/net/bridge/bridge-nf-call-iptables
> 1

确保这两个文件存储的都是1,就不用改了。
到这里,docker的配置修改完成。

修改kubernetes配置文件

首先使用如下命令查看:

> rpm -ql kubelet
> cat /etc/sysconfig/kubelet

启动kubelet

# 启动kubelet
> systemctl start kubelet
# 查看kubelet状态
> systemctl status kubelet
# 为失败:code=exited,status=255

使用如下命令查看:

> tail /var/log/messages

打印如下错误信息:

Nov 10 23:31:53 bigdata kubelet: F1110 23:31:53.115865    4150 server.go:190] failed to load Kubelet config file /var/lib/kubelet/config.yaml, error failed to read kubelet config file "/var/lib/kubelet/config.yaml", error: open /var/lib/kubelet/config.yaml: no such file or directory

这个时候,先停止kubelet:

> systemctl stop kubelet

设置开机自启动:

> systemctl enable kubelet
> systemctl enable docker
kubeadm 初始化

配置忽略kubelet:

> vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"

执行初始化命令前,需要先拉取镜像,因为这些镜像无法从国内docker镜像加速器获取

> kubeadm config images list

显示需要拉取的镜像:

k8s.gcr.io/kube-apiserver:v1.12.2
k8s.gcr.io/kube-controller-manager:v1.12.2
k8s.gcr.io/kube-scheduler:v1.12.2
k8s.gcr.io/kube-proxy:v1.12.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.2.24
k8s.gcr.io/coredns:1.2.2

这里采用先从国内镜像加速器获取这些镜像,然后使用tag标记为kubernetes的镜像tag:

  • 先从国内镜像加速器获取镜像:
docker pull mirrorgooglecontainers/kube-apiserver:v1.12.2
docker pull mirrorgooglecontainers/kube-controller-manager:v1.12.2
docker pull mirrorgooglecontainers/kube-scheduler:v1.12.2
docker pull mirrorgooglecontainers/kube-proxy:v1.12.2
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.2.24
docker pull coredns/coredns:1.2.2
  • 再标记为kubernetes的镜像tag
docker tag mirrorgooglecontainers/kube-apiserver:v1.12.2 k8s.gcr.io/kube-apiserver:v1.12.2
docker tag mirrorgooglecontainers/kube-controller-manager:v1.12.2 k8s.gcr.io/kube-controller-manager:v1.12.2
docker tag mirrorgooglecontainers/kube-scheduler:v1.12.2 k8s.gcr.io/kube-scheduler:v1.12.2
docker tag mirrorgooglecontainers/kube-proxy:v1.12.2 k8s.gcr.io/kube-proxy:v1.12.2
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag mirrorgooglecontainers/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24
docker tag coredns/coredns:1.2.2 k8s.gcr.io/coredns:1.2.2

执行初始化:

> kubeadm init --kubernetes-version=v1.12.2 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap

执行初始化命令前,需要启动kubelet

> systemctl start kubelet

初始化完成后,会输出一些信息,这些信息在后面配置node集群中是必须的,所以需要保存,如下:

To start using your cluster, you need to run the following as a regular user:
  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

You can now join any number of machines by running the following on each node
as root:
  kubeadm join 192.168.3.166:6443 --token sjh8aj.5nashad8b75bwkh8 --discovery-token-ca-cert-hash sha256:e31b4a3086ad933e7ca25bbf8ca711c10257c2a3b022649c8747ff182e305a95

初始化完成后,需要使用flannel配置网络:

> kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

接着执行如下命令:

> mkdir -p $HOME/.kube
> sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

使用下列命令查看节点信息:

> kubectl get nodes
> kubectl get pods -n kube-system -o wide

配置nodes

在node1和node2上同样需要配置docker,kubeadm,kubelet,kubectl,首先将master上的一些资源文件复制到node1和node2上:

> scp docker-ce.repo kubernetes.repo rpm-package-key.gpg root@kube2-node1:/etc/yum.repos.d
> scp docker-ce.repo kubernetes.repo rpm-package-key.gpg root@kube3-node2:/etc/yum.repos.d

然后按照在master上安装的方式,分别安装docker,kubeadm,kubelet,kubectl

转载于:https://www.cnblogs.com/xiaotutu365/p/9947695.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107201.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2022.3.5 PAT甲级 2022年春季考试 89分「建议收藏」

    2022.3.5PAT甲级2022年春季考试89分7-1SimpleLieDetection(20分)简单字符串问题,注意连续相同子段和连续上升子段的细节。#include<iostream>#include<cstdio>#include<string>usingnamespacestd;intmain(){ intn,t,k; strings; cin>>n>>t>>k; wh

    2022年4月11日
    79
  • 单例模式 java 三种写法_单例模式基本类图

    单例模式 java 三种写法_单例模式基本类图本文为joshua317原创文章,转载请注明:转载自joshua317博客Java单例模式推荐写法-双重检测机制实现单例模式-joshua317的博客Java单例模式推荐写法–双重检测机制实现单例双重检测机制不仅可以既线程安全问题,又解决懒加载问题,同时保证了效率。packagecom.joshua317.pattern;/***推荐使用:双重检测机制实现单例模式*既解决线程安全问题,又解决懒加载问题,同时保证了效率。*/publicclassSinglet.

    2022年8月11日
    4
  • 计算机的139 135 445端口关闭_系统端口设置在哪里

    计算机的139 135 445端口关闭_系统端口设置在哪里近期永恒之蓝勒索病毒迅速传播,基本上都是通过135,137,138,139,445等端口入侵,关闭445135137138139端口是有效预防入侵的方式之一,同时更新微软最新补丁,及时备份重要数据,才能从容应对病毒侵袭,下面重点介绍关闭135,137,138,139,445端口方法。关闭445135137138139端口方法教程方法一:方法二:1、打开Windows徽标(开始菜单)…

    2022年8月31日
    6
  • ❤️Jenkins从零到壹❤️ 两万字Jenkins教程大全汇总(JAVA 小虚竹 建议收藏)

    ❤️Jenkins从零到壹❤️ 两万字Jenkins教程大全汇总(JAVA 小虚竹 建议收藏)❤️Jenkins从零到壹❤️两万字Jenkins教程大全汇总(JAVAjava小虚竹)

    2022年5月14日
    42
  • 手机qq空间各种代码_QQ空间仅彼此可见

    手机qq空间各种代码_QQ空间仅彼此可见手表代码↓[em]e10026[/em]{uin:5720,nick:GoldVish,who:1}相机代码↓[em]e10022[/em]{uin:5720,nick:拍摄于07月22日,who:1}{uin:5720,nick:阿尔及利亚天气:阴,who:1}飞机代码↓[em]e10020[/em]{uin:5720,nick:乘坐于巴西天马航空JJ8280航班(A舱),who:1}认证代码↓[em]e10023[/em]{uin:5720,nick:文字已通过..

    2022年8月10日
    10
  • 1DCNN实例,代码和结果

    1DCNN实例,代码和结果参考https://blog.csdn.net/yilulvxing/article/details/105028902,有一些小问题,修改后在自己电脑上跑了一遍简单说明几点:数据集result,按照0.8划分为train和test,train又按照0.8进一步划分为trainingsamples和validatingsamples;此案例的归一化只是简单的所有数据除以10000,感觉还需要改进from__future__importprint_functionimport

    2022年5月27日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号