`
8366
  • 浏览: 810134 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

K8S hello world

    博客分类:
  • K8S
 
阅读更多

 

我的实验环境是redhat 7.1 + K8S all in one + binary install

 

组件 ip
etcd; kube-apiserver; kube-controller-manager; kube-scheduler 9.21.62.200
kube-proxy; kubelet 9.21.62.200

 

 

1. 安装docker

https://get.docker.com/rpm/1.7.1/centos-7/RPMS/x86_64/docker-engine-1.7.1-1.el7.centos.x86_64.rpm

2. 安装etcd

https://github.com/coreos/etcd/releases/download/v2.0.11/etcd-v2.0.11-linux-amd64.tar.gz

3. 安装K8S

   1) download k8s from https://github.com/GoogleCloudPlatform/kubernetes/releases/download/v0.16.1/kubernetes.tar.gz

   2) install tree

 [root@xlhu2 bin]# ll /root/k8s/
total 101360
-rw-r--r-- 1 root root   4735688 Jul 14  2015 docker-engine-1.7.1-1.el7.centos.x86_64.rpm
drwxr-xr-x 3  501 games      117 Jan 21 02:53 etcd-v0.4.6-linux-amd64
-rw-r--r-- 1 root root   6022487 Oct 29  2014 etcd-v0.4.6-linux-amd64.tar.gz
drwxr-xr-x 7 root wheel      130 Jan 21 03:05 kubernetes
-rw-r--r-- 1 root root  93016034 May  1  2015 kubernetes.tar.gz
-rw-r--r-- 1 root root       714 Jan 22 03:00 replicationcontroller.json
-rw-r--r-- 1 root root       409 Jan 22 02:42 test-pod.json
-rw-r--r-- 1 root root       175 Jan 22 03:14 test-svc.json
[root@xlhu2 bin]#

      3)  运行kube-apiserver

   

./kube-apiserver --address=0.0.0.0  --insecure-port=8080 --portal_net="127.0.0.0/16" --log_dir=/var/log/kube  --kubelet_port=10250 --v=0  --logtostderr=false --etcd_servers=http://127.0.0.1:4001 --allow_privileged=false
 

 

    4) 运行kube-controller-manager

 

./kube-controller-manager  --v=0 --logtostderr=false --log_dir=/var/log/kube  --master=127.0.0.1:8080 --machines=127.0.0.1
 

 

    5) 运行kube-scheduler

   

./kube-scheduler  --master=127.0.0.1:8080  --v=0  --log_dir=/var/log/kube
  

 

   6) 运行kube-proxy

  

./kube-proxy  --logtostderr=false  --v=0  --master=http://127.0.0.1:8080 
   

 

   7) 运行kubelet

   

./kubelet  --logtostderr=false  --v=0  --allow-privileged=false   --log_dir=/var/log/kube  --address=127.0.0.1  --port=10250  --hostname_override=127.0.0.1   --api_servers=http://127.0.0.1:8080
    8) 创建pod

 

      a. create json file
{
  "id": "fedoraapache",
  "kind": "Pod",
  "apiVersion": "v1beta1",
  "desiredState": {
    "manifest": {
      "version": "v1beta1",
      "id": "fedoraapache",
      "containers": [{
        "name": "fedoraapache",
        "image": "fedora/apache",
        "ports": [{
          "containerPort": 80,
          "hostPort": 8080
        }]
      }]
    }
  },
  "labels": {
    "name": "fedoraapache"
  }
}
    b.  create pod
./kubectl create -f test-pod.json
    c. check result
   
[root@xlhu2 bin]# cd /root/k8s/kubernetes/server/kubernetes/server/bin
[root@xlhu2 bin]# ./kubectl get pods
POD            IP            CONTAINER(S)   IMAGE(S)        HOST                  LABELS              STATUS    CREATED   MESSAGE
fedoraapache   172.17.0.39                                  127.0.0.1/127.0.0.1   name=fedoraapache   Running   2 hours   
                             fedoraapache   fedora/apache                                             Running   2 hours   
[root@xlhu2 bin]# docker ps
CONTAINER ID        IMAGE                                  COMMAND             CREATED             STATUS              PORTS                  NAMES
7dec2cb57b83        fedora/apache                          "/run-apache.sh"    2 hours ago         Up 2 hours                                 k8s_fedoraapache.a1850cda_fedoraapache_default_c1f162b6-c29a-11e5-a9f3-525400a5a3b1_b1512d92   
2b452bfc0bab        gcr.io/google_containers/pause:0.8.0   "/pause"            2 hours ago         Up 2 hours          0.0.0.0:8090->80/tcp   k8s_POD.f60e046f_fedoraapache_default_c1f162b6-c29a-11e5-a9f3-525400a5a3b1_9aa22d2f            
[root@xlhu2 bin]# curl localhost:8090
Apache
[root@xlhu2 bin]# 
   
   9) 创建ReplicationController
 Replication Controller是Kubernetes系统中最有用的功能,实现复制多个Pod副本,往往一个应用需要多个Pod来支撑,并且可以保证其复制的副本数,即使副本所调度分配的主宿机出现异常,通过Replication Controller可以保证在其它主宿机启用同等数量的Pod。Replication Controller可以通过repcon模板来创建多个Pod副本,同样也可以直接复制已存在Pod,需要通过Label selector来关联
    a. create json file
   
{
    "id": "lianjiatest.com",
    "apiVersion": "v1beta1",
    "kind": "ReplicationController",
    "desiredState": {
      "replicas": 5,
      "replicaSelector": {"name": "liutest"},
      "podTemplate": {
        "desiredState": {
           "manifest": {
             "version": "v1beta1",
             "id": "apacheserver",
             "containers": [{
               "name": "apachetest",
               "image": "fedora/apache",
               "imagePullPolicy": "PullIfNotPresent",
               "ports": [{
                   "containerPort": 80
               }]
             }]
           }
         },
         "labels": {"name": "liutest"}
        }},
    "labels": {"name": "replicationtest"}
  }
      b.  create 5 个副本的  pod
     
./kubectl create -f replicationcontroller.json
 
    c. check result
    
[root@xlhu2 bin]# ./kubectl create -f /root/k8s/replicationcontroller.json 
replicationControllers/lianjiatest.com
[root@xlhu2 bin]# ./kubectl get pods
POD                     IP            CONTAINER(S)   IMAGE(S)        HOST                  LABELS              STATUS    CREATED     MESSAGE
fedoraapache            172.17.0.39                                  127.0.0.1/127.0.0.1   name=fedoraapache   Running   2 hours     
                                      fedoraapache   fedora/apache                                             Running   2 hours     
lianjiatest.com-0suix                                                127.0.0.1/            name=liutest        Pending   6 seconds   
                                      apachetest     fedora/apache                                                       
lianjiatest.com-2k5pl   172.17.0.40                                  127.0.0.1/127.0.0.1   name=liutest        Running   6 seconds   
                                      apachetest     fedora/apache                                             Running   4 seconds   
lianjiatest.com-otn5w   172.17.0.43                                  127.0.0.1/127.0.0.1   name=liutest        Running   6 seconds   
                                      apachetest     fedora/apache                                             Running   2 seconds   
lianjiatest.com-p4nim   172.17.0.42                                  127.0.0.1/127.0.0.1   name=liutest        Running   6 seconds   
                                      apachetest     fedora/apache                                             Running   3 seconds   
lianjiatest.com-t7hn1   172.17.0.41                                  127.0.0.1/127.0.0.1   name=liutest        Running   6 seconds   
                                      apachetest     fedora/apache                                             Running   3 seconds   
[root@xlhu2 bin]# docker ps
CONTAINER ID        IMAGE                                  COMMAND             CREATED             STATUS              PORTS                  NAMES
2abbc1781b99        fedora/apache                          "/run-apache.sh"    11 seconds ago      Up 8 seconds                               k8s_apachetest.75f50b88_lianjiatest.com-0suix_default_e4ddc3de-c2ac-11e5-b1dd-525400a5a3b1_0771d52c   
4ab5778a9ad6        fedora/apache                          "/run-apache.sh"    11 seconds ago      Up 8 seconds                               k8s_apachetest.75f50b88_lianjiatest.com-otn5w_default_e4dd3625-c2ac-11e5-b1dd-525400a5a3b1_b2d65e5d   
5ad5b3b60d38        fedora/apache                          "/run-apache.sh"    11 seconds ago      Up 9 seconds                               k8s_apachetest.75f50b88_lianjiatest.com-p4nim_default_e4ddf207-c2ac-11e5-b1dd-525400a5a3b1_9ad86417   
ab616eacacf4        fedora/apache                          "/run-apache.sh"    12 seconds ago      Up 9 seconds                               k8s_apachetest.75f50b88_lianjiatest.com-t7hn1_default_e4ddfce7-c2ac-11e5-b1dd-525400a5a3b1_3568fa44   
a9be9c705726        fedora/apache                          "/run-apache.sh"    12 seconds ago      Up 10 seconds                              k8s_apachetest.75f50b88_lianjiatest.com-2k5pl_default_e4dd545e-c2ac-11e5-b1dd-525400a5a3b1_6140f4dc   
99c857266bd6        gcr.io/google_containers/pause:0.8.0   "/pause"            13 seconds ago      Up 10 seconds                              k8s_POD.d41d03ce_lianjiatest.com-0suix_default_e4ddc3de-c2ac-11e5-b1dd-525400a5a3b1_265b8238          
8a529706a844        gcr.io/google_containers/pause:0.8.0   "/pause"            13 seconds ago      Up 10 seconds                              k8s_POD.d41d03ce_lianjiatest.com-otn5w_default_e4dd3625-c2ac-11e5-b1dd-525400a5a3b1_653ca41d          
5dea06978306        gcr.io/google_containers/pause:0.8.0   "/pause"            13 seconds ago      Up 11 seconds                              k8s_POD.d41d03ce_lianjiatest.com-p4nim_default_e4ddf207-c2ac-11e5-b1dd-525400a5a3b1_8e2ec53c          
20dab1b797db        gcr.io/google_containers/pause:0.8.0   "/pause"            13 seconds ago      Up 11 seconds                              k8s_POD.d41d03ce_lianjiatest.com-t7hn1_default_e4ddfce7-c2ac-11e5-b1dd-525400a5a3b1_17e70e3b          
b32e94be7ac4        gcr.io/google_containers/pause:0.8.0   "/pause"            13 seconds ago      Up 11 seconds                              k8s_POD.d41d03ce_lianjiatest.com-2k5pl_default_e4dd545e-c2ac-11e5-b1dd-525400a5a3b1_64468c87          
7dec2cb57b83        fedora/apache                          "/run-apache.sh"    2 hours ago         Up 2 hours                                 k8s_fedoraapache.a1850cda_fedoraapache_default_c1f162b6-c29a-11e5-a9f3-525400a5a3b1_b1512d92          
2b452bfc0bab        gcr.io/google_containers/pause:0.8.0   "/pause"            2 hours ago         Up 2 hours          0.0.0.0:8090->80/tcp   k8s_POD.f60e046f_fedoraapache_default_c1f162b6-c29a-11e5-a9f3-525400a5a3b1_9aa22d2f                   
[root@xlhu2 bin]# 
    OK! 即使在slave删掉其中的几个,也会迅速补充到5个~~~~
    10) create service
        Services是Kubernetes最外围的单元,通过虚拟一个访问IP及服务端口,可以访问我们定义好的Pod资源,目前的版本是通过iptables的nat转发来实现,转发的目标端口为Kube_proxy生成的随机端口
     a. create json file
    
{
  "id": "webserver",
  "kind": "Service",
  "apiVersion": "v1beta1",
  "selector": {
    "name": "liutest"
  },
  "protocol": "TCP",
  "containerPort": 80,
  "port": 8080
}
       b. create service and check result
   
[root@xlhu2 bin]# ./kubectl create -f /root/k8s/test-svc.json
services/webserver
[root@xlhu2 bin]# ./kubectl get svc
NAME            LABELS                                    SELECTOR       IP             PORT(S)
kubernetes      component=apiserver,provider=kubernetes   <none>         127.0.0.2      443/TCP
kubernetes-ro   component=apiserver,provider=kubernetes   <none>         127.0.0.1      80/TCP
webserver       <none>                                    name=liutest   127.0.33.201   8080/TCP
[root@xlhu2 bin]# curl 127.0.33.201:8080
Apache
[root@xlhu2 bin]#
 
   最后总结下注意点:
在replicationcontronllers.json中,"replicaSelector": {"name": "XXXXXX"}要与"labels": {"name": "XXXXXXX"}以及service中的"selector": {"name": "XXXXXXX"}保持一致;
 
Reference:
  http://segmentfault.com/a/119000000288679
 
 
 
分享到:
评论

相关推荐

    k8s-ci-hello-world

    标题 "k8s-ci-hello-world" 暗示了我们正在探讨的是一个与 Kubernetes (简称 k8s) 持续集成(CI)和持续部署(CD)相关的示例项目。这个项目很可能是用来演示如何在 Kubernetes 环境中设置自动化构建和部署流程的。...

    k8s:Hello world k8s

    K8S培训

    k8s-helloworld

    k8s-helloworld

    operator-helloworld.zip

    在Kubernetes(简称k8s)生态系统中,Operator是一种高级的资源管理技术,它扩展了Kubernetes的能力,允许开发者定义和管理复杂的应用服务。"operator-helloworld.zip" 提供了一个入门级的Operator示例,帮助用户...

    kubernetes权威指南例子代码,k8s 例子 hello-world

    《Kubernetes权威指南》是一本深入解析Kubernetes(简称k8s)的书籍,它为读者提供了详尽的理论知识和实践案例。"hello-world"是该书中一个基础且重要的示例,旨在帮助初学者快速理解和上手Kubernetes。在这个压缩包...

    hello-world-kubernetes

    Helow World测试Kuberenets集群 它使用ngnix作为服务器静态html页面的基础容器 Kubectl命令 kubectl apply -f部署.yaml

    k8s-istio:使用k8s istio的hello-world应用程序

    使用K8S ISTIO的Hello World应用程序 我正在使用Carl Dunkelberger的app.yaml,并且还遵循此链接启用Kubernetes Ingress 先决条件: 使用Istio部署hello应用程序的步骤: 打开MKE Web UI。 选择管理员设置。 ...

    k8s集群部署简易应用资源

    "hello"这个文件名可能是部署描述符文件,例如`hello.yaml`,它包含了k8s资源的定义。 在k8s集群中部署一个应用,通常需要以下步骤: 1. **创建Pod**:Pod是k8s中的基本运行单元,它可以包含一个或多个紧密耦合的...

    springboot-helloworld-k8s

    springboot-helloworld-k8s

    kubernetes-hello-world:Kubernetes Hello World项目

    kubernetes-hello-world Kubernetes Hello World项目

    Docker+K8S 集群环境搭建及分布式应用部署

    Docker和Kubernetes(简称K8s)是目前业界广泛使用的容器化技术和容器编排平台。Docker提供了一个轻量级的虚拟化解决方案,而Kubernetes则用于管理和自动化容器的部署、扩展和操作。本内容将对Docker和Kubernetes的...

    alexa-nodejs-k8s-helloworld:在K8S中运行的Alexa Skill

    Alexa在Kubernetes中运行 在此存储库中,您将找到转换或创建Alexa Skill作为NodeJS Express应用程序准备在Kubernetes上运行所需的所有资源。 这些是您可以在kubernetes上运行Alexa Skill的两个可能选项: ...

    mac 本机安装单机版k8s

    在Mac本机上安装单机版Kubernetes(简称k8s)是一项常见需求,尤其对于开发者和运维人员来说,这可以方便地进行本地测试和开发。在这个过程中,我们将使用Docker Desktop来集成Kubernetes环境,因为Docker Desktop为...

    hello-world-docker:docker中的hello-world

    hello-world-docker | 工程日 这是由K8S管理的Docker项目,使用詹金斯声明性管道dgoss进行Docker测试 qal / prod的URL(仅对HHN办公室开放): :

    jenkins+k8s+docker+harbor的ci、cd操作

    6.1 点击 hello World 6.2 创建单个步骤说明 6.3 比如拉取 git 仓库分支 6.3.1 点击流水线语法,跳转到流水线操作界面 6.3.2 使用 checkout,配置拉取代码仓库,并点击 6.3.3 配置 git 拉取代码 6.3.4 点击...

    simple-nodejs-k8s:一个简单的Dockerized`helloWorld` Node.js应用程序,配置为在Kubernetes集群中部署

    概述该存储库用于将带有的简单应用程序部署到 ,并在上附带。

    从零入门K8s-人人都能看懂 Pod 与容器设计模式1

    【标题】:“从零入门K8s-人人都能看懂 Pod 与容器设计模式1” 【描述】:“以此类推,容器镜像其实就是:这个操作系统的软件安装包再来看一个真实操作系统里的例子• 举例:helloworld 程序• helloworld 程序实际...

    k8s-51cto-kubeadm部署k8s1.13.0-笔记总结

    Kubernetes,简称K8s,是Google开源的一种容器编排系统,用于自动化容器化的应用程序部署、扩展和管理。本文将深入探讨使用kubeadm工具在本地环境部署Kubernetes集群1.13.0版本的过程,这是一项对于运维人员至关重要...

    kubeadm安装k8s

    kubeadm安装k8s 之前的博客记录着断断续续的问题,有很多其实是理解上的问题,比如kubelet的配置管理,如果用kubeadm来管理,就应使用apt源的方式安装k8s tools,而不是手动下载二进制文件,否则kubelet的systemctl ...

    搭建一个完整的K8S集群部署文档

    6. **创建第一个Deployment**: 创建一个简单的Deployment,如Hello World应用,以验证集群功能正常。 7. **设置Ingress和Service**: 如果需要暴露应用给外部访问,配置Ingress规则和Service。 8. **监控和日志**: ...

Global site tag (gtag.js) - Google Analytics