Kubernetes 1.13 完全入门 (7) Health Check

Submitted by Lizhe on Wed, 01/09/2019 - 17:00

每个容器启动时都会执行一个进程, 此进程由Dockerfile的CMD 或 ENTRYPOINT 指定.

如果这个进程退出时返回码为 非零 , 则认为容器发生故障, Kubernetes 就会根据 restartPolicy 重启容器

例如启动tomcat出现了错误, 那么tomcat所在的容器就会被重启

[root@master ~]# cat hcStartFaile.yaml 

apiVersion: v1

kind: Pod

metadata:

  labels:

    test: healthcheck

  name: healthcheck

spec:

  restartPolicy: OnFailure

  containers:

  - name: healthcheck

Kubernetes 1.13 完全入门 (6) Service

Submitted by Lizhe on Wed, 01/09/2019 - 15:46

在Kubernetes中, service从逻辑上代表了一组 Pod , 具体是哪些 Pod 则是由 Label 来挑选的.

这也是为什么在创建一个service的时候需要 selector, 访问这个service实际上就是访问这组 Pod

[root@master ~]# cat getip-svc.yaml 

apiVersion: v1

kind: Service

metadata: 

  name: getip-service

spec:

  type: NodePort

  ports:

    - port: 30009

      nodePort: 30009

      targetPort: 30009

  selector: 

Kubernetes 1.13 完全入门 (5) DaemonSet and Job

Submitted by Lizhe on Wed, 01/09/2019 - 09:45

DaemonSet

Deployment 和 RC 部署的Pod会分布在各个Node上, 每个Node都可能运行好几个副本.

DaemonSet 的不同之处在于, 每个Node上最多只能运行一个副本

典型的应用场景有:

1. 存储

2. 日志

3. 监控

[root@master ~]# cat getip-daemon.yaml 

apiVersion: extensions/v1beta1

kind: DaemonSet

metadata:

  name: getip-daemon

spec:

  template:

    metadata:

      labels:

        app: getip-daemon

    spec:

Kubernetes 1.13 完全入门 (4) Controller -- Deployment and rollout

Submitted by Lizhe on Mon, 01/07/2019 - 18:07

Deployment同样为Kubernetes的一个核心内容,主要职责同样是为了保证pod的数量和健康,90%的功能与Replication Controller完全一样,可以看做新一代的Replication Controller。但是,它又具备了Replication Controller之外的新特性:

  • Replication Controller全部功能:Deployment继承了上面描述的Replication Controller全部功能。

  • 事件和状态查看:可以查看Deployment的升级详细进度和状态。

  • 回滚:当升级pod镜像或者相关参数的时候发现问题,可以使用回滚操作回滚到上一个稳定的版本或者指定的版本。

  • 版本记录: 每一次对Deployment的操作,都能保存下来,给予后续可能的回滚使用。

Kubernetes 1.13 完全入门 (3) Controller -- Hroizontal Pod Autoscaler and Rolling update

Submitted by Lizhe on Mon, 01/07/2019 - 10:54

 

Kubernetes 通过Controller来管理Pod.

Controller中定义了Pod的部署特性, 例如有几个副本,在什么样的Node上运行等.

1. ReplicaSet

2. Deployment

3. DaemonSet

4. StatefuleSet

5. Job

下面的内容里我们先使用ReplicaSet来演示如何使用Hroizontal Pod Autoscaler 和 Rolling update

在下一个例子里我们再尝试使用Deployment

Kubernetes 1.13 完全入门 (2) Dashboard 的安装使用

Submitted by Lizhe on Fri, 01/04/2019 - 14:26

 

 


 

安装:

1. 编辑kubernetes-dashboard.yaml

kubernetes-dashboard.yaml

 

 


 

# Copyright 2017 The Kubernetes Authors.

#

# Licensed under the Apache License, Version 2.0 (the "License");

# you may not use this file except in compliance with the License.

# You may obtain a copy of the License at

#

#     http://www.apache.org/licenses/LICENSE-2.0

Kubernetes 1.13 完全入门 (1) 安装

Submitted by Lizhe on Thu, 01/03/2019 - 10:24

 

主要提示: 在开始安装之前, 你需要科学上网, 否则会出现各种各样奇怪的问题, 不能科学上网我建议出门左转

之前尝试了1.5版本之后最近又尝试了一下1.13的最新版, 实际上我并没有觉得kubeadm有多好用, 反而是给自己找了不少麻烦

内容主要参考 https://www.kubernetes.org.cn/4956.html

另外我会额外记录安装过程中的心得和遇到的问题

这里我使用了3台vagrant虚拟机, 安装了 7.4 版本的centos , 之前一直是使用7.1版本, 不过7.1版本缺少一些ipvs模块, 这里建议直接使用更高一点的版本, 7.3(含) 以上版本应该都可以

Kubernetes (6) Cluster IP

Submitted by Lizhe on Fri, 12/28/2018 - 12:09

之前的例子里我们试了 nodeport , 但是这种用法局限性太大了, 以下内容里让我们试试clusterip

首先我本机上的 services 是这样的

kubectl get service -o wide

[root@localhost ~]# kubectl get service -o wide

NAME                    CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE       SELECTOR

kubernetes              10.254.0.1       <none>        443/TCP          2d        <none>

sccli-cluster-service   10.254.134.215   <none>        9999/TCP         12m       app=sccli

Kubernetes (5) dashboard

Submitted by Lizhe on Wed, 12/26/2018 - 17:58

 

docker pull gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.1

 

kubectl  create -f  dashboard.yaml

 

kubectl create -f  dashboardsvc.yaml 

 

[root@localhost ~]# cat dashboard.yaml 

apiVersion: extensions/v1beta1

kind: Deployment

metadata:

# Keep the name in sync with image version and

# gce/coreos/kube-manifests/addons/dashboard counterparts

Kubernetes (4) 创建覆盖网络 Flannel

Submitted by Lizhe on Wed, 12/26/2018 - 15:38

 

在master、node上均执行如下命令,进行安装

yum install flannel

master、node上均编辑/etc/sysconfig/flanneld

# Flanneld configuration options

 

# etcd url location.  Point this to the server where etcd runs

FLANNEL_ETCD_ENDPOINTS="http://172.28.128.4:2379"

 

# etcd config key.  This is the configuration key that flannel queries

# For address range assignment