您的位置:首页 > 其它

在RHEL 7上安装和配置kubernetes

2016-01-02 12:30 661 查看
本案例中使用RHEL 7.2作为宿主机的操作系统,并且使用RHEL自带的kubernetes安装包。容器之间的跨主机通信网络采用flannel实现。

架构如下:



具体的步骤如下:

一. 安装配置kube-master

1. 安装kubernetes和etcd

# yum -y install kubernetes etcd


2. 编辑/etc/etcd/etcd.conf,确保etcd监听所有的IP地址,需要修改的配置如下:

ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"


3. 配置kube-aipserver,编辑/etc/kubernetes/apiserver,需要修改的配置如下:

KUBE_API_ADDRESS="--address=0.0.0.0"
KUBE_ETCD_SERVERS="--etcd_servers=http://127.0.0.1:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_ADMISSION_CONTROL="--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"

注意:如果没有配置service account,需要把KUBE_ADMISSION_CONTROL中的ServiceAccount去掉

4. 启动etcd, kube-apiserver, kube-controller-manager和kube-scheduler

# for SERVICE in etcd kube-apiserver kube-controller-manager kube-scheduler; do
systemctl restart $SERVICE
systemctl enable $SERVICE
done


5. 在etcd里配置flannel网络

# etcdctl mk /flannel/network/config '{"Network":"172.17.0.0/16"}'


二. 安装配置minion

1. 在minion1和minion2上的共同配置:

1.1) 安装kubernete和和flannel

# yum -y install flannel kubernetes


1.2) 为flannel配置etcd服务,编辑/etc/sysconfig/flanneld,修改如下内容:

FLANNEL_ETCD="http://kube-master:2379"
FLANNEL_ETCD_KEY="/flannel/network"


1.3) 编辑/etc/kubernetes/config,修改如下内容:

KUBE_MASTER="--master=http://kube-master:8080"


2. 仅在mimion1的配置

编辑/etc/kubernetes/kubelet,修改如下内容:

KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname_override=minion1"
KUBELET_API_SERVER="--api_servers=http://kube-master:8080"


3. 仅在mimion2的配置

编辑/etc/kubernetes/kubelet,修改如下内容:
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname_override=minion2"
KUBELET_API_SERVER="--api_servers=http://kube-master:8080"


4. 在minion1和minion2上启动flanneld, kube-proxy, kubelet和docker服务

# for SERVICE in flanneld kube-proxy kubelet docker; do
systemctl restart $SERVICE
systemctl enable $SERVICE
systemctl status $SERVICE

done


三. 创建pods

1. 在kube-master上可以看到已经识别出两个nodes,并且状态都是Ready

[root@kube-master ~]# kubectl get nodes
NAME      LABELS                           STATUS
minion1   kubernetes.io/hostname=minion1   Ready
minion2   kubernetes.io/hostname=minion2   Ready


2. 在kube-master上创建一个yaml格式的pod定义文件,命名为cirros.yaml,内容如下:

[root@kube-master ~]# cat cirros.yaml
apiVersion: v1
kind: Pod
metadata:
name: cirros
spec:  # specification of the pod’s contents
restartPolicy: Never
containers:
- name: cirros
image: "cirros"
command: ["ping","www.google.com"]


3. 创建pod,命令如下。创建过程中pod会被分配到某一个节点运行,所需的相应docker image会从docker hub获取,缺省是docker.io上的docker hub。

[root@kube-master ~]# kubectl create -f cirros.yaml


检查pod的状态,可以看到该pod已经处于Running状态,并且是分配到了minion2节点。

[root@kube-master ~]# kubectl get pods -o wide
NAME      READY     STATUS    RESTARTS   AGE       NODE
cirros    1/1       Running   0          4m        minion2

==> 注意,如果minion节点因为防火墙的原因不能访问google,上述创建会失败,因为对pod的操作需要用到image "gcr.io/google_containers/pause"来创建一个容器。解决办法是从docker.io上下一个pause镜像,然后重新tag成gcr.io/google_containers/pause,操作如下:

# docker pull docker.io/kubernetes/pause
# docker images
REPOSITORY                                          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker.io/kubernetes/pause                          latest              6c4579af347b        17 months ago       239.8 kB
# dock tag 6c4579af347b gcr.io/google_containers/pause:0.8.0
# dock tag 6c4579af347b gcr.io/google_containers/pause


在minion2节点可以看到一个新的容器已经运行,并且在不断的执行pod文件里定义的ping命令。

[root@mimion2 ~]# docker ps
CONTAINER ID        IMAGE                                  COMMAND                 CREATED             STATUS              PORTS               NAMES
73c70f63faf0        cirros                                 "ping www.google.com"   12 seconds ago      Up 11 seconds                           k8s_cirros.f11fd195_cirros_default_48387572-b114-11e5-89b5-001c42f9db16_dfc276ef
c911b2a51980        gcr.io/google_containers/pause:0.8.0   "/pause"                13 seconds ago      Up 12 seconds                           k8s_POD.e4cc795_cirros_default_48387572-b114-11e5-89b5-001c42f9db16_285cc657
[root@mimion2 ~]# docker logs -f 73c70f63faf0
PING www.google.com (74.125.203.106): 56 data bytes
64 bytes from 74.125.203.106: seq=0 ttl=127 time=166.895 ms
64 bytes from 74.125.203.106: seq=1 ttl=127 time=192.749 ms
64 bytes from 74.125.203.106: seq=2 ttl=127 time=175.124 ms
64 bytes from 74.125.203.106: seq=3 ttl=127 time=173.619 ms
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: