我是靠谱客的博主 纯真帅哥,最近开发中收集的这篇文章主要介绍kubernetes部署-基于vmware+centos7虚拟机3个节点零、部署前请先下载vmware以及centos7系统文件一、部署简述二、部署前准备工作三、通过yum安装相关组件四、部署Master节点五、部署其他Master节点或者Slave节点六、部署CNI七、配置master节点也可以部署pod八、部署失败的处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

kubernetes部署-基于vmware+centos7虚拟机3个节点

  • 零、部署前请先下载vmware以及centos7系统文件
  • 一、部署简述
  • 二、部署前准备工作
        • 解除防火墙限制
        • 禁用swap
        • 更改SELinux模式
  • 三、通过yum安装相关组件
        • 启动docker
        • 配置docker源
  • 四、部署Master节点
        • 初始化master节点组件
        • 创建.kube以及config文件
        • 启动kubelet
        • 配置并使用kubectl
  • 五、部署其他Master节点或者Slave节点
        • 加入worker节点
          • 创建.kube以及config文件
        • 部署新的master节点
  • 六、部署CNI
  • 七、配置master节点也可以部署pod
  • 八、部署失败的处理

转载请注明出处即可
所使用的环境为macos

零、部署前请先下载vmware以及centos7系统文件

vmware官网
centos7官网

安装vmware和centos7的请自行查询百度,
在安装时,请注意系统的时区和网络配置即可。


一、部署简述

通过vmware安装一个虚拟机,并copy两份,分别固定ip地址(重要), 以及配置host(重要)。

iphostnode role
192.168.179.137ceph1master
192.168.179.138ceph2master
192.168.179.139ceph3master

配置host通过编辑hostnane文件

vim /etc/hostname

windows的vmware固定ip在虚拟机的配置界面设置一下即可
macos的vmware固定ip请自行查询百度


二、部署前准备工作

解除防火墙限制

systemctl stop firewalld && systemctl disable firewalld
systemctl stop iptables && systemctl disable iptables

vim /etc/sysctl.conf

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

然后

sysctl -p

禁用swap

swapoff -a && sed -i '/ swap / s/^/#/' /etc/fstab

更改SELinux模式

将SELinux更改为permissive模式

setenforce 0

永久关闭SELinux

编辑/etc/selinux/config

SELINUX=disabled

三、通过yum安装相关组件

centos使用阿里云的源

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

然后

yum install -y docker kubelet kubeadm kubectl kubernetes-cni 

启动docker

systemctl enable docker && systemctl start docker

配置docker源

编辑/etc/docker/daemon.json文件:

{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

之后重新加载配置并重启docker:

systemctl daemon-reload
systemctl restart docker

四、部署Master节点

master启动的核心服务如下:

master节点
etcd-master
kube-apiserver
kube-controller-manager
kube-dns
Controll Plane (如calico、flannel)
kube-proxy
kube-scheduler

####下载master节点的服务镜像

使用如下命令获取当前版本kubadm启动需要的镜像:

kubeadm config images list

得到

k8s.gcr.io/kube-apiserver:v1.17.4
k8s.gcr.io/kube-controller-manager:v1.17.4
k8s.gcr.io/kube-scheduler:v1.17.4
k8s.gcr.io/kube-proxy:v1.17.4
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.2

由于国内的网络环境,需要使用aliyun镜像替换谷歌镜像,脚本如下:
注意,一定要和images list的版本保持一致,当然版本可能是要比1.17.4要新

#!/bin/bash
images=(
    kube-apiserver:v1.17.4
    kube-controller-manager:v1.17.4
    kube-scheduler:v1.17.4
    kube-proxy:v1.17.4
    pause:3.1
    etcd:3.4.3-0
    coredns:1.6.2
)

for imageName in ${images[@]} ; do
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName

done

然后运行脚本下载这些docker镜像。

初始化master节点组件

kubeadm init --kubernetes-version v1.17.4 
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers 
--pod-network-cidr=10.244.0.0/16 
--apiserver-advertise-address=192.168.179.137 
--upload-certs -—control-plane-endpoint=192.168.179.137:6443

如果后面打算选择flannel的话,请将–pod-network-cidr=10.244.0.0/16一定加上,因为flannel默认也是相同的配置。

完成之后会输出两个kubeadm join 行
一个是用于其他master节点加入集群

kubeadm join 192.168.179.137:6443 --token 1234567890qwertyuio 
   --discovery-token-ca-cert-hash sha256:1234567890qwertyuio 
   --control-plane --certificate-key 1234567890qwertyuio

另一个是用于worker节点接入集群

kubeadm join 192.168.179.137:6443 --token 1234567890qwertyuio 
    --discovery-token-ca-cert-hash sha256: 1234567890qwertyuio

copy与上面两行类似的指令,并保存,用于后面使用。也可以看到如果包含了–control-plane则是master节点加入集群

创建.kube以及config文件

mkdir ~/.kube
cp /etc/kubernetes/admin.conf ~/.kube/config

启动kubelet

systemctl enable kubelet && systemctl start kubelet

配置并使用kubectl

使用kubectl查看当前运行的节点:

kubectl get nodes

输出

NAME     STATUS     ROLES    AGE   VERSION
ceph1    NotReady   master   1h   v1.17.4

查看当前运行的pods:

kubectl get pods --all-namespaces

输出

NAMESPACE     NAME                             READY   STATUS    RESTARTS   AGE
kube-system   coredns-7f9c544f75-8qk6v         0/1     Pending   0          17h
kube-system   coredns-7f9c544f75-p8tcj         0/1     Pending   0          17h
kube-system   etcd-ceph1                       1/1     Running   0          17h
kube-system   kube-apiserver-ceph1             1/1     Running   0          17h
kube-system   kube-controller-manager-ceph1    1/1     Running   0          17h
kube-system   kube-proxy-2vkrs                 1/1     Running   0          17h
kube-system   kube-scheduler-ceph1             1/1     Running   0          17h

五、部署其他Master节点或者Slave节点

worker启动的核心服务如下:

worker节点
Controll Plane (如calico、flannel)
kube-proxy
other apps

加入worker节点

在worker节点上运行刚刚在master节点运行的kubeadm init的输出:

kubeadm join 192.168.179.137:6443 --token 1234567890qwertyuio 
    --discovery-token-ca-cert-hash sha256: 1234567890qwertyuio

将当前worker节点加入集群。

之后会自动启动worker节点的kubelet服务。这时在master节点上查看集群内所有节点,会输出

kubectl get nodes
NAME     STATUS     ROLES    AGE   VERSION
ceph1   NotReady   master   1h   v1.17.4
ceph2   NotReady   <none>   9s    v1.17.4
创建.kube以及config文件
mkdir ~/.kube
scp ceph1:/root/.kube/config ~/.kube/

部署新的master节点

如果在部署一个master节点的话,执行上面带有 --control-plane 的join指令
查看ndoes

NAME     STATUS     ROLES    AGE   VERSION
ceph1   NotReady   master   1h   v1.17.4
ceph2   NotReady   master   9s    v1.17.4

六、部署CNI

在master节点上运行kubectl get nodes会看到

NAME     STATUS     ROLES    AGE   VERSION
ceph1   NotReady   master   17h   v1.17.4
ceph2   NotReady   master   9s    v1.17.4
ceph3   NotReady   master   9s    v1.17.4

master和worker节点(如果有)都是NotReady的,这时运行kubectl get pods -n kube-system -o wide会看到两个coredns都是Pending的。
这个时候需要安装flannel或者weave。这两个网络组件只需要安装其中一个即可

安装flannel

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

安装weave

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d 'n')"

安装后可以看到所有的服务组件都是Running的

# kubectl -n kube-system get pods
NAME                            READY   STATUS    RESTARTS   AGE
coredns-7f9c544f75-8qk6v        1/1     Running   5          40d
coredns-7f9c544f75-p8tcj        1/1     Running   5          40d
etcd-ceph1                      1/1     Running   5          40d
etcd-ceph2                      1/1     Running   7          40d
etcd-ceph3                      1/1     Running   5          40d
kube-apiserver-ceph1            1/1     Running   7          40d
kube-apiserver-ceph2            1/1     Running   7          40d
kube-apiserver-ceph3            1/1     Running   7          40d
kube-controller-manager-ceph1   1/1     Running   21         40d
kube-controller-manager-ceph2   1/1     Running   17         40d
kube-controller-manager-ceph3   1/1     Running   20         40d
kube-proxy-2vkrs                1/1     Running   7          40d
kube-proxy-8z8gk                1/1     Running   6          40d
kube-proxy-x6cm4                1/1     Running   5          40d
kube-scheduler-ceph1            1/1     Running   14         40d
kube-scheduler-ceph2            1/1     Running   19         40d
kube-scheduler-ceph3            1/1     Running   22         40d
weave-net-4khvl                 2/2     Running   14         40d
weave-net-6h4c4                 2/2     Running   20         40d
weave-net-pp8kv                 2/2     Running   14         40d

并且所有的节点都是Ready的

# kubectl get nodes
NAME    STATUS   ROLES    AGE   VERSION
ceph1   Ready    master   40d   v1.17.4
ceph2   Ready    master   40d   v1.17.4
ceph3   Ready    master   40d   v1.17.4

七、配置master节点也可以部署pod

kubectl taint nodes --all node-role.kubernetes.io/master-

八、部署失败的处理

一般情况下只要根据上述步骤,第一个master节点部署是不会失败的
如果在join过程中失败, 在重新部署之前,需要执行下面的指令

rm -rf /var/lib/etcd
rm -rf /etc/kubernetes/
rm -rf /etc/cni/net.d

swapoff -a
kubeadm reset
systemctl daemon-reload
systemctl restart kubelet
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

最后

以上就是纯真帅哥为你收集整理的kubernetes部署-基于vmware+centos7虚拟机3个节点零、部署前请先下载vmware以及centos7系统文件一、部署简述二、部署前准备工作三、通过yum安装相关组件四、部署Master节点五、部署其他Master节点或者Slave节点六、部署CNI七、配置master节点也可以部署pod八、部署失败的处理的全部内容,希望文章能够帮你解决kubernetes部署-基于vmware+centos7虚拟机3个节点零、部署前请先下载vmware以及centos7系统文件一、部署简述二、部署前准备工作三、通过yum安装相关组件四、部署Master节点五、部署其他Master节点或者Slave节点六、部署CNI七、配置master节点也可以部署pod八、部署失败的处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部