Kubernetes 集群搭建主要是分三部
1虚拟机集群搭建
我采用virtualbox centos7搭建, 由于主机是一个win10, 所以所有的搭建都将在虚拟机中进行.
虚拟网络搭建采用NAT地址转换+Host-Only ,可以参考前面的文章 http://blog.csdn.net/billwang_guoyun/article/details/78255583
搭建好后的结构如下:
ip | 机器名 | 系统 | |
192.168.56.100 | master | centos7 | |
192.168.56.102 | million2 | centos7 | |
192.168.56.103 | million3 | centos7 | |
192.168.56.104 | million4 | centos7 | |
192.168.56.105 | million5 | centos7 | |
192.168.56.106 | Registry | ubuntu |
2 kubernetes 安装
wget http://mirrors.aliyun.com/repo/Centos-7.repo wget http://mirrors.aliyun.com/repo/epel-7.repo
[root@master ~] yum -y install kubernetes etcd
[root@master ~]# cd /etc/kubernetes/
[root@master kubernetes]# ls
apiserver config controller-manager kubelet proxy scheduler
修改master apiserver 文件
[root@master kubernetes]# cat apiserver|grep -v "^#"
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_API_ARGS=""
[root@master kubernetes]# cat config|grep -v "^#"
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://192.168.56.100:8080"
[root@master kubernetes]# ls
apiserver config controller-manager kubelet proxy scheduler
修改master apiserver 文件
[root@master kubernetes]# cat apiserver|grep -v "^#"
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_API_ARGS=""
[root@master kubernetes]# cat config|grep -v "^#"
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow-privileged=false"
KUBE_MASTER="--master=http://192.168.56.100:8080"
修改master etcd配置文件
ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:2379"
ETCD_ADVERTISE_CLIENT_URLS="127.0.0.1:2379"
master 启动kubernetes 和 etcd 服务
systemctl start etcd.service
systemctl start kube-apiserver.service
systemctl start kube-controller-manager.service
systemctl start kube-scheduler.service
systemctl start kube-apiserver.service
systemctl start kube-controller-manager.service
systemctl start kube-scheduler.service
million节点配置:
同上安装kubernetes
然后启动
systemctl start kubectl.service
systemctl start kube-proxy.service
systemctl start kube-proxy.service
现在回到主机查看主机情况:
[root@master kubernetes]# kubectl get nodes
NAME STATUS AGE
192.168.56.102 Ready 1h
192.168.56.103 Ready 1h
192.168.56.104 Ready 1h
192.168.56.105 Ready 1h
[root@master kubernetes]#
NAME STATUS AGE
192.168.56.102 Ready 1h
192.168.56.103 Ready 1h
192.168.56.104 Ready 1h
192.168.56.105 Ready 1h
[root@master kubernetes]#
小结:这里主要遇到下面几个问题
1 注意配置etcd的时候配置127.0.0.1, 不然会报报错
2 当etcd数据想彻底删除然后重新开生成的时候可以rm -rf /var/lib/etcd/default.etcd/member/*, 我不知道为什么我的etcd数据坏了不能访问了, 然后就删除后重加数据就好了.
3 我开始其实是想建一个混合集群的(包含ubuntu,freebsd,solaris,centos), 但是发现比较麻烦, 后来就放弃了, 只做了centos
3 使用kubernetes
创建一个pod:
apiVersion: v1
kind: Pod
metadata: #元数据信息
name: nginx #kubectl get pods 和 登陆容器显示的名字
labels: #标签
purpose: nginx1 #标签,可以作为查询条件 kubectl get pods -l purpose=nginx1
spec: #规格
containers: #容器
- name: container-nginx #容器名称
image: docker.io/nginx #使用的镜像
env: #设置env,登陆到容器中查看环境变量, DEME_GREETING 的值是 "hello from the enviroment"
- name: "test"
value: "hello from the environment"
ports:
- containerPort: 80
protocol: TCP
resources:
requests:
memory: "100Mi"
cpu: "250m"
limits:
memory: "200Mi"
cpu: "1"
kind: Pod
metadata: #元数据信息
name: nginx #kubectl get pods 和 登陆容器显示的名字
labels: #标签
purpose: nginx1 #标签,可以作为查询条件 kubectl get pods -l purpose=nginx1
spec: #规格
containers: #容器
- name: container-nginx #容器名称
image: docker.io/nginx #使用的镜像
env: #设置env,登陆到容器中查看环境变量, DEME_GREETING 的值是 "hello from the enviroment"
- name: "test"
value: "hello from the environment"
ports:
- containerPort: 80
protocol: TCP
resources:
requests:
memory: "100Mi"
cpu: "250m"
limits:
memory: "200Mi"
cpu: "1"
[root@master ~]# kubectl create -f pod.yaml
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 56m
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 56m
这里我遇到一个问题, 当kubernet 从docker.io去pull的时候需要docker登陆,想去docker.com注册一个账号:
然后 在每台million上执行 docker login