栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

k8s--Kubernetes

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

k8s--Kubernetes

k8s–Kubernetes
  • Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
  • Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
  • 中文社区:http://docs.kubernetes.org.cn/227.html
  • 中文社区:https://www.kubernetes.org.cn/k8s

五种方法:
kubernetes 二进制安装 (配置最繁琐,不亚于安装openstack)
kubeadm 安装 (谷歌推出的自动化安装工具,网络有要求)
minikube 安装 (仅仅用来体验k8s)
yum 安装 (最简单,版本比较低====学习推荐此种方法)
go编译安装 (最难)

我们采用yum安装,学习怎么使用k8s才是重点。

1. k8s的安装部署(也就是基础环境搭建)

各个主机先更新yum源

上传并在master主机先安装k8s的所有组件的rpm包,yum loaclinstall *.rpm

再在master主机上传master的安装包,在指定目录解压后安装所有的rpm包


接下来在主节点配置etcd.conf
#[Hember]
#ETCD CORS-"
ETCD DATA DIR="/var/lib/etcd/default.etcd"
#ETCD WAL DIR="
#ETCD LISTEN PEER URLS="http://localhost: 2380"
ETCD LISTEN CLIENT URLS="http://0.0.0.0:2379"      #1、配置监控所有地址的2379端口
#ETCD MAX SHAPSHOTS="5
#ETCD HAX VALS="5"
ETCD NAME-"default"
#ETCD SNAPSHOT COUNT="100000"
#ETCD HEARTBEAT INTERVAL-"100"
#ETCD ELECTION TIHEOUT="1000"
#ETCD QUOTA BACKEND BYTES-"0"
#ETCD HAX REQUEST BYTES="1572864"
#ETCD GRPC KEEPALIVE HIN TIHE-"5s"
#ETCD GRPC KEEPALIVE INTERVAL-"2h0mOs"
#ETCD GRPC KEEPALIVE TIMEOUT="20s“
#
#[Clustering]
#ETCD INITIAL ADVERTISE PEER URLS="http://localhost: 2380
ETCD ADVERTISE CLIENT URLS-"http://10.0.0.11:2379"             #2、配置连接etcd的地址
#ETCD DISCOVERY="


重启服务并测试
systemctl restart etcd.service
systemctl enable etcd.service
etcdctl set name black               # etcd以键值对存储数据
etcdctl get name
black
配置Master 节点

vim /etc/kubernetes/apiserver
在配置文件找到以下语句并开放,修改

KUBE API ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE ARI PORT-"-port=8080"
KUBE EPCD SERVERS="--etcd-servers-http://10.0.0.11:2379"   
KUBE SERVICE ADDRESSEs="-service-cluster-ip-range=10.254.0.0/16"
KUBE
ADMISSION ConUROL="--admission-control=Namespacelifecycle, NamespaceExists,LimitRanger, SecurityContextDeny,ResourceQuota"    # 去掉ServiceAccount,除非需要外网下发证书
master上面的客户端配置文件不需要修改,除非master也做为客户端node节点

vim /etc/kubernetes/config

最后在master主机上重启以上配置好的服务
systemctl enable kube-apiserver.service
systemctl start kube-apiserver.service
systemctl enable kube-controller-manager.service
systemctl start kube-controller-manager.service
systemctl enable kube-scheduler.service
systemctl start kube-scheduler.service
各个node节点的配置

vim /etc/kubernetes/config
KUBE MASTR="–master-http://10.0.0.11:8080"

vim /etc/kubernetes/kubelet

KUBELET ADDRESS="--address=10.0.0.12/13"   #看当前主机的地址
KUBEIET HOSTNAME="--hostname-override=10.0.0.12/13"
KUBEIET API SERVER="--api-servers-http://10.0.0.11:8080"
各个node节点配置好后重启服务

systemctl enable kubelet.service
systemctl start kubelet.service
ystemctl enable kube-proxy.service
systemctl start kube-proxy.service

在master主机上验证节点是否正确连接上master


或者用命令:kubectl describe nodes查看

所有节点配置flannel网络

所有节点:
yum install flannel -y
sed -i ’s#http://127.0.0.1:2379#http://10.0.0.11:2379#g‘ /etc/sysconfig/flanneld (10.0.0.11为etcd地址)

master节点定义后面容器所用到的网段
etcdctl mk /atomic.io/network/config ‘{ “network”: “172.16.0.0/16” }’ #该网段6万多个地址
etcdctl get /atomic.io/network/config #查看网段
{ “Network”: “172.16.0.0/16” }

重启所有服务
systemctl enable flanneld.service
systemctl start flarneld.service
service docker restart
systemctl restart kube-apiserver.service
systemctl restart kube-controller-manager.service
systemctl restart kube-scheduler.service
ifconfig -a

各个node节点重启服务

systemcti enable flanneld.service
systemctl start flanneld.service
service docker restart
systemctl restart kubelet.service
systemctl restart kube-proxy.service

配置master为镜像仓库

master节点
vim /etc/sysconfig/docker
注释原来的OPTTIONS行,添加下面的行
OPTTONS-“–selinux-enabled --log-driver=iournald --sicmature-verification-false -reaistry-mirror=
https://reqistry.docker-cn.com–insecure-reqistry=10.0.0.11:50001 #这里配置仓库为docker中国了

svstemctl restart docker

命令行配置本地registry
docker tag nginx 10.0.0.11:5000/o1dguo/nginx:v1
docker run -d -p 5000:5000-restart=always–name registry -v /opt/myregistry:/var/lib/registry registry
docker push 10.0.0.11:5000/oldguo/nginx:v1

node节点
vim /etc/sysconfig/docker
注释原来的OPTTIONS行,添加下面的行
OPTIONs=“–selinux-enabled --log-driver-journald --signature-verification=false --insecure-registry=10.0.0.11:5000

systemctl restart docker

docker pull 10.0.0.11:5000/o1dguo/nginx:v1

其它安装部署步骤:https://www.cnblogs.com/jim-xu/p/11873442.html


Docker集群管理技术

etcd:是分布式系统中轻量级的统一配置管理工具,比zookeeper相对弱一些
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020081015564018
k8s的功能组件就分为了master和node,所有相关配置文件可在/etc/kubernetes下面查看,/etc/kubernetes/apiserver配置文件默认监听0.0.0.0的8080端口
下面是apiserver的配置文件示例:

大多的功能组件都是通过ip地址和端口号连接在一起。

Kubernetes K8s

    docker和k8s的关系是:我们使用k8s来管理docker集群,可以将docker看成k8s内部使用的低级别组件。docker是一个开源的应用容器引擎,k8s是一个开源的容器集群管理系统。

一、K8S快速部署

  1. 节点规划
k8s-m :10.0.0.11
k8s-n1 :10.0.0.12
k8s-n2 :10.0.0.13
  1. 所有节点安装docker环境及依赖
    2.1 上传docker-k8s.zip软件到各节点/opt,并解压
    2.2 进入目录进行安装
cd /opt/docker-k8s
yum localinstall -y *.rpm
  1. node节点软件安装
    3.1 上传k8s-node到两个node节点/opt 并解压
    3.2 进入目录进行安装
cd /opt/k8s-node
yum localinstall -y *.rpm
  1. 配置master主节点ETCD
vim /etc/etcd/etcd.conf
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"

重启服务并测试
systemctl restart etcd.service
systemctl enable etcd.service
etcdctl set name oldguo
etcdctl get name
  1. 配置Master节点
vim /etc/kubernetes/apiserver
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBE_ETCD_SERVERS="--etcd-servers=http://10.0.0.11:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_ADMISSION_ConTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

vim /etc/kubernetes/config

重启服务
systemctl enable kube-apiserver.service
systemctl start kube-apiserver.service
systemctl enable kube-controller-manager.service
systemctl start kube-controller-manager.service
systemctl enable kube-scheduler.service
systemctl start kube-scheduler.service
  1. node节点配置
vim /etc/kubernetes/config
KUBE_MASTER="--master=http://10.0.0.11:8080"

vim /etc/kubernetes/kubelet
KUBELET_ADDRESS="address=10.0.0.12/13"
KUBELET_HOSTNAME="--hostname-override=10.0.0.12/13"
KUBELET_API_SERVER="--api-servers=http://10.0.0.11:8080"

重启服务
systemctl enable kubelet.service
systemctl start kubelet.service
systemctl enable kube-proxy.service
systemctl start kube-proxy.service
  1. 验证节点状态
[root@k8s-m ~]# kubectl get nodes
  1. 所有节点配置flannel网络
**所有节点(不管是master还是node节点):**
yum install flannel -y
sed -i 's#http://127.0.0.1:2379#http://10.0.0.11:2379#g' /etc/sysconfig/flanneld

master节点:
etcdctl mk /atomic.io/network/config '{"Network": "172.16.0.0/16"}'
etcdctl get /atomic.io/network/config
{"Network": "172.16.0.0/16"}

systemctl enable flanneld.service
systemctl start flanneld.service
service docker restart
systemctl restart kube-apiserver.service
systemctl restart kube-controller-manager.service
systemctl restart kube-scheduler.service
ifconfig -a

node节点:
systemctl enable flanneld.service
systemctl start flanneld.service
service docker restart
systemctl restart kubelet.service
systemctl restart kube-proxy.service
  1. 配置master为镜像仓库
#master节点
vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled --log--driver=journald --signature-verification=false --registry-mirror=https://registry.docker-cn.com --insecure-registry=10.0.0.11:5000'

systemctl restart docker

#配置本地registry
docker tag nginx 10.0.0.11:5000/oldguo/nginx:v1
docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry registry
docker push 10.0.0.11:5000/oldguo/nginx:v1

#node节点
vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry=10.0.0.11:5000'

docker pull 10.0.0.11:5000/oldguo/nginx:v1
二. k8s核心资源管理 1. PODS 1.1 创建第一个pod(主要测试k8s的功能,主要用rc)

提前做好并上传本地镜像,如

下面开始上传pod-infrastructure基础镜像


#修改所有客户端node节点kubelet
vim /etc/kubernetes/kubelet

#修改完重启
systemctl restart kubelet.service

master上创建第一个pod(在master节点上面体验pod资源创建)
mkdir /opt/yml -p      
cd /opt/yml
[root@k8s yml]# cat k8s_pod.yml
apiVersion: v1
kind: Pod            #kind --资源类型
                          #可以加上命令空间做隔离区分 namespace,较复杂的时候区分
metadata:
  name: nginx      # pod资源的名字
  lables:
    app: web         # 一个别名,svc代理多个pods要使用别名区分
spec:
  containers:                    
    - name: nginx
      image: 10.0.0.11:5000/oldguonginx:v1     #后端容器镜像位置,要提交做好该镜像 (dockere images ls)
      ports:
        - containerPort: 80

[root-master@k8s yml]# kubectl create -f k8s_pod.yml (所有资源创建都是这条命令,master创建pod会轮询在node节点创建)

每一个pod都会启动两个容器,一个是pod-infrastructure基础容器一个是资源容器。

1.2 查询和删除pod
kubectl get pod
kubectl get pod -o wide
kubectl descrie pods           #查看pod的详细状态
kubectl delete pod nginx     #master上删除一个pod
pod "nginx" deleted

报错分析–上面已讲
++++++++++++++++++++++++++++++
failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for registry.access.redhat.com/rhel7/pod-infrastructure:latest, this may be because there are no credentials on this request. details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory)"
+++++++++++++++++++++++++++++

registry.access.redhat.com/rhel7/pod-infrastructure:latest
++++++++++++++++++++++++++++

解决:
master: 上传准备好的容器为本地register (pod-infrastructure-latest.tar.gz)
[root@k8s-m opt]# docker load -i pod-infrastructure-latest.tar.gz
[root@k8s-m opt]# docker images
[root@k8s-m opt]# docker tag docker.io/tianyebj/pod-infrastructure:latest 10.0.0.11:5000/oldguo/pod-infrastructure:latest
[root@k8s-m opt]# docker images
[root@k8s-m opt]# docker push 10.0.0.11:5000/oldguo/pod-infrastructure:latest
1.3 删除
[root@k8s-m yml]# kubectl delete pod nginx
1.4 更新
master:
[root@k8s yml]# docker pull nginx
[root@k8s yml]# docker tag docker.io/nginx:latest 10.0.0.11:5000/oldguo/nginx:v2
[root@k8s yml]# docker push 10.0.0.11:5000/oldguo/nginx:v2
[root@k8s yml]# kubectl replace --force -f k8s_pod.yml       # 替换新的配置文件达到更新目的
1.5 小结
kubectl create -f
kubectl get pods
kubectl get pods -o wide
kubectl get pods -o wide -l app=web
kubectl get pods -o wide --namespace=oldguo
kubectl describe pods
kubectl delete pod nginx
kubectl replace --force -f k8s_pod.yml


也会操作业务的短暂中断,以上是pod的测试。

2. RC应用(副本控制器,实现高可用,一个服务一个RC)
master:
配置yml文件

cat >k8s_nginx_rc.yml< 




或者修改配置文件pod的数量后再重新运行yml脚本(不推荐)




3. depolyment资源管理:
vim k8s_nginx_dev.yml

apiVersion: extensions/v1betal
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
      spec:
        containers:
        - name: nginx
          image: 10.0.0.11:5000/oldguo/nginx:v2
          ports:
          - containerPort: 80

[root@k8s-m yml]# kubectl create -f k8s_nginx_dev.yml
[root@k8s-m yml]# kubectl get deployment

deployment滚动升级
kubectl set image deployment/nginx nginx=10.0.0.11:5000/oldguo/nginx:v1
kubectl rollout undo deployment/nginx

HPA:(horizontalpodautoscalers),deployment当中才会支持

实现自动pod伸缩
[root@k8s-m yml]# kubectl autoscale deployment nginx --min=2 --max=6 --cpu-percent=80 (最小启两个pod,当cpu达到80%后,会再启动一个)

horizontalpodautoscalers
kubectl get horizontalpodautosscalers
kubectl edit horizontalpodautosscalers nginx (是在线修改)

deployment资源管理小结:
[root@k8s-m yml]# kubectl create -f k8s_nginx_dev.yml
[root@k8s-m yml]# kubectl get deployment
[root@k8s-m yml]# kubectl delete deployment nginx
deployment滚动升级
kubectl set image deployment/nginx nginx=10.0.0.11:5000/oldguo/nginx:v1
kubectl rollout undo deployment/nginx
实现自动pod伸缩
[root@k8s-m yml]# kubectl autoscale deployment nginx --min=2 --max=6 --cpu-percent=80

4. Service
创建svc配置文件
vim k8s_nginx_svc.yml
apiVersion: v1
kind: Service
metadata:
  name: nginxsvc         #svc的名字
spec:
  type: NodePort
  ports:
    - port: 80            #svc的80端口
      nodePort:30001           #宿主机的端口
    selector:
      app: nginx

[root@k8s-m yml]# kubectl create -f k8s_nginx_svc.yml
[root@k8s-m yml]# kubectl get svc
[root@k8s-m yml]# kubectl curl -r 10.0.0.13:30001
[root@k8s-m yml]# kubectl curl -r 10.0.0.12:30001

pv的应用(PersistentVolume(持久化卷))

大型公司已经做好了自己的云,中小型公司未来也会做自己的云,通过docker+k8s

5. k8s实现wordpress项目 5.1 准备NFS共享存储

master或者一个专门用来存储的node节点,安装nfs:NFS 是Network File System的缩写,即网络文件系统
nfs上面的虚拟目录会mount到某个主机的本地目录,要预先创建该目录,没有则创建

在所有节点node进行nfs的安装,否则后面会报错:挂载有问题
yum install -y nfs-utils-*
mkdir /data /code
vim /etc/exports
/data 10.0.0.0/24(rw,async,no_root_squash,no_all_squash) (映射两个目录出来)
/code 10.0.0.0/24(rw,async,no_root_squash,no_all_squash)

systemctl restart rpcbind
systemctl restart nfs
systemctl enable rpcbind
systemctl enable nfs

[root@master ~]# showmount -e (查看映射)
Export list for master:
/code 10.0.0.0/24
/data 10.0.0.0/24

5.2 MYSQL PV定义

先创建一个指定的目录

[root@k8s-m yml]# cat > nfs_pv_data.yml<

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv0001
  labels:
    type: nfs001
spec:
  capacity:
    storage: 10Gi    #指定空间大小
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    path: "/data"       #指定nfs的挂载路径
    server: 10.0.0.11
    readonly: false
EOF

[root@master wordpress]# kubectl create -f nfs_pv_data.yml

5.3 Wordpress PV定义

cat > nfs_pv_code.yml<

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv0002
  labels:
    type: nfs002
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    path: "/code"
    server: 10.0.0.11
    readonly: false
EOF

[root@master wordpress]# kubectl create -f nfs_pv_code. yml

5.4 MySQL PVC定义(PersistentVolumeClaim数据卷声明)

cat > nfs_pvc_mysql.yml<

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv0001
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi        #大小不能超过pv规定的大小
  selector:
    matchLabels:
      pv: nfs001          #关联了上面的pv_mysql 的nfs001
EOF
5.5 Wordpress PVC定义

cat > nfs_pvc_wp.yml<

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv0002
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi            #大小不能超过pv规定的大小
  selector:
    matchLabels:
      pv: nfs002               #关联了上面的pv_code 的nfs002
EOF

kubectl create -f nfs_pv_code.yml
kubectl create -f nfs_pv_data.yml
kubectl create -f nfs_pvc_wp.yml
kubectl create -f nfs_pvc_mysql.yml

5.6 mysql rc定义

注意:在哪台主机运行mysql-rc.yaml文件,mysql就安装在这台主机了
[root@k8s-m yml]# cat mysql-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql
spec:
  replicas: 1     #mysql不支持用多个mysql库同时用一个库区启动,先用的会锁定,所以副本为1,但这里msyql 宕机了会再起一个,也是高可用
  selector:
    app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: 10.0.0.11:5000/oldguo/mysql:5.7      #镜像改成本地的
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: nfs-vol
          mountPath: /var/lib/mysql
        env:
        - name: MYSQL_ROOT_PASSWORD   #提前设置好mysl里面root的密码
          value: "somewordpress"
        - name: MYSQL_DATAbase       #提前设置好mysql的库
          value: "wordpress"
        - name: MYSQL_USER
          value: "wordpress"
        - name: MYSQL_PASSWORD
          value: "wordpress"
        volumes:
        - name: nfs-vol
          persistentVolumeClain:
            claimName: pv0001       #这里是pvc的名字,pvc下面绑定了pv,pv定义好了宿主机的存储目录,用nfs
5.7 MYSQL svc (Service)定义

mysql不需要对外访问,让workpress访问即可

cat > mysql-svc.yaml<

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
    - port: 3306
      nodePort: 33060  #这里暴露了3306端口,生产上面不能映射3306端口出去
  selector:
    app: mysql
EOF


[root@master opt]# docker tag b7dc06006192 10.0.0.11:5000/oldguo/mysql:5.7
[root@master opt]# docker push 10.0.0.11:5000/oldguo/mysql:5.7

[root@k8m-m opt]# kubectl get pods

[root@k8m-m opt]# kubectl get svc
mysql  10.254.77.254    3306/TCP  19s
5.8 wordpress RC定义

vim myweb-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: myweb
spec:
  replicas: 2
  selector:
    app: myweb
  template:
    metadata:
      labels:
        app: myweb
    spec:
      containers:
      - name: myweb
        image: 10.0.0.11:5000/oldguo/wordpress:latest
        ports:
        - containerPort: 80
        volumeMounts:
        - name: nfs-vol
          mountPath: /var/www/html
        env:
        - name: WORDPRESS_DB_HOST
          value: '10.254.77.254'                     #mysql的svc地址
        - name: WORDPRESS_DB_USER
          value: 'wordpress'
        - name: WORDPRESS_DB_PASSWORD
          value: 'wordpress'
        volumes:
        - name: nfs-vol
          persistentVolumeClaim:
            claimName: pv-00002

dashboard

需要rc和svc以下两个文件



K8s+dashboard+heapster+grafana+influxdb 容器集群监控项目


课外知识

目前安装Kubernetes的方式多样,主要是kubeadm,kops,Rancher,手动部署,Kubespray。

kubeadm
官方推荐方案,也在大力发展。小问题比较多,扩展还是需要配合其它方案一起做。高可用上面还是需要自己花一些精力 如果只是玩玩,还是非常推荐的,但是想要正式环境使用,我还是推荐大家三思。

由于kubeadm更像是一套完整的脚本封装,所以想要扩展它,还是需要配合其它的方案一起做。升级之类的,可以参考官方的升级指南,还是比较容易的。

目前支持的操作系统主要有:Ubuntu 16.04+ /Debian 9/ CentOS 7 / RHEL 7 / Fedora/HypriotOS/Container Linux 对于云平台的支持一般,还是推荐大家在安装完毕后,手动扩展吧。

kops
kops是非常早就存在的一个项目,也是目前最靠谱的部署方案,但是由于与各云平台整合度非常高,所以也不是很推荐。当然如果你在国外,使用GCE/DigitalOcean/AWS的话,我还是非常推荐的。国内就算了。

Rancher
如果说kuernetes类似于IaaS+,那么Rancher就是标准的PaaS,如果你愿意按照Rancher的项目结构思路走,如果你团队不大,我还是比较推荐的。 目前Rancher正在准备升级2.0,我推荐大家稍微等待一下,然后直接拥抱2.0吧。至于1.x版本,我推荐大家放弃吧。(也就多等各十天半个月什么的) 至于部署,目前还不清楚Rancher什么时候会集成(貌似已经有势头了),具体方案还不清楚。

手动部署
手动部署完全看喜好,推荐大家都尝试一遍,成功与不成功不要紧,最主要的是了解一下Kubernetes的组件。会为你调试其它方案有很好的帮助。 我本人不是专业运维,所以也没有封装比较完善的脚本。但是理论上,如果对Kubernetes足够了解,完全可以把他创建成与kops 或者 kubespray 一样的方案。 如果你是折腾党,推荐试一试,就是之后升级之类的可能麻烦一些。

kubespray
最推荐的方案,有kops的集成度(还差一些,但是该有的都有了),升级方便。只要对它不爽,随时可以fork一份,按照自己意愿进行修改。

kubespray是一个基于Ansible的部署方案,所以部署过程大家都能看得懂(如果你看不懂,请问你们公司还需要人吗?我这个小研发最近打算转运维)

操作系统支持绝大部分基于systemd的系统,什么Container Linux/Debian/Ubuntu/CentOS/RHEL/Fedora/CentOS Atomic/openSUSE 支持绝大部分的云平台(阿里云,腾讯云什么的,目前还不支持。),也支持OpenStack,vSphere等虚拟化方案。所以自建机房什么的也完全不用担心啦。

kubespray也为我们准备好了高可用方案,支持绝大部分网络插件,DNS也支持很多类型,你可以根据自己的需要选择。

文档上,目前也很完整。国内如果想要部署,仅仅需要写一下部署配置,声明一些镜像地址(替换从国外拉镜像的尴尬)。就可以愉快的一键执行了。

总结
我们对比了一下目前的主流方案,可以发现,目前灵活度,集成度上,kubespray做的都非常好。所以这也就是为什么我们选择使用kubespray的原因了。也非常推荐大家试一试。当然还有很多人写过不同的部署方案,大家都可以参考。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/675494.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号