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
```