首页 文章 精选 留言 我的

精选列表

搜索[容器],共10000篇文章
优秀的个人博客,低调大师

创建 Machine - 每天5分钟玩转 Docker 容器技术(46)

对于 Docker Machine 来说,术语Machine就是运行 docker daemon 的主机。“创建 Machine” 指的就是在 host 上安装和部署 docker。先执行docker-machine ls查看一下当前的 machine: 如我们所料,当前还没有 machine,接下来我们创建第一个 machine: host1 - 192.168.56.104。 创建 machine 要求能够无密码登录远程主机,所以需要先通过如下命令将 ssh key 拷贝到 192.168.56.104: ssh-copy-id 192.168.56.104 一切准备就绪,执行docker-machine create命令创建 host1: docker-machine create --driver generic --generic-ip-address=192.168.56.104 host1 因为我们是往普通的 Linux 中部署 docker,所以使用genericdriver,其他 driver 可以参考文档https://docs.docker.com/machine/drivers/。 --generic-ip-address指定目标系统的 IP,并命名为host1。命令执行过程如下: ① 通过 ssh 登录到远程主机。② 安装 docker。③ 拷贝证书。④ 配置 docker daemon。⑤ 启动 docker。 再次执行docker-machine ls: 已经能看到 host1 了。 我们可以登录到 host1 查看 docker daemon 的具体配置 /etc/systemd/system/docker.service。 -H tcp://0.0.0.0:2376使 docker daemon 接受远程连接。 --tls*对远程连接启用安全认证和加密。 同时我们也看到 hostname 已经设置为host1: 使用同样的方法创建 host2: docker-machine create --driver generic --generic-ip-address=192.168.56.105 host2 创建成功后docker-machine ls可以看到 host1 和 host2 都已经就绪: 当前当前环境

优秀的个人博客,低调大师

通过kubeadm安装kubernetes 1.7文档记录[docker容器方式]

参照了网上N多文档,不一一列表,共享精神永存!!!! ================================================== 获取所有安装包 安装包分为两类,rpm安装包和docker镜像 rpm安装包 rpm为以下四个 kubeadm-1.7.0-0.x86_64.rpm kubectl-1.7.0-0.x86_64.rpm kubelet-1.7.0-0.x86_64.rpm kubernetes-cni-0.5.1-0.x86_64.rpm A, 从github上clone以下项目: https://github.com/kubernetes/release B,进入rpm目录,执行docker-build.sh脚本,会在output目录下生成那4个rpm安装包。 *如果只生成amd-64的包,修改一下脚本,把其它几个构架的去掉。 *这些安装包的生成,需要fedora:24镜像,最好提前准备。 核心docker镜像 A, 下载kubernetes 1.7.0 release软件包kubernetes-server-linux-amd64.tar.gz https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG.md B, 解压kubernetes-server-linux-amd64.tar.gz文件,在server/bin目录下,以下几个文件为kubernetes的核心docker镜像: kube-apiserver.tar kube-controller-manager.tar kube-scheduler.tar kube-proxy.tar kube-aggregator.tar 将这些镜像导入harbor仓库便以后备用。 *因为k8s的官方镜像都放在google上,不FQ一般不能直接下载,附录会写一个如何结合github,dockerhub,daocloud来获取指定镜像的办法。 扩展docker镜像 扩展的docker镜像,涉及etcd,flannel,traefik,nginx,tomcat等,后面结合场景写清楚。 所有节点初始化 主要是确认服务器的各项系统指标满足安装kubernetes的要求。 *RedHat发行版本为: 7.3 (Maipo) *Linux内核版本为:3.10.0-514.el7.x86_64 docker安装 这个安装我们没有涉及,原本已安装好,版本为17.05.0-ce, build 89658be 注意新增/etc/systemd/system/docker.service.d/docker.conf文件: [Service] ExecStart= ExecStart=/usr/bin/dockerd --graph=/dockerVolume --storage-driver=overlay --insecure-registry habor-ip-address 它改写了docker的存储目录,且定义了harbor仓库地址。 禁用selinux 确认/usr/sbin/sestatus命令输出为:disabled 禁用ipv6 确认以下两条命令均无显示 lsmod | grep -i ipv6 ifconfig | grep -i inet6 开启路由转发 echo 1 > /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables Iptables清空及禁用 iptables -X iptables -Z iptables -P INPUT ACCEPT iptables -F *默认禁用,通过硬防来控制规则。 主节点安装 上传rpm文件 将所有涉及的rpm包上传到服务器的一个安装目录(e.g:/root/k8s/) 上传docker镜像 将前节提到的docker images上传到harbor仓库(harbor-ip-address) 运行初始化前脚本 生成并运行以下脚本,进行master初始化前安装。(k8s-master-setup_before.sh) #!/bin/bash HARBORPRE="1.2.3.4/kubernets/" DOCKERS=( ${HARBORPRE}/gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.4 ${HARBORPRE}/gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.4 ${HARBORPRE}/gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.4 ${HARBORPRE}/gcr.io/google_containers/pause-amd64:3.0 ${HARBORPRE}/quay.io/coreos/flannel-amd64:v0.8.0 ${HARBORPRE}/gcr.io/google_containers/etcd-amd64:3.0.17 ${HARBORPRE}/gcr.io/google_containers/kube-proxy-amd64:v1.7.0 ${HARBORPRE}/gcr.io/google_containers/kube-apiserver-amd64:v1.7.0 ${HARBORPRE}/gcr.io/google_containers/kube-controller-manager-amd64:v1.7.0 ${HARBORPRE}/gcr.io/google_containers/kube-scheduler-amd64:v1.7.0 ${HARBORPRE}/gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.1 ) #登陆harbor,拉取镜像,更改名称 docker login -u USER -p PASSWORD http://1.2.3.4 echo '====docker login=====' for DOCKER in ${DOCKERS[@]}; do docker pull ${DOCKER} docker tag ${DOCKER} ${DOCKER/${HARBORPRE}/} docker rmi ${DOCKER} done echo '====docker pull image and change tag=====' #安装rpm包 rpm -ivh ./*.rpm --nodeps --force echo '====kubelet, kubeadm, kubectl install=====' # 有的脚本读取执行文件路径不一样 \cp -f /usr/bin/kube* /usr/local/bin/ echo '====cp exe file from /usr/bin to /usr/local/bin=====' #将docker文件驱动从systemd更改为cgroupfs,安装不对,会报错 sed -i 's/systemd/cgroupfs/g' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf echo '====change kubeadm file from systemd to cgroupfs=====' systemctl daemon-reload echo '====daemon-reload=====' #启动kubelet服务 systemctl start kubelet.service echo '====start kubelet=====' #以防万一,初始化kubeadm并清除以前安装可能留下的痕迹 kubeadm reset ifconfig cni0 down ip link delete cni0 ifconfig flannel.1 down ip link delete flannel.1 rm -rf /var/lib/cni/ iptables -X iptables -Z iptables -P INPUT ACCEPT iptables -F echo '====kubeadm reset=====' echo '====kube master setup finished=====' 初始化kubernetes集群 kubeadm init --apiserver-advertise-address=k8s-master-ip-address --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.7.0 *一定要指定version,k8s才不会去网上拉docker,指定pod的cidr,因为后面我们是用flannel作vxlan网络支撑. *一般等待1分钟左右,初始化即可完成。如有问题,可及时查看/var/log/message进行排错。 运行初始化后脚本 生成并运行以下脚本,进行master初始化后安装。(k8s-master-setup_after.sh) *以下几个文件都是github里的标准文件 #!/bin/bash mkdir -p $HOME/.kube \cp -f /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config kubectl apply -f ./kube-flannel-rbac.yaml kubectl apply -f ./kube-flannel.yaml kubectl apply -f ./kube-dashboard-rbac.yaml kubectl apply -f ./kube-dashboard.yaml 确认安装 运行kubectl get命令,确认所有pod及svc状态正常. kubectl get pods --all-namespaces kubectl get svc --all-namespaces 从节点安装 上传rpm文件 将所有涉及的rpm包上传到服务器的一个安装目录(e.g:/root/k8s/) 运行从节点前置脚本 生成并运行以下脚本,进行从节点加入前安装。(k8s-node-setup.sh) #!/bin/bash HARBORPRE="1.2.3.4/kubernets/" DOCKERS=( ${HARBORPRE}/gcr.io/google_containers/pause-amd64:3.0 ${HARBORPRE}/quay.io/coreos/flannel-amd64:v0.8.0 ${HARBORPRE}/gcr.io/google_containers/kube-proxy-amd64:v1.7.0 ) #登陆harbor,拉取镜像,更改名称 docker login -u USER -p PASSWORD http://1.2.3.4 echo '====docker login=====' for DOCKER in ${DOCKERS[@]}; do docker pull ${DOCKER} docker tag ${DOCKER} ${DOCKER/${HARBORPRE}/} docker rmi ${DOCKER} done echo '====docker pull image and change tag=====' #安装rpm包 rpm -ivh ./*.rpm --nodeps --force echo '====kubelet, kubeadm, kubectl install=====' # 有的脚本读取执行文件路径不一样 \cp -f /usr/bin/kube* /usr/local/bin/ echo '====cp exe file from /usr/bin to /usr/local/bin=====' #将docker文件驱动从systemd更改为cgroupfs,安装不对,会报错 sed -i 's/systemd/cgroupfs/g' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf echo '====change kubeadm file from systemd to cgroupfs=====' systemctl daemon-reload echo '====daemon-reload=====' #启动kubelet服务 systemctl start kubelet.service echo '====start kubelet=====' #以防万一,初始化kubeadm并清除以前安装可能留下的痕迹 kubeadm reset ifconfig cni0 down ip link delete cni0 ifconfig flannel.1 down ip link delete flannel.1 rm -rf /var/lib/cni/ iptables -X iptables -Z iptables -P INPUT ACCEPT iptables -F echo '====kubeadm reset=====' echo '====kube master setup finished=====' 从节点加入 kubeadm join --token TOKEN MASTER-IP-ADDRESS:6443 *这个token可通过在主节点上运行kubeadm token list获得 从节点加入确认 在主节点上运行kubectl get nodes(从节点上也可以运行,但要先获取认证文件) 扩展功能安装 基于traefik的ingress功能安装 A, 下载traefik最新版本(略) B, 写traefik-ds.yaml配置文件 apiVersion: extensions/v1beta1 kind: DaemonSet metadata: name: traefik-ingress-lb namespace: kube-system labels: k8s-app: traefik-ingress-lb spec: template: metadata: labels: k8s-app: traefik-ingress-lb name: traefik-ingress-lb spec: terminationGracePeriodSeconds: 60 hostNetwork: true restartPolicy: Always containers: - image: traefik:latest imagePullPolicy: IfNotPresent name: traefik-ingress-lb resources: limits: cpu: 200m memory: 30Mi requests: cpu: 100m memory: 20Mi ports: - name: http containerPort: 80 hostPort: 80 - name: admin containerPort: 8580 args: - --web - --web.address=:8580 - --kubernetes C, 写traefik-ing.yaml配置文件 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: traefik-ingress namespace: kube-system spec: rules: - host: cb.exmaple.com http: paths: - path: / backend: serviceName: tomcat-dm servicePort: 8087 - host: cn.example.cn http: paths: - path: / backend: serviceName: nginx-dm servicePort: 8088 D, 应用这两个配置文件 Kubectl apply –f traefik-ds.yaml Kubectl apply –f traefik- ing.yaml E, 测试,访问从节点8580端口。 附录 如何曲线获取google上的docker镜像 *见本blog以前的帖子 Kubernetes大版本与各个组件版本的对应关系 Not end

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

用户登录
用户注册