cloud

http://www.111cn.net/sys/149246.htm

前提配置yum源,主机名绑定,关闭防火墙,时间同步
cat /etc/yum.repos.d/virt7-docker-common-release.repo
[virt7-docker-common-release]
name=virt7-docker-common-release
baseurl=http://cbs.centos.org/repos/virt7-docker-common-release/x86_64/os/
gpgcheck=0
Etcd服务在k8s集群中用于配置共享和服务发现。
Flannel是针对k8s设计一个网络规划服务,让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。

关闭 swapoff -a

sysctl -p   使修改生效
netstat -ntlp查看端口是否启用
启动Flannel之后,需要依次重启docker、kubernete。 
 在master执行:

systemctl enable flanneld.service 
systemctl start flanneld.service 
service docker restart
systemctl restart kube-apiserver.service
systemctl restart kube-controller-manager.service
systemctl restart kube-scheduler.service
  在node上执行:

systemctl enable flanneld.service 
systemctl start flanneld.service 
service docker restart
systemctl restart kubelet.service
systemctl restart kube-proxy.service 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.安装
master :yum -y install kubernetes etcd flannel (依赖关系 自行安装docker)
=======================================================================================================================================
Installing:
 etcd                          x86_64             2.0.9-1.el7                            virt7-docker-common-release             2.9 M
 flannel                       x86_64             0.2.0-7.el7                            virt7-docker-common-release             1.3 M
 kubernetes                    x86_64             1.1.0-0.4.git2bfa9a1.el7               virt7-docker-common-release              26 k
Installing for dependencies:
 docker                        x86_64             1.6.2-4.gitc3ca5bb.el7                 virt7-docker-common-release             5.0 M
 kubernetes-client             x86_64             1.1.0-0.4.git2bfa9a1.el7               virt7-docker-common-release             3.0 M
 kubernetes-master             x86_64             1.1.0-0.4.git2bfa9a1.el7               virt7-docker-common-release              14 M
 kubernetes-node               x86_64             1.1.0-0.4.git2bfa9a1.el7               virt7-docker-common-release             9.8 M
 socat                         x86_64             1.7.3.2-2.el7                          local                                   290 k

Transaction Summary
========================================================================================================================================
node:   yum -y install flannel docker kubernetes   
master、node上均编辑/etc/sysconfig/flanneld,修改红色部分

 Flannel使用Etcd进行配置,来保证多个Flannel实例之间的配置一致性,所以需要在etcd上进行如下配置:(‘/atomic.io/network/config’这个key与上文/etc/sysconfig/flannel中的配置项FLANNEL_ETCD_PREFIX是相对应的,错误的话启动就会出错) 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
vim /lib/systemd/system/docker.service
编辑/lib/systemd/system/docker.service,在ExecStart=..上面加入如下内容:
......
ExecStartPost=/usr/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT
ExecStart=/usr/bin/dockerd
......

配置Cgroup Driver 
创建文件/etc/docker/daemon.json,添加如下内容:
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}
重启Docker服务
systemctl daemon-reload && systemctl restart docker && systemctl status docker  
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

kubectl get svc -n kube-system
NAME                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
kube-dns               ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP   1d
kubernetes-dashboard   NodePort    10.102.209.161   <none>        443:32513/TCP   21h

打开浏览器输入https://192.168.56.2:32513,如下  
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.1修改配置文件
master:
01:vim  /etc/kubernetes/config 
KUBE_MASTER="--master=http://192.168.1.104:8080"(mastIP)
02.vim /etc/etcd/etcd.conf 
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_NAME=default
03.  vim  /etc/kubernetes/apiserver
KUBE_API_ADDRESS="--address=0.0.0.0"
UBE_API_PORT="--port=8080"
KUBELET_PORT="--kubelet-port=10250"
KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379"
node:

03. vim  /etc/kubernetes/kubelet
#minion监听的地址,每个minion根据实际的ip配置,这里配置为0.0.0.0
KUBELET_ADDRESS="--address=0.0.0.0"
#监听的端口
KUBELET_PORT="--port=10250"
# location of the api-server
KUBELET_API_SERVER="--api-servers=http://192.168.1.104:8080"  (nodeIP)
#apiserver的访问地址及端口
KUBELET_API_SERVER="--api-servers=http://192.168.1.104:8080"
#额外增加的参数
KUBELET_ARGS="--logtostderr=false --v=0 --log-dir=/data/logs/kubernetes"
04.vim  /etc/sysconfig/flanneld
#etcd的访问地址及端口
FLANNEL_ETCD="http://192.168.1.104:2379"  (mastIP)
#etcd服务范围
FLANNEL_ETCD_KEY="/kube-centos/network"
etcdctl mk /kube-centos/network/config "{ \"Network\": \"172.17.0.0/16\", \"SubnetLen\": 24, \"Backend\": { \"Type\": \"vxlan\" } }"


2.创建和管理应用
使用kubectl run 创建应用用nginx镜像,创建名为my-nginx的应用,pod数量为2,service类型是LoadBalancer
kubectl run my-nginx --image=nginx --replicas=2 --port=80 --expose --service-overrides='{ "spec": { "type": "LoadBalancer" } }'
service "my-nginx" created
deployment "my-nginx" created
kubectl get pod 查看pod实例
kubectl get service/my-nginx查看服务信息
kubectl delete deployment,service my-nginx删除名为nginx的deployment和service。
注:关于Deployment和Replication Controller(yaml)
Deployments are a newer and higher level concept than Replication Controllers. They manage the deployment of Replica Sets (also a newer concept, but pretty much equivalent to Replication Controllers), and allow for easy updating of a Replica Set as well as the ability to roll back to a previous deployment.
创建service  写一个nginx-services的yaml
apiVersion: v1
kind: Service
metadata:
  name: my-nginx-svc
  labels:
    app: nginx
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: nginx
 # kubectl create -f
 调节应用规模  kubectl scale deployment/my-nginx --replicas=1  
 kubectl apply -f 选择新版本的文件,k8s会自动对比运行中版本、老版本、新版本之间的区别,自动更新应用。
 
 
 说明:Kubelet组件运行在Node节点上,维持运行中的Pods以及提供kuberntes运行时环境,主要完成以下使命: 
.监视分配给该Node节点的pods 
.挂载pod所需要的volumes 
.下载pod的secret 
.通过docker/rkt来运行pod中的容器 
.周期的执行pod中为容器定义的liveness探针 
.上报pod的状态给系统的其他组件 
.上报Node的状态 
启动失败原因:


rm -rf /var/lib/docker/network 
View Code

 

posted @ 2018-01-22 01:00  惜冬  阅读(213)  评论(0)    收藏  举报