博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kubernetes入门实践
阅读量:4071 次
发布时间:2019-05-25

本文共 5849 字,大约阅读时间需要 19 分钟。

Kubernetes是一个基于容器技术的分布式架构,可以实现集群规模化部署,容器的部署以及对容器的操作(服务版本更新,迁移,调试)

下面是通过kubeadm快速安装Kubernetes集群.

配置Yum源:

# cat magina-k8s.repo[magina-k8s]name=Magina K8s Repositorybaseurl=https://cdn.yinnote.com/centos7/magina-k8senabled=1gpgcheck=0gpgkey=https://cdn.yinnote.com/keys/rpm.public.key

安装rpm包:

yum makecacheyum intall -y dockersystemctl enable docker && systemctl start dockeryum install -y kubelet-1.6.1 kubectl-1.6.1 kubeadm-1.6.1systemctl enable kubelet && systemctl start kubelet

配置加速器:这个加速器是我自己的daocloud地址

# pwd/etc/docker# cat daemon.json{"registry-mirrors": ["http://62839702.m.daocloud.io"],  "registry-mirror":[    "https://registry.docker-cn.com"  ],  "insecure-registries":[    "www.sholck.top:5000"  ]}#systemctl daemon-reload && systemctl restart docker

编写脚本:(sholck是我的Docker Hub帐号 )

# cd /opt/# cat k8s-docker-images.sh# 创建镜像下载脚本############################################## 添加需要的镜像images=(pause-amd64:3.0kube-proxy-amd64:v1.6.1kube-scheduler-amd64:v1.6.1kube-controller-manager-amd64:v1.6.1kube-apiserver-amd64:v1.6.1etcd-amd64:3.0.17k8s-dns-sidecar-amd64:1.14.1k8s-dns-kube-dns-amd64:1.14.1k8s-dns-dnsmasq-nanny-amd64:1.14.1)for imageName in ${images[@]} ; dodocker pull sholck/$imageNamedocker tag sholck/$imageName gcr.io/google_containers/$imageNamedocker rmi sholck/$imageNamedone#############################################

执行脚本实现拉取镜像,清理

执行启动kubelet并安装集群

#kubeadm reset#systemctl start kubelet#kubeadm init --kubernetes-version=v1.6.1 --apiserver-advertise-address yourIP[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.[init] Using Kubernetes version: v1.6.1[init] Using Authorization mode: RBAC[preflight] Running pre-flight checks[preflight] WARNING: docker version is greater than the most recently validated version. Docker version: 1.13.1. Max validated version: 1.12[preflight] Starting the kubelet service[certificates] Generated CA certificate and key.[certificates] Generated API server certificate and key.[certificates] API Server serving cert is signed for DNS names [jiche kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 47.94.201.186][certificates] Generated API server kubelet client certificate and key.[certificates] Generated service account token signing key and public key.[certificates] Generated front-proxy CA certificate and key.[certificates] Generated front-proxy client certificate and key.[certificates] Valid certificates and keys now exist in "/etc/kubernetes/pki"[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/controller-manager.conf"[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/scheduler.conf"[apiclient] Created API client, waiting for the control plane to become ready[apiclient] All control plane components are healthy after 25.213093 seconds[apiclient] Waiting for at least one node to register[apiclient] First node has registered after 5.202103 seconds[token] Using token: e60caf.86ab3a734f1293ee[apiconfig] Created RBAC rules[addons] Created essential addon: kube-proxy[addons] Created essential addon: kube-dnsYour Kubernetes master has initialized successfully!To start using your cluster, you need to run (as a regular user):  sudo cp /etc/kubernetes/admin.conf $HOME/  sudo chown $(id -u):$(id -g) $HOME/admin.conf  export KUBECONFIG=$HOME/admin.confYou should now deploy a pod network to the cluster.Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:  http://kubernetes.io/docs/admin/addons/You can now join any number of machines by running the following on each nodeas root:  kubeadm join --token e60caf.86ab3a734f1293ee yourIP:6443

安装Node节点,加入集群.

# kubeadm join --token e60caf.86ab3a734f1293ee yourIP:6443[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.[preflight] Running pre-flight checks[preflight] WARNING: docker version is greater than the most recently validated version. Docker version: 1.13.1. Max validated version: 1.12[preflight] WARNING: hostname "chejian" could not be reached[preflight] WARNING: hostname "chejian" lookup chejian on 59.49.49.49:53: no such host[preflight] Starting the kubelet service[discovery] Trying to connect to API Server "yourIP:6443"[discovery] Created cluster-info discovery client, requesting info from "https://yourIP:6443"[discovery] Cluster info signature and contents are valid, will use API Server "https://yourIP:6443"[discovery] Successfully established connection with API Server "yourIP:6443"[bootstrap] Detected server version: v1.6.1[bootstrap] The server supports the Certificates API (certificates.k8s.io/v1beta1)[csr] Created API client to obtain unique certificate for this node, generating keys and certificate signing request[csr] Received signed certificate from the API server, generating KubeConfig...[kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"Node join complete:* Certificate signing request sent to master and responsereceived.* Kubelet informed of new secure connection details.Run 'kubectl get nodes' on the master to see this machine join.

master执行kubectl get nodes命令出现以下错误:

# kubectl get nodesThe connection to the server localhost:8080 was refused - did you specify the right host or port? 

问题来源:

查看 /etc/kubernetes/manifests/kube-apiserver.yaml中:–insecure-port=0

kube-apiserver的选项–insecure-port=0,也就是说kubeadm 1.6.0初始化的集群,kube-apiserver没有监听默认的http 8080端口。kube-apiserver只监听了https的6443端口。

解决方案:

在/etc/profile文件中追加:

export KUBECONFIG=/etc/kubernetes/admin.conf source /etc/profile

重行执行命令:

# kubectl get nodesNAME      STATUS     ROLES     AGE       VERSIONchejian   NotReady            13m       v1.6.1jiche     NotReady   master   14m       v1.6.1 

转载地址:http://wbgji.baihongyu.com/

你可能感兴趣的文章
Encoding Schemes
查看>>
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Java8 HashMap集合解析
查看>>
自定义 select 下拉框 多选插件
查看>>
linux和windows内存布局验证
查看>>
Selenium-WebDriverApi接口详解
查看>>
Selenium-ActionChains Api接口详解
查看>>
Selenium-Switch与SelectApi接口详解
查看>>
Selenium-Css Selector使用方法
查看>>
Linux常用统计命令之wc
查看>>
fastcgi_param 详解
查看>>
解析zookeeper的工作流程
查看>>
搞定Java面试中的数据结构问题
查看>>
慢慢欣赏linux make uImage流程
查看>>
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
慢慢欣赏linux 内核模块引用
查看>>
kprobe学习
查看>>
慢慢欣赏linux CPU占用率学习
查看>>
Homebrew指令集
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>