您的位置:首页 > 运维架构 > Kubernetes

[k8s]基于Centos7安装kubernetes1.13.2集群

2019-01-21 15:30 639 查看

本篇文章是基于kubernetes—CentOS7安装kubernetes1.11.2图文完整版这篇文章而写,主要是为了记录安装成功的过程加上自己的一些理解,为了避免以后遗忘。
##设置主机名
这样就可以将主机名设置成自己想要的名字,方便查看。我把master节点设置为k8s-master,从节点设置为k8s-node1
分别在两台机器上进行设置,下面用master节点来举例

hostname k8s-master

编辑对应关系,首先用ifconfig命令来获取ip地址,然后使用命令

vi /etc/hosts

输入

192.168.194.135 k8s-master

关闭防火墙

CentOS Linux7中默认开启了防火墙,在一个安全的内部网络环境中可以关闭防火墙服务

sudo systemctl stop firewalld.service   #停止firewall
sudo systemctl disable firewalld.service #禁止firewall开机启动
sudo firewall-cmd --state             #查看防火墙状态

这时可以看到防火墙的状态是not running

在主机上禁用SELinux

让容器可以读取主机文件系统

sudo setenforce 0

或者也可以用修改系统文件的方式修改

sudo vi /etc/selinux/config
#SELINUX修改为disabled
SELINUX=disabled

创建/etc/sysctl.d/k8s.conf文件

sudo vi /etc/sysctl.d/k8s.conf

添加如下内容:

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

使修改生效,执行

sudo sysctl -p /etc/sysctl.d/k8s.conf

###关闭swap

swapoff -a

配置yum源

因为用k8s官网给的yum源国内访问不了,所以用的是阿里云的yum仓库镜像

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装kubeadm和相关工具

yum install -y docker kubelet kubeadm kubectl kubernetes-cni

如果本来就已经安装了Docker,那取消命令中的docker。

安装成功了后,启动Docker服务和kubelet服务,并且设置成开机自动启动

systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet

下载kubernetes相关镜像

kubeadm默认从gcr.io中下载kubernetes相关镜像,但是我们无法访问gcr.io的网络环境,所以采用了Daocloud来获取镜像加速服务

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

该脚本可以将 --registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json 中 ,然后重启docker来使得docker生效

systemctl restart docker #重启docker

这时可能会出现重启失败的错误,需要去检查配置文件 /etc/docker/daemon.json,使得文件中的内容为:

手动下载相关镜像

接下来去手动下载kubernetes相关镜像,下载地址是https://hub.docker.com/r/warrior

docker pull mirrorgooglecontainers/kube-apiserver:v1.13.2
docker pull mirrorgooglecontainers/kube-controller-manager:v1.13.2
docker pull mirrorgooglecontainers/kube-scheduler:v1.13.2
docker pull mirrorgooglecontainers/kube-proxy:v1.13.2
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.2.24
docker pull coredns/coredns:1.2.6

修改镜像名,以供kubeadm使用

docker tag docker.io/mirrorgooglecontainers/kube-proxy:v1.13.2 k8s.gcr.io/kube-proxy:v1.13.2
docker tag docker.io/mirrorgooglecontainers/kube-scheduler:v1.13.2 k8s.gcr.io/kube-scheduler:v1.13.2
docker tag docker.io/mirrorgooglecontainers/kube-apiserver:v1.13.2 k8s.gcr.io/kube-apiserver:v1.13.2
docker tag docker.io/mirrorgooglecontainers/kube-controller-manager:v1.13.2 k8s.gcr.io/kube-controller-manager:v1.13.2
docker tag docker.io/mirrorgooglecontainers/etcd:3.2.24  k8s.gcr.io/etcd:3.2.24
docker tag docker.io/mirrorgooglecontainers/pause:3.1  k8s.gcr.io/pause:3.1
docker tag docker.io/coredns/coredns:1.2.6  k8s.gcr.io/coredns:1.2.6

运行kubeadm init安装master

kubeadm init --kubernetes-version = 1.13.2

运行

##安装Node,加入集群
###安装kubeadm和相关工具
此部分内容和上文中对应内容一致
###加入集群

kubeadm join 192.168.194.128:6443 --token 7orz4v.q5landhrmjc844ep --discovery-token-ca-cert-hash sha256:9c7f5c99293d7978a2ce9e0d7900715e0b9241526f69da237b74cad419470864
  • 这上面的token及ip地址均为master节点安装成功界面中的提示。
  • 获取ca证书sha256编码hash值,在master节点上输入命令
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

输入后可能会提示你swap没有关闭,输入命令来关闭就行,命令如下

swapoff -a

再次join,发现加入成功

#安装网络插件
添加节点后,通过kubectl get nodes命令,可能会发现报错:The connection to the server localhost:8080 was refused - did you specify the right host or port?
输入命令

export KUBECONFIG=/etc/kubernetes/admin.conf

解决了这个问题,但是Kubernetes提示Master节点为NotReady的状态,所以要安装网络插件
这里选择的flannel插件

mkdir -p ~/k8s/
cd ~/k8s
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f  kube-flannel.yml

这时候使用kubectl get pod –all-namespaces -o wide确保所有的Pod都处于Running状态。
这里出了一个错误,kube-flannel-ds-amd64节点出现了init错误,使用

yum install flannel

进行安装flannel,问题得到的解决,与此同时可以看到master节点已经是ready状态了
###手动配置副节点镜像

这时候发现副节点还是notready的状态,查看pod的状态,发现卡在ContainerCreating状态和Init:0/1,这是因为副节点镜像没有获取到的原因,按照上文手动安装镜像的内容重新进行安装。而flannel则是在master节点输入docker image命令查看镜像版本,然后手动下载就可以。
###成功
准备好镜像之后发现成功:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: