kubernetes我爱编程

1,k8s快速入门

2018-05-28  本文已影响434人  ROCK_杰哥

1,Kubernetes是什么?
他是一个全新的基于容器技术额分布式架构的方案,是谷歌Borg的一个开源版本。目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化。
2,Kubernetes的基本概念
pod:最小的单元,运行一个或者多个容器
Node:可以运行一个或者多个pod
Service:服务,是分布式集群架构的核心,一个Service对象拥有如下特征:

1拥有一个唯一的指定的名字
2拥有一个虚拟的IP和端口号
3能够提供某种远程服务的能力
4被映射到了提供这种服务能力的一组容器应用上

3,快速入门
一个纯净的64位的Centos7,开始
为了测试,关闭防火墙

systemctl disable firewalld
systemctl stop firewalld

安装etcd和Kubernetes

yum install -y etcd kubernetes
systemctl start etcd
systemctl start docker
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl start kubelet
systemctl start kube-proxy

下载mysql镜像

docker pull mysql

编写mysql-rc.yaml

apiVersion: v1
kind: ReplicationController                   #副本控制器RC
metadata:
  name: mysql                                         #RC的名称,全局唯一
spec:
  replicas: 1                                               #pod副本期待数量
  selector:
    app: mysql                                              #符合目标的pod拥有此标签
  template:                                                  #根据此模板创建pod的副本
    metadata:
      labels:
        app: mysql                           
    spec:
      containers:                                              #pod内容器的定义
      - name: mysql                                                   #容器的名称
        image: mysql                                                      #容器的镜像
        ports:
        - containerPort: 3306                                          #容器应用监听的端口
        env:                                                                            #注入容器内的环境变量
        - name: MYSQL_ROOT_PASSWORD                             
          value: "123456"

创建

kubectl create -f mysql-rc.yaml


[root@localhost rc]# kubectl get rc
NAME      DESIRED   CURRENT   READY     AGE
mysql     1         1         0         24m


[root@localhost rc]# kubectl get pod
NAME          READY     STATUS    RESTARTS   AGE
mysql-r832v   1/1       Running   0          1m

这样mysql就已经启动起来了
成功标识:


image.png
image.png

出现的问题:

kubectl get pods
No resources found

修改办法:

vi /etc/kubernetes/apiserver

修改:KUBE_ADMISSION_CONTROL

去掉ServiceAccount,保存退出
systemctl restart kube-apiserver
```
还有一个比较常见的问题就是,kubectl get pods   中status 中一直是ContainerCreating

```
###找到pod-infrastructure
docker search pod-infrastructure
 docker pull docker.io/zengshaoyong/pod-infrastructure

vi /etc/kubernetes/kubelet

###修改如下:
KUBELET_POD_INFRA_CONTAINER="docker.io/zengshaoyong/pod-infrastructure"
###重启kubelet
systemctl restart kubelet
```
看pod日志可以发现****pause:2.0这个pull不下来,所以手动的pull下来,再利用tag修改name就可以了
```
docker search pause:2.0
docker pull docker.io/google/pause
docker tag f9d5de079539 gcr.io/google_containers/pause:2.0


docker search pause-amd64
docker pull docker.io/mirrorgooglecontainers/pause-amd64
docker tag 98aed6f4098f gcr.io/google_containers/pause-amd64:3.0

```

问题:外网访问不到,应该接受端口转发
```
iptables -P FORWARD ACCEPT
```
上一篇下一篇

猜你喜欢

热点阅读