设为首页 收藏本站
查看: 1063|回复: 0

[经验分享] 小炒肉的学习之路

[复制链接]

尚未签到

发表于 2018-1-4 11:36:27 | 显示全部楼层 |阅读模式
  k8s 1.4 新版本部署
  测试环境:
  

node-1: 10.6.0.140  
node
-2: 10.6.0.187  
node
-3: 10.6.0.188  

  kubernetes 集群,包含 master 节点,与 node 节点。
  

hostnamectl --static set-hostname hostname  

  
10.6.0.140 - k8s-master
  
10.6.0.187 - k8s-node-1
  
10.6.0.188 - k8s-node-2
  

  配置 /etc/hosts
  添加
  

10.6.0.140 k8s-master  

10.6.0.187 k8s-node-1  
10.6.0.188 k8s-node-2
  

  部署:
  一、安装k8s
  

yum install -y socat  

  

------------------------------------------------------  
cat <<EOF> /etc/yum.repos.d/k8s.repo
  
[kubelet]
  
name=kubelet
  
baseurl=http://files.rm-rf.ca/rpms/kubelet/
  
enabled=1
  
gpgcheck=0
  
EOF
  
------------------------------------------------------
  

  

yum makecache  

  

yum install -y kubelet kubeadm kubectl kubernetes-cni  

  由于 google 被墙, 所以使用 kubeadm init 创建 集群 的时候会出现卡住
  国内已经有人将镜像上传至 docker hub 里面了
  我们直接下载:
  

docker pull chasontang/kube-proxy-amd64:v1.4.0  
docker pull chasontang
/kube-discovery-amd64:1.0  
docker pull chasontang
/kubedns-amd64:1.7  
docker pull chasontang
/kube-scheduler-amd64:v1.4.0  
docker pull chasontang
/kube-controller-manager-amd64:v1.4.0  
docker pull chasontang
/kube-apiserver-amd64:v1.4.0  
docker pull chasontang
/etcd-amd64:2.2.5  
docker pull chasontang
/kube-dnsmasq-amd64:1.3  
docker pull chasontang
/exechealthz-amd64:1.1  
docker pull chasontang
/pause-amd64:3.0  

  下载以后使用 docker tag 命令将其做别名改为 gcr.io/google_containers
  

docker tag chasontang/kube-proxy-amd64:v1.4.0  gcr.io/google_containers/kube-proxy-amd64:v1.4.0  
docker tag chasontang
/kube-discovery-amd64:1.0 gcr.io/google_containers/kube-discovery-amd64:1.0  
docker tag chasontang
/kubedns-amd64:1.7  gcr.io/google_containers/kubedns-amd64:1.7  
docker tag chasontang
/kube-scheduler-amd64:v1.4.0  gcr.io/google_containers/kube-scheduler-amd64:v1.4.0  
docker tag chasontang
/kube-controller-manager-amd64:v1.4.0  gcr.io/google_containers/kube-controller-manager-amd64:v1.4.0  
docker tag chasontang
/kube-apiserver-amd64:v1.4.0  gcr.io/google_containers/kube-apiserver-amd64:v1.4.0  
docker tag chasontang
/etcd-amd64:2.2.5  gcr.io/google_containers/etcd-amd64:2.2.5  
docker tag chasontang
/kube-dnsmasq-amd64:1.3  gcr.io/google_containers/kube-dnsmasq-amd64:1.3  
docker tag chasontang
/exechealthz-amd64:1.1  gcr.io/google_containers/exechealthz-amd64:1.1  
docker tag chasontang
/pause-amd64:3.0  gcr.io/google_containers/pause-amd64:3.0  

  清除原来下载的镜像
  

docker rmi chasontang/kube-proxy-amd64:v1.4.0  
docker rmi chasontang
/kube-discovery-amd64:1.0  
docker rmi chasontang
/kubedns-amd64:1.7  
docker rmi chasontang
/kube-scheduler-amd64:v1.4.0  
docker rmi chasontang
/kube-controller-manager-amd64:v1.4.0  
docker rmi chasontang
/kube-apiserver-amd64:v1.4.0  
docker rmi chasontang
/etcd-amd64:2.2.5  
docker rmi chasontang
/kube-dnsmasq-amd64:1.3  
docker rmi chasontang
/exechealthz-amd64:1.1  
docker rmi chasontang
/pause-amd64:3.0  

  启动 kubelet
  

systemctl enable kubelet  
systemctl start kubelet
  

  利用 kubeadm 创建 集群
  

[iyunv@k8s-master ~]#kubeadm init --api-advertise-addresses=10.6.0.140 --use-kubernetes-version v1.4.0  
<master/tokens> generated token: "eb4d40.67aac8417294a8cf"
  
<master/pki> created keys and certificates in "/etc/kubernetes/pki"
  
<util/kubeconfig> created "/etc/kubernetes/kubelet.conf"
  
<util/kubeconfig> created "/etc/kubernetes/admin.conf"
  
<master/apiclient> created API client configuration
  
<master/apiclient> created API client, waiting for the control plane to become ready
  
<master/apiclient> all control plane components are healthy after 10.304645 seconds
  
<master/apiclient> waiting for at least one node to register and become ready
  
<master/apiclient> first node has registered, but is not ready yet
  
<master/apiclient> first node has registered, but is not ready yet
  
<master/apiclient> first node has registered, but is not ready yet
  
<master/apiclient> first node has registered, but is not ready yet
  
<master/apiclient> first node has registered, but is not ready yet
  
<master/apiclient> first node is ready after 3.004762 seconds
  
<master/discovery> created essential addon: kube-discovery, waiting for it to become ready
  
<master/discovery> kube-discovery is ready after 4.002661 seconds
  
<master/addons> created essential addon: kube-proxy
  
<master/addons> created essential addon: kube-dns
  

  
Kubernetes master initialised successfully!
  

  
You can now join any number of machines by running the following on each node:
  

  
kubeadm join --token 8609e3.c2822cf312e597e1 10.6.0.140
  

  查看 kubelet 状态
  

systemctl status kubelet  

  子节点 启动 kubelet 首先必须启动 docker
  

systemctl enable kubelet  
systemctl start kubelet
  

  下面子节点加入集群
  

kubeadm join --token 8609e3.c2822cf312e597e1 10.6.0.140  

  查看 kubelet 状态
  

systemctl status kubelet  

  查看集群状态
  

[iyunv@k8s-master ~]#kubectl get node  
NAME         STATUS    AGE
  
k8s
-master   Ready     1d  
k8s
-node-1   Ready     1d  
k8s
-node-2   Ready     1d  

  此时可看到 三个节点 都已经 Ready , 但是其实 Pod 只会运行在 node 节点
  如果需要所有节点,包括master 也运行 Pod 需要运行
  

kubectl taint nodes --all dedicated-  

  安装 POD 网络
  这里使用官方推荐的 weave 网络
  

kubectl apply -f https://git.io/weave-kube  

  查看所有pod 状态
  

[iyunv@k8s-master ~]#kubectl get pods --all-namespaces  
NAMESPACE     NAME                                 READY     STATUS    RESTARTS   AGE
  
kube
-system   etcd-k8s-master                      1/1       Running   1          49m  
kube
-system   kube-apiserver-k8s-master            1/1       Running   1          48m  
kube
-system   kube-controller-manager-k8s-master   1/1       Running   1          48m  
kube
-system   kube-discovery-1971138125-0oq58      1/1       Running   1          49m  
kube
-system   kube-dns-2247936740-ojzhw            3/3       Running   3          49m  
kube
-system   kube-proxy-amd64-1hhdf               1/1       Running   1          49m  
kube
-system   kube-proxy-amd64-4c2qt               1/1       Running   0          47m  
kube
-system   kube-proxy-amd64-tc3kw               1/1       Running   1          47m  
kube
-system   kube-scheduler-k8s-master            1/1       Running   1          48m  
kube
-system   weave-net-9mrlt                      2/2       Running   2          46m  
kube
-system   weave-net-oyguh                      2/2       Running   4          46m  
kube
-system   weave-net-zc67d                      2/2       Running   0          46m  

  使用 GlusterFS 作为 volume
  官方详细说明:
  https://github.com/kubernetes/kubernetes/tree/master/examples/volumes/glusterfs
  1. 配置 GlusterFS 集群,以及设置好 GlusterFS 的 volume , node 客户端安装 glusterfs-client
  2.  k8s-master 创建一个 endpoints.
  我这边 GlusterFS 有3个节点
  vi glusterfs-endpoints.json
  # 每一个 GlusterFS 节点,必须写一列. 端口随意填写(1-65535)
  

{"kind": "Endpoints","apiVersion": "v1","metadata": {"name": "glusterfs-cluster"  },
"subsets": [  {
"addresses": [  {
"ip": "10.6.0.140"  }
  ],
"ports": [  {
"port": 1  }
  ]
  },
  {
"addresses": [  {
"ip": "10.6.0.187"  }
  ],
"ports": [  {
"port": 1  }
  ]
  },
  {
"addresses": [  {
"ip": "10.6.0.188"  }
  ],
"ports": [  {
"port": 1  }
  ]
  }
  ]
  
}
  

  创建 endpoints
  

[iyunv@k8s-master ~]#kubectl create -f glusterfs-endpoints.json  
endpoints
"glusterfs-cluster" created  

  查看 endpoints
  

[iyunv@k8s-master ~]#kubectl get endpoints  
NAME                ENDPOINTS                                AGE
  
glusterfs
-cluster   10.6.0.140:1,10.6.0.187:1,10.6.0.188:1   37s  

  3. k8s-master 创建一个 service.
  vi glusterfs-service.json
  # 这里注意之前填写的 port
  

{"kind": "Service","apiVersion": "v1","metadata": {"name": "glusterfs-cluster"  },
"spec": {"ports": [  {
"port": 1}  ]
  }
  
}
  

  创建 service
  

[iyunv@k8s-master ~]#kubectl create -f glusterfs-service.json  
service
"glusterfs-cluster" created  

  查看 service
  

[iyunv@k8s-master ~]#kubectl get service  
NAME                CLUSTER
-IP       EXTERNAL-IP   PORT(S)   AGE  
glusterfs
-cluster   100.71.255.174   <none>        1/TCP     14s  

  4. k8s-master 创建一个 Pod 来测试挂载
  vi glusterfs-pod.json
  # glusterfs 下 path 配置 glusterfs volume 的名称
  readOnly: true (只读)  and readOnly: false
  

{"apiVersion": "v1","kind": "Pod","metadata": {"name": "glusterfs"  },
"spec": {"containers": [  {
"name": "glusterfs","image": "gcr.io/google_containers/pause-amd64:3.0","volumeMounts": [  {
"mountPath": "/mnt/glusterfs","name": "glusterfsvol"  }
  ]
  }
  ],
"volumes": [  {
"name": "glusterfsvol","glusterfs": {"endpoints": "glusterfs-cluster","path": "models","readOnly": false  }
  }
  ]
  }
  
}
  

  查看 挂载的 volume
  

[iyunv@k8s-node-2 ~]# mount | grep models  

10.6.0.140:models on /var/lib/kubelet/pods/947390da-8f6a-11e6-9ade-d4ae52d1f0c9/volumes/kubernetes.io~glusterfs/glusterfsvol type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072)  

  编写一个 Deployment 的 yaml 文件
  

apiVersion: extensions/v1beta1  
kind: Deployment
  
metadata:
  name: nginx
-deployment  
spec:
  replicas:
2  template:
  metadata:
  labels:
  app: nginx
  spec:
  containers:
- name: nginx  image: nginx
  ports:
- containerPort: 80  

  使用 kubectl create  进行创建
  

kubectl create -f nginx.yaml --record  

  查看 pod
  

[iyunv@k8s-master ~]#kubectl get pod  
NAME                               READY     STATUS    RESTARTS   AGE
  
nginx
-deployment-646889141-459i5   1/1       Running   0          9m  
nginx
-deployment-646889141-vxn29   1/1       Running   0          9m  

  查看 deployment
  

[iyunv@k8s-master ~]#kubectl get deploy  
NAME               DESIRED   CURRENT   UP
-TO-DATE   AVAILABLE   AGE  
nginx
-deployment   2         2         2            2           10m  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-431474-1-1.html 上篇帖子: Kubernets搭建Kubernetes-dashboard 下篇帖子: Kubernetes DNS服务搭建指南
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表