`

[转]k8s 1.4 新版本部署

阅读更多

k8s 1.4 新版本部署

测试环境:

node-1: 10.6.0.140
node-2: 10.6.0.187
node-3: 10.6.0.188

 


kubernetes 集群,包含 master 节点,与 node 节点。

 

hostnamectl --static set-hostname hostname

10.6.0.140 - k8s-master
10.6.0.187 - k8s-node-1
10.6.0.188 - k8s-node-2

 


配置 /etc/hosts

添加

10.6.0.140 k8s-master
10.6.0.187 k8s-node-1
10.6.0.188 k8s-node-2

 

部署:

一、安装k8s

yum install -y socat

 

复制代码
------------------------------------------------------
cat <<EOF> /etc/yum.repos.d/k8s.repo
[kubelet]
name=kubelet
baseurl=http://files.rm-rf.ca/rpms/kubelet/
enabled=1
gpgcheck=0
EOF
------------------------------------------------------
复制代码

 

yum makecache

yum install -y kubelet kubeadm kubectl kubernetes-cni

 

由于 google 被墙, 所以使用 kubeadm init 创建 集群 的时候会出现卡住

国内已经有人将镜像上传至 docker hub 里面了

我们直接下载:

复制代码
docker pull chasontang/kube-proxy-amd64:v1.4.0
docker pull chasontang/kube-discovery-amd64:1.0
docker pull chasontang/kubedns-amd64:1.7
docker pull chasontang/kube-scheduler-amd64:v1.4.0
docker pull chasontang/kube-controller-manager-amd64:v1.4.0
docker pull chasontang/kube-apiserver-amd64:v1.4.0
docker pull chasontang/etcd-amd64:2.2.5
docker pull chasontang/kube-dnsmasq-amd64:1.3
docker pull chasontang/exechealthz-amd64:1.1
docker pull chasontang/pause-amd64:3.0
复制代码

 

下载以后使用 docker tag 命令将其做别名改为 gcr.io/google_containers

复制代码
docker tag chasontang/kube-proxy-amd64:v1.4.0  gcr.io/google_containers/kube-proxy-amd64:v1.4.0
docker tag chasontang/kube-discovery-amd64:1.0 gcr.io/google_containers/kube-discovery-amd64:1.0
docker tag chasontang/kubedns-amd64:1.7  gcr.io/google_containers/kubedns-amd64:1.7
docker tag chasontang/kube-scheduler-amd64:v1.4.0  gcr.io/google_containers/kube-scheduler-amd64:v1.4.0
docker tag chasontang/kube-controller-manager-amd64:v1.4.0  gcr.io/google_containers/kube-controller-manager-amd64:v1.4.0
docker tag chasontang/kube-apiserver-amd64:v1.4.0  gcr.io/google_containers/kube-apiserver-amd64:v1.4.0
docker tag chasontang/etcd-amd64:2.2.5  gcr.io/google_containers/etcd-amd64:2.2.5
docker tag chasontang/kube-dnsmasq-amd64:1.3  gcr.io/google_containers/kube-dnsmasq-amd64:1.3
docker tag chasontang/exechealthz-amd64:1.1  gcr.io/google_containers/exechealthz-amd64:1.1
docker tag chasontang/pause-amd64:3.0  gcr.io/google_containers/pause-amd64:3.0
复制代码

 

清除原来下载的镜像

复制代码
docker rmi chasontang/kube-proxy-amd64:v1.4.0
docker rmi chasontang/kube-discovery-amd64:1.0
docker rmi chasontang/kubedns-amd64:1.7
docker rmi chasontang/kube-scheduler-amd64:v1.4.0
docker rmi chasontang/kube-controller-manager-amd64:v1.4.0
docker rmi chasontang/kube-apiserver-amd64:v1.4.0
docker rmi chasontang/etcd-amd64:2.2.5
docker rmi chasontang/kube-dnsmasq-amd64:1.3
docker rmi chasontang/exechealthz-amd64:1.1
docker rmi chasontang/pause-amd64:3.0
复制代码

 

启动 kubelet

systemctl enable kubelet
systemctl start kubelet

 

 

利用 kubeadm 创建 集群 

复制代码
[root@k8s-master ~]#kubeadm init --api-advertise-addresses=10.6.0.140 --use-kubernetes-version v1.4.0

<master/tokens> generated token: "eb4d40.67aac8417294a8cf" <master/pki> created keys and certificates in "/etc/kubernetes/pki" <util/kubeconfig> created "/etc/kubernetes/kubelet.conf" <util/kubeconfig> created "/etc/kubernetes/admin.conf" <master/apiclient> created API client configuration <master/apiclient> created API client, waiting for the control plane to become ready <master/apiclient> all control plane components are healthy after 10.304645 seconds <master/apiclient> waiting for at least one node to register and become ready <master/apiclient> first node has registered, but is not ready yet <master/apiclient> first node has registered, but is not ready yet <master/apiclient> first node has registered, but is not ready yet <master/apiclient> first node has registered, but is not ready yet <master/apiclient> first node has registered, but is not ready yet <master/apiclient> first node is ready after 3.004762 seconds <master/discovery> created essential addon: kube-discovery, waiting for it to become ready <master/discovery> kube-discovery is ready after 4.002661 seconds <master/addons> created essential addon: kube-proxy <master/addons> created essential addon: kube-dns Kubernetes master initialised successfully! You can now join any number of machines by running the following on each node: kubeadm join --token 8609e3.c2822cf312e597e1 10.6.0.140
复制代码

 

查看 kubelet 状态

systemctl status kubelet

 

子节点 启动 kubelet 首先必须启动 docker

systemctl enable kubelet
systemctl start kubelet

 

下面子节点加入集群

kubeadm join --token 8609e3.c2822cf312e597e1 10.6.0.140

 

查看 kubelet 状态

systemctl status kubelet

 

查看集群状态

[root@k8s-master ~]#kubectl get node
NAME         STATUS    AGE
k8s-master   Ready     1d
k8s-node-1   Ready     1d
k8s-node-2   Ready     1d

 

此时可看到 三个节点 都已经 Ready , 但是其实 Pod 只会运行在 node 节点

如果需要所有节点,包括master 也运行 Pod 需要运行

 kubectl taint nodes --all dedicated-

 

 

安装 POD 网络

这里使用官方推荐的 weave 网络

kubectl apply -f https://git.io/weave-kube

 

查看所有pod 状态

复制代码
[root@k8s-master ~]#kubectl get pods --all-namespaces
NAMESPACE     NAME                                 READY     STATUS    RESTARTS   AGE
kube-system   etcd-k8s-master                      1/1       Running   1          49m
kube-system   kube-apiserver-k8s-master            1/1       Running   1          48m
kube-system   kube-controller-manager-k8s-master   1/1       Running   1          48m
kube-system   kube-discovery-1971138125-0oq58      1/1       Running   1          49m
kube-system   kube-dns-2247936740-ojzhw            3/3       Running   3          49m
kube-system   kube-proxy-amd64-1hhdf               1/1       Running   1          49m
kube-system   kube-proxy-amd64-4c2qt               1/1       Running   0          47m
kube-system   kube-proxy-amd64-tc3kw               1/1       Running   1          47m
kube-system   kube-scheduler-k8s-master            1/1       Running   1          48m
kube-system   weave-net-9mrlt                      2/2       Running   2          46m
kube-system   weave-net-oyguh                      2/2       Running   4          46m
kube-system   weave-net-zc67d                      2/2       Running   0          46m
复制代码

 

 

使用 GlusterFS 作为 volume

官方详细说明:

https://github.com/kubernetes/kubernetes/tree/master/examples/volumes/glusterfs


1. 配置 GlusterFS 集群,以及设置好 GlusterFS 的 volume , node 客户端安装 glusterfs-client


2. k8s-master 创建一个 endpoints.

我这边 GlusterFS 有3个节点

vi glusterfs-endpoints.json

# 每一个 GlusterFS 节点,必须写一列. 端口随意填写(1-65535)

复制代码
{
  "kind": "Endpoints",
  "apiVersion": "v1",
  "metadata": {
    "name": "glusterfs-cluster"
  },
  "subsets": [
    {
      "addresses": [
        {
          "ip": "10.6.0.140"
        }
      ],
      "ports": [
        {
          "port": 1
        }
      ]
    },
    {
      "addresses": [
        {
          "ip": "10.6.0.187"
        }
      ],
      "ports": [
        {
          "port": 1
        }
      ]
    },
    {
      "addresses": [
        {
          "ip": "10.6.0.188"
        }
      ],
      "ports": [
        {
          "port": 1
        }
      ]
    }
  ]
}
复制代码

 

创建 endpoints

[root@k8s-master ~]#kubectl create -f glusterfs-endpoints.json 
endpoints "glusterfs-cluster" created

 

查看 endpoints

[root@k8s-master ~]#kubectl get endpoints
NAME                ENDPOINTS                                AGE
glusterfs-cluster   10.6.0.140:1,10.6.0.187:1,10.6.0.188:1   37s

 

3. k8s-master 创建一个 service.

vi glusterfs-service.json

# 这里注意之前填写的 port

复制代码
{
  "kind": "Service",
  "apiVersion": "v1",
  "metadata": {
    "name": "glusterfs-cluster"
  },
  "spec": {
    "ports": [
      {"port": 1}
    ]
  }
}
复制代码

 

创建 service 

[root@k8s-master ~]#kubectl create -f glusterfs-service.json 
service "glusterfs-cluster" created

 

查看 service

[root@k8s-master ~]#kubectl get service
NAME                CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
glusterfs-cluster   100.71.255.174   <none>        1/TCP     14s

 

 

4. k8s-master 创建一个 Pod 来测试挂载

vi glusterfs-pod.json

# glusterfs 下 path 配置 glusterfs volume 的名称
readOnly: true (只读) and readOnly: false

 

复制代码
{
    "apiVersion": "v1",
    "kind": "Pod",
    "metadata": {
        "name": "glusterfs"
    },
    "spec": {
        "containers": [
            {
                "name": "glusterfs",
                "image": "gcr.io/google_containers/pause-amd64:3.0",
                "volumeMounts": [
                    {
                        "mountPath": "/mnt/glusterfs",
                        "name": "glusterfsvol"
                    }
                ]
            }
        ],
        "volumes": [
            {
                "name": "glusterfsvol",
                "glusterfs": {
                    "endpoints": "glusterfs-cluster",
                    "path": "models",
                    "readOnly": false
                }
            }
        ]
    }
}
复制代码

 

查看 挂载的 volume

[root@k8s-node-2 ~]# mount | grep models
10.6.0.140:models on /var/lib/kubelet/pods/947390da-8f6a-11e6-9ade-d4ae52d1f0c9/volumes/kubernetes.io~glusterfs/glusterfsvol type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072)

 

 

 

 

 

 

 

编写一个 Deployment 的 yaml 文件

复制代码
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
          - containerPort: 80
复制代码

 

使用 kubectl create  进行创建

kubectl create -f nginx.yaml --record

 

查看 pod 

[root@k8s-master ~]#kubectl get pod
NAME                               READY     STATUS    RESTARTS   AGE
nginx-deployment-646889141-459i5   1/1       Running   0          9m
nginx-deployment-646889141-vxn29   1/1       Running   0          9m

 

查看 deployment

[root@k8s-master ~]#kubectl get deploy
NAME               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   2         2         2            2           10m

 

分享到:
评论

相关推荐

    k8s 新版本 部署 Ingress-nginx controller.doc

    部署 Ingress-nginx controller 在 k8s 新版本中的实现 Kubernetes(简称 k8s)是 Google 开发的开源容器编排系统,Ingress 是 k8s 中的一种 API 对象,用于管理集群中服务的外部访问。Ingress 可以提供负载均衡、...

    K8s搭建部署、docker部署、linux内核升级,k8s升级操作

    K8s搭建部署、docker部署、linux内核升级,k8s升级操作

    K8s集群搭建ansible部署脚本

    我个人给公司开发的使用ansible部署k8s的脚本,支持vagrant调用ansbile,和直接ansible执行两种方式。k8s二进制组件使用最新的1.23.5 部署以下模块内容包括: preinstall 安装前准备,主机环境初始化,二进制文件...

    一键安装部署k8s,博客里部署操作

    3、在脚本 install-etcd-flannel-k8s.sh 中设置 3台的IP; 4、做好master到两台node的免密登陆; 5、将安装包放在master上,直接执行bash install-etcd-flannel-k8s.sh 即可; 6、docker使用了aliyun的镜像库安装,2...

    k8s最新版本1.24.3基于containerd搭建集群,集成buildkit、nerdctl构建镜像,jenkins自动化。

    1、k8s最新版本1.24.3基于containerd搭建集群 2、集成buildkit、nerdctl工具构建镜像 3、基于Oracle JDK11,使用jlink工具精简JRE包,自定义容器镜像 4、部署基于NFS的StorageClass,作为共享存储,Docker Registry...

    二进制高可用k8s集群一键部署脚本

    "二进制高可用k8s集群一键部署脚本"是为简化k8s集群搭建过程而设计的工具,它基于阿良的二进制部署文档,旨在帮助开发者和学习者快速创建一个稳定的高可用k8s集群。 首先,了解二进制部署意味着不依赖于预打包的...

    docker容器化+k8s集群部署教程以及springboot+vue部署示例

    本文介绍VMware虚拟机下centos7操作系统中如何安装云原生 Kubernetes(k8s)集群、k8s可视化界面kuboard,以及如何利用docker容器化将springboot+vue项目在k8s集群中部署运行。

    k8s下部署rabbitmq集群部署方式

    包含k8s下部署rabbitmq集群部署方式的说明,有pv.yaml, svc.yaml, statefulset.yaml

    k8s-阿里云部署文档.docx

    k8s-阿里云部署文档.docx

    二进制部署k8s高可用集群(二进制-V1.20).docx

    二进制部署k8s高可用集群(二进制-V1.20) 基于提供的文件信息,本文将对二进制部署k8s高可用集群进行详细的知识点总结。 1. 生产环境部署 K8s 集群的两种方式 在生产环境中,部署 K8s 集群有两种方式:一种是...

    k8s部署redis所需要的配置文件

    在Kubernetes(k8s)环境中部署Redis集群是一项常见的任务,尤其当需要高可用性和数据持久化时。这里我们将深入探讨如何使用Redis集群,并结合Ceph作为持久化存储的配置方法。 首先,Redis是一个高性能的键值存储...

    二进制部署k8s-1.23.15完整详细部署包,包含yaml和image

    k8s1.23.15版本二进制部署时所有工具包集合免费下载,自取 对应文章:k8s1.23.15版本二进制部署/扩容及高可用架构详解(https://blog.csdn.net/weixin_43860781/article/details/128507394?spm=1001.2014.3001.5502...

    k8s安装教程和部署的详细说明

    本文档采用k8s v1.10.0二进制的集群部署方式,主要更改 使用kube-router 代理kube-proxy,使用ingress-nginx做边缘负载,使用haproxy+heartbeat实现高可用 本文档持续更新,后续将继续深入了解prometheus,helm等组件...

    阿里云k8s 一键部署nacos2.0.3

    在本场景中,我们将讨论如何在阿里云k8s集群上一键部署Nacos 2.0.3版本。 首先,了解Kubernetes的基本概念至关重要。Kubernetes通过Pods、Services、Deployments、ConfigMaps和Secrets等核心对象来组织和管理应用。...

    k8s下部署nginx集群部署方式(相关yaml文件的编写和说明)

    在Kubernetes(k8s)环境下,部署Nginx集群是一项常见的任务,它涉及到容器编排、服务发现、负载均衡等多个重要概念。本篇将详细阐述如何使用YAML文件进行Nginx集群的配置和部署。 首先,让我们了解YAML文件在k8s中...

    k8s环境部署dvwa靶机

    k8s环境部署dvwa靶机

    k8s部署influxdb完整yaml部署文件.7z

    在Kubernetes(k8s)集群中部署InfluxDB是一个常见的需求,特别是在需要高效存储和处理时间序列数据的场景下。InfluxDB是一款专为监控、指标收集和分析设计的开源时序数据库。本篇文章将详细讲解如何使用提供的YAML...

    在k8s中部署prometheus的镜像

    在Kubernetes(k8s)集群中部署Prometheus是一个常见的监控解决方案,Prometheus是一款强大的开源监控和警报系统,能够实时收集和分析时间序列数据。本文将详细介绍如何在k8s环境中部署Prometheus的镜像。 一、...

    内网环境k8s离线安装部署

    在无法连接互联网的内网环境部署k8s详细教程。每步骤详细说明,纯傻瓜式。

Global site tag (gtag.js) - Google Analytics