本篇文章给大家谈谈免受权娱乐视频网站源码分享,以及无版权视频网站对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
因工作需求,最近开始研究docker及k8s相关的资料,本文主要记录kubernetes安装过程及踩过的坑。坑是挺多,过来就好了!如有错漏,望予指正。
系统环境
CentOS7.4
硬件环境
IP地址机器名称角色10.8.51.76server主节点10.8.51.77node-1从节点10.8.51.78node-2从节点
初始化环境
初始化环境之后,建议重新启动机器
修改主机名,建议统一
hostnamectlset-hostnameserver\nhostnamectlset-hostnamenode-1\nhostnamectlset-hostnamenode-2\n
修改/etc/hosts文件增加主机映射
一路回车即可\nssh-copy-idserver\nssh-copy-idnode-1\nssh-copy-idnode-2\n
关闭防火墙、关闭Swap、关闭Selinux
关闭交换内存,必须关闭.不关容易出错\nswapoff-a\nsed-i’s/.*swap.*/关闭selinux\nsetenforce0\nsed-i”s/^SELINUX=enforcing/SELINUX=disabled/g”/etc/sysconfig/selinux\nsed-i”s/^SELINUX=enforcing/SELINUX=disabled/g”/etc/selinux/config\nsed-i”s/^SELINUX=permissive/SELINUX=disabled/g”/etc/sysconfig/selinux\nsed-i”s/^SELINUX=permissive/SELINUX=disabled/g”/etc/selinux/config\n配置IP转发,充许\n编辑/etc/sysctl.d/k8s.conf文件,增加\nnet.bridge.bridge-nf-call-ip6tables=1\nnet.bridge.bridge-nf-call-iptables=1\n下载指定版本docker\nwgethttps://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm\nwgethttps://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm\n设置开机自启\nsystemctlenabledocker\n查看状态\ndockerinfo\n拉取镜像\ndockerpullkeveon/kube-apiserver-amd64:v1.10.0\ndockerpullkeveon/kube-scheduler-amd64:v1.10.0\ndockerpullkeveon/kube-controller-manager-amd64:v1.10.0\ndockerpullkeveon/kube-proxy-amd64:v1.10.0\ndockerpullkeveon/k8s-dns-kube-dns-amd64:1.14.8\ndockerpullkeveon/k8s-dns-dnsmasq-nanny-amd64:1.14.8\ndockerpullkeveon/k8s-dns-sidecar-amd64:1.14.8\ndockerpullkeveon/etcd-amd64:3.1.12\ndockerpullkeveon/flannel:v0.10.0-amd64\ndockerpullkeveon/pause-amd64:3.1\n删除原镜像\ndockerrmikeveon/kube-apiserver-amd64:v1.10.0\ndockerrmikeveon/kube-scheduler-amd64:v1.10.0\ndockerrmikeveon/kube-controller-manager-amd64:v1.10.0\ndockerrmikeveon/kube-proxy-amd64:v1.10.0\ndockerrmikeveon/k8s-dns-kube-dns-amd64:1.14.8\ndockerrmikeveon/k8s-dns-dnsmasq-nanny-amd64:1.14.8\ndockerrmikeveon/k8s-dns-sidecar-amd64:1.14.8\ndockerrmikeveon/etcd-amd64:3.1.12\ndockerrmikeveon/flannel:v0.10.0-amd64\ndockerrmikeveon/pause-amd64:3.1\n
node节点,拉取镜像,其中dashboard以及heapster也可放到主节点上
node节点\n修改镜像名称\ndockertagkeveon/flannel:v0.10.0-amd64quay.io/coreos/flannel:v0.10.0-amd64\ndockertagkeveon/pause-amd64:3.1k8s.gcr.io/pause-amd64:3.1\ndockertagkeveon/kube-proxy-amd64:v1.10.0k8s.gcr.io/kube-proxy-amd64:v1.10.0\ndockertagkeveon/kubernetes-dashboard-amd64:v1.8.3k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3\ndockertagkeveon/heapster-influxdb-amd64:v1.3.3k8s.gcr.io/heapster-influxdb-amd64:v1.3.3\ndockertagkeveon/heapster-grafana-amd64:v4.4.3k8s.gcr.io/heapster-grafana-amd64:v4.4.3\ndockertagkeveon/heapster-amd64:v1.4.2k8s.gcr.io/heapster-amd64:v1.4.2\n查看有那些版本可以安装\nyumlistkubeadm–showduplicates\n开机启动\nsystemctlenablekubelet\n这里的坑不少,一定要注意文件编码格式,行的未尾有没有其它不可见字符.要不初始化的时候过不去\nvi/etc/systemd/system/kubelet.service.d/10-kubeadm.conf\n\n添加这一行\nEnvironment=”KUBELET_EXTRA_ARGS=–v=2–fail-swap-on=false–pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/k8sth/pause-amd64:3.0″\n重新载入配置\nsystemctldaemon-reload\n初始化集群时,增加自己本机IP地址,我们前的服务器为多网卡,指定其中主IP即可\nkubeadminit–apiserver-advertise-address10.8.51.76–pod-network-cidr=10.244.0.0/16–kubernetes-version=v1.10.0\n这个的意思是就是将k8s配置到环境变量中,在那个目录都可以任使用k8s命令,也可将此文件考备到其他节点,在子节点上也可执行集群的命令了\nmkdir-p$HOME/.kube\nsudocp-i/etc/kubernetes/admin.conf$HOME/.kube/config\nsudochown$(id-u):$(id-g)$HOME/.kube/config\n只要server端安装即可\nwgethttps://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml\nkubectlapply-fkube-flannel.yml\nclusterrole.rbac.authorization.k8s.io”flannel”created\nclusterrolebinding.rbac.authorization.k8s.io”flannel”created\nserviceaccount”flannel”created\nconfigmap”kube-flannel-cfg”created\ndaemonset.extensions”kube-flannel-ds”created\n
安装完成后,可使用kubectlgetpod–all-namespaces查看
kubectlgetpod–all-namespaces\nNAMESPACENAMEREADYSTATUSRESTARTSAGE\nkube-systemetcd-server1/1Running04h\nkube-systemheapster-676cc864c6-g4jfj1/1Running04h\nkube-systemkube-apiserver-server1/1Running04h\nkube-systemkube-controller-manager-server1/1Running04h\nkube-systemkube-dns-86f4d74b45-pm8z23/3Running04h\nkube-systemkube-flannel-ds-amd64-6xlzz1/1Running04h\nkube-systemkube-flannel-ds-amd64-78clr1/1Running04h\nkube-systemkube-flannel-ds-amd64-qgjp21/1Running03h\nkube-systemkube-proxy-5pqsw1/1Running04h\nkube-systemkube-proxy-85m2p1/1Running03h\nkube-systemkube-proxy-zgns81/1Running04h\nkube-systemkube-scheduler-server1/1Running04h\nkube-systemkubernetes-dashboard-7d5dcdb6d9-bv8l21/1Running03h\nkube-systemmonitoring-grafana-69df66f668-ndcwk1/1Running04h\nkube-systemmonitoring-influxdb-78d4c6f5b6-pgb891/1Running04h\n
让server参与负载
kubectltaintnodesservernode-role.kubernetes.io/master-\n
向集群中加入node
浏览器执行\nhttps://10.8.51.76:6443\n
这是没受限了,此时可以配置一个代理,使用非https访问即可
nohupkubectlproxy–port=8081–address=10.8.51.76–accept-hosts=^*$&\n下载kubernetes配置文件\nwgethttps://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml\n执行命令\nkubectlcreate-fkubernetes-dashboard.yaml\nkubectlcreate-fkubernetes-dashboard-admin.rbac.yaml\n
安装heapster插件
mkdirheapster
wgethttps://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/grafana.yaml
wgethttps://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/rbac/heapster-rbac.yaml
wgethttps://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/heapster.yaml
wgethttps://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/influxdb.yaml
浏览器输入,这个30000端是我们刚才自己指定的\nhttps://10.8.51.76:30000\n
此处选择令牌输入刚才查看的token,点击登录
好了.这回是完事了.
要是你的浏览器不能访问https,可参考,我用的浏览器chrmoe各种方式都试了,都不行,最后使用下边连接的方式成功了.可以看到了.
Dashboard使用自定义证书
https://blog.csdn.net/chenleiking/article/details/81488028
本文参考综合了网上的一些成功案例.
参考来源:
https://www.jianshu.com/p/42772740f09a
https://www.kubernetes.org.cn/3808.html
JAVA版API使用
我用的这个,实现了通过ymal文件对pod的增、删、改、查等一些基本操作
https://github.com/fabric8io/kubernetes-client
YMAL格式说明
\napiVersion:v1//版本\nkind:pod//类型,pod\nmetadata://元数据\nname:String//元数据,pod的名字\nnamespace:String//元数据,pod的命名空间\nlabels://元数据,标签列表\n-name:String//元数据,标签的名字\nannotations://元数据,自定义注解列表\n-name:String//元数据,自定义注解名字\nspec://pod中容器的详细定义\ncontainers://pod中的容器列表,可以有多个容器\n-name:String//容器的名称\nimage:String//容器中的镜像\nimagesPullPolicy:[Always|Never|IfNotPresent]//获取镜像的策略,默认值为Always,每次都尝试重新下载镜像\ncommand:[String]//容器的启动命令列表(不配置的话使用镜像内部的命令)\nargs:[String]//启动参数列表\nworkingDir:String//容器的工作目录\nvolumeMounts://挂载到到容器内部的存储卷设置\n-name:String\nmountPath:String//存储卷在容器内部Mount的绝对路径\nreadOnly:boolean//默认值为读写\nports://容器需要暴露的端口号列表\n-name:String\ncontainerPort:int//容器要暴露的端口\nhostPort:int//容器所在主机监听的端口(容器暴露端口映射到宿主机的端口,设置hostPort时同一台宿主机将不能再启动该容器的第2份副本)\nprotocol:String//TCP和UDP,默认值为TCP\nenv://容器运行前要设置的环境列表\n-name:String\nvalue:String\nresources:\nlimits://资源限制,容器的最大可用资源数量\ncpu:Srting\nmemory:String\nrequeste://资源限制,容器启动的初始可用资源数量\ncpu:String\nmemory:String\nlivenessProbe://pod内容器健康检查的设置\nexec:\ncommand:[String]//exec方式需要指定的命令或脚本\nhttpGet://通过httpget检查健康\npath:String\nport:number\nhost:String\nscheme:Srtring\nhttpHeaders:\n-name:Stirng\nvalue:String\ntcpSocket://通过tcpSocket检查健康\nport:number\ninitialDelaySeconds:0//首次检查时间\ntimeoutSeconds:0//检查超时时间\nperiodSeconds:0//检查间隔时间\nsuccessThreshold:0\nfailureThreshold:0\nsecurityContext://安全配置\nprivileged:falae\nrestartPolicy:[Always|Never|OnFailure]//重启策略,默认值为Always\nnodeSelector:object//节点选择,表示将该Pod调度到包含这些label的Node上,以key:value格式指定\nimagePullSecrets:\n-name:String\nhostNetwork:false//是否使用主机网络模式,弃用Docker网桥,默认否\nvolumes://在该pod上定义共享存储卷列表\n-name:String\nemptyDir:{}//是一种与Pod同生命周期的存储卷,是一个临时目录,内容为空\nhostPath://Pod所在主机上的目录,将被用于容器中mount的目录\npath:string\nsecret://类型为secret的存储卷\nsecretName:String\nitem:\n-key:String\npath:String\nconfigMap://类型为configMap的存储卷\nname:String\nitems:\n-key:String\npath:String\n
kubernetes目录挂载
Docker本身有自己的目录挂载,但功能太单一,一般也只能挂载本地目录,K8S作为Docker容器的管理服务,除了能够挂载本地的还能在线文件存储目录,比如说nfs
1.本地目录挂载
yml文件中配置如下
apiVersion:extensions/v1beta1\nkind:Deployment\nmetadata:\nname:goserver\nspec:\nreplicas:2\ntemplate:\nmetadata:\nlabels:\nrun:goserver\nspec:\ncontainers:\n-name:goserver\nimage:registry.cn-hangzhou.aliyuncs.com/magina-centos7/goserver:1.0\nports:\n-containerPort:4040\nvolumeMounts:\n-mountPath:/mnt/logs\nname:go-logs\nvolumes:\n-name:go-logs\nhostPath:\npath:/mnt/logs/kubernetes/goserver\n
最后的volumes指定挂载目录的名称和路径,这个目录是本地的,也就是说pod只会挂载当前宿主机的目录,但当我们有多个节点,而这些节点上又有运行着相同的项目,而我们需要收集这些项目的日志,用本地挂载的方式显得很麻烦,当然,我们可以用分布式日志工具去处理,这里介绍另外一种方式,网络文件系统nfs
2.网络文件系统nfs
yml文件中配置如下
apiVersion:extensions/v1beta1\nkind:Deployment\nmetadata:\nname:goserver\nspec:\nreplicas:2\ntemplate:\nmetadata:\nlabels:\nrun:goserver\nspec:\ncontainers:\n-name:goserver\nimage:registry.cn-hangzhou.aliyuncs.com/magina-centos7/goserver:1.0\nports:\n-containerPort:4040\nvolumeMounts:\n-mountPath:/mnt/logs\nname:go-logs\nvolumes:\n-name:go-log\nnfs:\nserver:nfs4.yinnote.com\npath:/prod/logs/goserver\n
这里使用了nfs标签,也就是将当前目录挂载到了远程文件系统,这里的server指的是远程文件系统路径,需要自己去配置,或者直接买其他云服务厂商的文件系统,这样做的好处是,不管哪个节点,哪个pod,都可以将日志打到统一的地方
另外,如果我们使用了nfs文件系统,必须要在每台节点上面安装nfs-utils工具包,否则pod会无法启动
yuminstallnfs-utils
导入导出镜像容器
pull不下来镜像。
可以通过docker提供把镜像导出export(保存save)为文件的机制,这样就可以把镜像copy到任意地方了。
1.导出export-导入import
格式:dockerexportCONTAINER(容器)
使用dockerps-a查看本机已有的容器,如:
[root@docker1LAMP]dockerexportdd43b6de6b33>/home/weblogic:jdk1.6.tar\n[root@docker1LAMP]ls\nweblogic:jdk1.6.tar\n
导出完成后,就可以使用import导入了
[root@docker1home]dockerimages\nREPOSITORYTAGIMAGEIDCREATEDSIZE\n……\ndocker.io/tutum/lamplatest3d49e175ec0022monthsago426.9MB\n……\n[root@docker1LAMP]ls\nDockerfilelamp.tar\n[root@docker1LAMP]dockerload</lamp/lamp.tar\n
3.导出export与保存save的区别
(1).export导出的镜像文件大小小于save保存的镜像
(2).export导出(import导入)是根据容器拿到的镜像,再导入时会丢失镜像所有的历史,所以无法进行回滚操作(dockertag<LAYERID><IMAGENAME>);而save保存(load加载)的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer)。(查看方式:dockerimages–tree)
注:导入加载进来觉得不合适可以使用dockerrm容器ID、dockerrmi镜像ID来删掉。
移除所有的容器和镜像(大扫除):
代码如下:
dockerkill$(dockerps-q);dockerrm$(dockerps-a-q);dockerrmi$(dockerimages-q-a)\n
免受权娱乐视频网站源码分享和无版权视频网站的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!
