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运行时环境,主要完成以下使命:
1.监视分配给该Node节点的pods
2.挂载pod所需要的volumes
3.下载pod的secret
4.通过docker/rkt来运行pod中的容器
5.周期的执行pod中为容器定义的liveness探针
6.上报pod的状态给系统的其他组件
7.上报Node的状态
启动失败原因:
rm -rf /var/lib/docker/network