kubernetes 1.6.2部署

部署环境服务器:腾讯云

操作系统版本:centos 7.2

1、修改系统配置:

[[email protected]~]# cat /etc/sysctl.d/k8s.conf 
net.bridge.bridge-nf-call-ip6tables= 1
net.bridge.bridge-nf-call-iptables= 1

2、是配置生效:

执行sysctl -p/etc/sysctl.d/k8s.conf使修改生效。

3、设置主机名对应IP:

[[email protected]~]# cat /etc/hosts
10.104.143.65 node1
10.186.54.177 node2

4、安装kuberete包,下载包,因为中国都是被屏蔽的、所以使用国人维护的库,下载包下来:https://yum.mritd.me/

# 添加 yum 源

[[email protected]]#tee /etc/yum.repos.d/mritd.repo << EOF
[mritdrepo]
name=MritdRepository
baseurl=https://yumrepo.b0.upaiyun.com/centos/7/x86_64
enabled=1
gpgcheck=1
gpgkey=https://mritd.b0.upaiyun.com/keys/rpm.public.key
EOF
# 刷新cache
[[email protected]]#yummakecache
# 安装 yum-utils
[[email protected]]#yuminstall -y yum-utils socat 
# 下载 rpm 到本地
[[email protected]]#yumdownloader kubelet kubectl kubernetes-cni kubeadm
#查看一下本地有哪些包:
[[email protected]]# ls
kubeadm-1.6.2-0.x86_64.rpm  kubectl-1.6.2-0.x86_64.rpm  kubelet-1.6.2-0.x86_64.rpm  kubernetes-cni-0.5.1-0.x86_64.rpm

5、安装kubeletes包:

[[email protected]]# yum localinstall kube*.rpm

6、我们先了解一下需要下载哪些包,相关版本都需要什么依赖关系,因为在国内包是被墙的,我们需要从第三方云下载相关的版本然后再安装:


Image


Ver


Component


gcr.io/google_containers/kube-proxy-amd64


v1.6.2


Kubernetes


gcr.io/google_containers/kube-controller-manager-amd64


v1.6.2


Kubernetes


gcr.io/google_containers/kube-apiserver-amd64


v1.6.2


Kubernetes


gcr.io/google_containers/kube-scheduler-amd64


v1.6.2


Kubernetes


gcr.io/google_containers/etcd-amd64


3.0.17


Kubernetes


gcr.io/google_containers/pause-amd64


3.0


Kubernetes


gcr.io/google_containers/k8s-dns-sidecar-amd64


1.14.1


DNS


gcr.io/google_containers/k8s-dns-kube-dns-amd64


1.14.1


DNS


gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64


1.14.1


DNS

7、下载相关的包,然后重命名tag,再删除之前的包:

[[email protected]]#images=(kube-proxy-amd64:v1.6.2kube-controller-manager-amd64:v1.6.2 kube-apiserver-amd64:v1.6.2kube-scheduler-amd64:v1.6.2 k8s-dns-sidecar-amd64:1.14.1k8s-dns-dnsmasq-nanny-amd64:1.14.1)
 
[[email protected]]#for imageName in ${images[@]} ; do
 docker pull registry.cn-hangzhou.aliyuncs.com/kube_containers/$imageName
 docker tag registry.cn-hangzhou.aliyuncs.com/kube_containers/$imageNamegcr.io/google_containers/$imageName
 docker rmi registry.cn-hangzhou.aliyuncs.com/kube_containers/$imageName
done
[[email protected]]#dockerpull registry.cn-hangzhou.aliyuncs.com/google-containers/etcd-amd64:3.0.17
[[email protected]]#docker pullregistry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0
[[email protected]]#docker pullindex.tenxcloud.com/jimmy/k8s-dns-kube-dns-amd64:1.14.1
[[email protected]]#docker tagregistry.cn-hangzhou.aliyuncs.com/google-containers/etcd-amd64:3.0.17gcr.io/google_containers/etcd-amd64:3.0.17
[[email protected]]#docker rmiregistry.cn-hangzhou.aliyuncs.com/google-containers/etcd-amd64:3.0.17
[[email protected]]#dockertag registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0gcr.io/google_containers/pause-amd64:3.0
[[email protected]]#docker rmiregistry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0
[[email protected]]#dockertag index.tenxcloud.com/jimmy/k8s-dns-kube-dns-amd64:1.14.1gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.1
[[email protected]]#dockerrmi index.tenxcloud.com/jimmy/k8s-dns-kube-dns-amd64:1.14.1

8、初始化集群:

[[email protected]~]# kubeadm init --kubernetes-version=v1.6.2 --pod-network-cidr=10.244.0.0/16--apiserver-advertise-address=10.104.143.65   
........
You cannow join any number of machines by running the following on each node
as root:
  kubeadm join --token 50e5cc.8ca639f09da1fb6510.104.143.65:6443

#使用flannel网络的时候需要指定pod-network-cide,不然后面起不来的。

#控制token,这个是我们Node加入集群的凭证。

9、假如出错,我们就重新初始化集群,然后再生成一个token-id:(不重新执行这部略)

[[email protected]~]#kubeadmreset
[[email protected]~]#ifconfigcni0 down
[[email protected]~]#ip linkdelete cni0
[[email protected]~]#ifconfigflannel.1 down
[[email protected]~]#ip linkdelete flannel.1
[[email protected]~]#rm -rf/var/lib/cni/

10、在1.6.2版本之后由于监听的是6443端口,不是之前的80,所以执行查看会报错:

##这个时候执行kubectlget node 会报错:
[[email protected]]# kubectl get nodes
Theconnection to the server localhost:8080 was refused - did you specify the righthost or port?
##默认在之前版本是监听8080端口,但是kube-apiserver监听的是6443端口:

11、可以查看一下相关api-server文件:

[[email protected]]# cat kube-apiserver.yaml
apiVersion:v1
。。。。。。
    image:gcr.io/google_containers/kube-apiserver-amd64:v1.6.2
    livenessProbe:
      failureThreshold: 8
      httpGet:
        host: 127.0.0.1
        path: /healthz
        port: 6443
        scheme: HTTPS
      initialDelaySeconds: 15
      timeoutSeconds: 15
 
###看一下监听端口:
[root[email protected]]# netstat -ntlp | grep api
tcp6       0      0:::6443                 :::*                    LISTEN      64692/kube-apiserve

12、设置一下环境变量:

[[email protected]~]# vim /etc/profile
exportKUBECONFIG=/etc/kubernetes/admin.conf
[[email protected]~]# source /etc/profile

13、查看一下相关的pod状态:

[[email protected]]#  kubectl get pod --all-namespaces-o wide
NAMESPACE     NAME                            READY     STATUS   RESTARTS   AGE       IP              NODE
kube-system   etcd-node1                      1/1       Running  0          4m        10.104.143.65   node1
kube-system   kube-apiserver-node1            1/1       Running  0          4m        10.104.143.65   node1
kube-system   kube-controller-manager-node1   1/1      Running   0          4m        10.104.143.65   node1
kube-system   kube-dns-3913472980-zkqk1       0/3      Pending   0          3m        <none>         
kube-system   kube-proxy-tckxj                1/1       Running  0          3m        10.104.143.65   node1
kube-system   kube-scheduler-node1            1/1       Running  0          4m       10.104.143.65   node1
###可以看到kube-dns是还没有起来的,是因为我们网络还没有配置,所以起不来的。

14、查看集群节点的状态:

[[email protected]]# kubectl get nodes
NAME      STATUS    AGE       VERSION
node1     NotReady  3m        v1.6.2

15、接下来我们配置网络,先下载flannl网络文件,然后配置:

[[email protected] src]#wgethttps://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
[[email protected] src]#wgethttps://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

##然后修改相关文件,加上自己网卡,不然多网卡经常网络起不来:

[[email protected] src]# vim kube-flannel.yml
###添加"--iface=eth0”
command: [ "/opt/bin/flanneld","--ip-masq", "--kube-subnet-mgr", "--iface=eth0"]

16、为了启动快速,我们可以事先把flannel的镜像下载下来:

[[email protected] ~]# docker pullregistry.cn-hangzhou.aliyuncs.com/omega-reg/flannel:v0.7.1-amd64
[[email protected] ~]# docker tagregistry.cn-hangzhou.aliyuncs.com/omega-reg/flannel:v0.7.1-amd64quay.io/coreos/flannel:v0.7.1-amd64

17、接下来我们启动flannel网络:

[[email protected] src]# kubectl create -fkube-flannel-rbac.yml
clusterrole "flannel" created
clusterrolebinding "flannel"created
[[email protected] src]# kubectl apply -fkube-flannel.yml
serviceaccount "flannel" created
configmap "kube-flannel-cfg"created
daemonset "kube-flannel-ds" created

18、然后我们看一下pod相关状态:

[[email protected] src]# kubectl get pod -o wide -nkube-system
NAME                           READY     STATUS   RESTARTS   AGE       IP              NODE
etcd-node1                      1/1       Running  0          10m       10.104.143.65   node1
kube-apiserver-node1            1/1       Running  0          10m       10.104.143.65   node1
kube-controller-manager-node1   1/1      Running   0          10m       10.104.143.65   node1
kube-dns-3913472980-zkqk1       3/3      Running   0          10m       10.244.0.2      node1
kube-flannel-ds-xjckw           2/2       Running  0          51s       10.104.143.65   node1
kube-proxy-tckxj                1/1       Running  0          10m       10.104.143.65   node1
kube-scheduler-node1            1/1       Running  0          10m       10.104.143.65   node1

19、接下来我们把node2加入集群:

[[email protected] ~]#  kubeadm join --token 50e5cc.8ca639f09da1fb6510.104.143.65:6443
[kubeadm] WARNING: kubeadm is in beta, pleasedo not use it for production clusters.
[preflight] Running pre-flight checks
。。。。。

20、在Node1上面查看:

[[email protected]]# kubectl get nodes
NAME      STATUS   AGE       VERSION
node1     Ready    26m       v1.6.2
node2     Ready    2m        v1.6.2

21、我们可以先测试一下DNS解析组件是否正常,因为这个和可能影响到后面的dashboard:

[[email protected] src]# kubectl run curl--image=radial/busyboxplus:curl -i --tty
If you don‘t see a command prompt, trypressing enter.
[ [email protected]:/ ]$ nslookupkubernetes.default
Server:   10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name:     kubernetes.default
Address 1: 10.96.0.1kubernetes.default.svc.cluster.local
[ [email protected]:/ ]$ nslookupkube-dns.kube-system
Server:   10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name:     kube-dns.kube-system
Address 1: 10.96.0.10kube-dns.kube-system.svc.cluster.local

22、正常之后,我们编写一个pod,然后测试一下运行情况:

[[email protected]]# cat my-nginx.yaml 
apiVersion:extensions/v1beta1
kind:Deployment
metadata:
  name: my-nginx
spec:
  replicas: 2
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx
        ports:
        - containerPort: 80

###对外访问的时候,我们需要提供相关端口访问,故需要编写一个service:

[[email protected]]# cat nginx-srv.yaml
apiVersion:v1
kind:Service
metadata:
  name: my-nginx
  labels:
    run: my-nginx
spec:
  type: NodePort
  ports:
  - port: 80
    nodePort: 30062
    protocol: TCP
  selector:
run: my-nginx

23、启动正常,我们可以测试一下访问是否正常:

[[email protected]]# kubectl create -f my-nginx.yaml
deployment"my-nginx" created
[[email protected]]# kubectl create -f nginx-srv.yaml
service"my-nginx" created
##查看一下pod是否已经起来了:
[[email protected]]# kubectl get pod -o wide
NAME                       READY     STATUS   RESTARTS   AGE       IP           NODE
curl-57077659-f4wgb        1/1       Running  1          19m       10.244.0.3   node1
my-nginx-858393261-2f2cq   1/1      Running   0          41s       10.244.0.4   node1
my-nginx-858393261-frdtg   1/1      Running   0          41s       10.244.1.2   node2

##查看一下相关service的情况:

[[email protected]]# kubectl get service
NAME         CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   10.96.0.1       <none>        443/TCP        37m
my-nginx     10.110.89.147   <nodes>       80:30062/TCP   1m

24、接下来就是测试是否正常了:

[[email protected]]# curl  10.110.89.147 
<!DOCTYPEhtml>
<html>
<head>
<title>Welcometo nginx!</title>
 .......
##要是不在这个节点上面我们就得根据NODE IP:30062来访问了:
[[email protected]]# curl node1:30062
<!DOCTYPEhtml>
<html>
<head>
<title>Welcometo nginx!</title>
[[email protected]]# curl node2:30062
<!DOCTYPEhtml>
<html>
<head>
<title>Welcometo nginx!</title>
<style>

25、##然后我们可以测试一下容器之间的相互连通性:

[[email protected]]# kubectl get pod -o wide
NAME                       READY     STATUS   RESTARTS   AGE       IP           NODE
curl-57077659-f4wgb        1/1       Running  1          23m       10.244.0.3   node1
my-nginx-858393261-2f2cq   1/1      Running   0          4m        10.244.0.4   node1
my-nginx-858393261-frdtg   1/1      Running   0          4m        10.244.1.2   node2
##登录10.244.0.4ping 10.244.1.2:
[[email protected]]# kubectl exec my-nginx-858393261-2f2cq ping 10.244.1.2
PING10.244.1.2 (10.244.1.2): 56 data bytes
64 bytesfrom 10.244.1.2: icmp_seq=0 ttl=62 time=5.018 ms
##可以看到是没问题的。

26、接下来我们测试一下dns解析是否有问题,因为我们有curl节点了,直接用curl测试,有了dns内部测试,我们可以根据service 定义的访问即可:

[[email protected]]# kubectl get service    
NAME         CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   10.96.0.1       <none>        443/TCP        57m
my-nginx     10.110.89.147   <nodes>       80:30062/TCP   21m
 
[[email protected]]# kubectl exec curl-57077659-f4wgb curl my-nginx
  % Total   % Received % Xferd  AverageSpeed   Time    Time    Time  Current
                                 Dload  Upload  Total   Spent    Left Speed
  0    0    0     0   0     0      0     0 --:--:-- --:--:-- --:--:--    0<!DOCTYPE html>
<html>
<head>
<title>Welcometo nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial,sans-serif;
    }
</style>

##我们看到测试dns也是能够完成安装的,到底玄机在哪里的,就是dns插件构成的结果,后续我们有时间再做进一步解析,今天kubernetes安装就先到这。

时间: 2024-10-14 03:25:50

kubernetes 1.6.2部署的相关文章

Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)

0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 master 服务器的组件有:kube-apiserver.kube-controller-manager.kube-scheduler 因此需要下载k8s master,下载地址:https://github.com/kubernetes/kubernetes/blob/master/CHANGE

在Kubernetes集群上部署和管理JFrog Artifactory

JFrog Artifactory是一个artifacts仓库管理平台,它支持所有的主流打包格式.构建工具和持续集成(CI)服务器.它将所有二进制内容保存在一个单一位置并提供一个接口,这使得用户在整个应用程序开发和交付过程中,能更易于上传.查找和使用二进制文件. 在本文中我们将介绍如何使用Rancher在Kubernetes集群上部署和管理JFrog Artifactory.在看完本文后,你将会系统地了解JFrog Artifactory OSS的安装设置,并且能够按照同样的步骤在任何Kuber

ASP.NET Core在Azure Kubernetes Service中的部署和管理

目录 ASP.NET Core在Azure Kubernetes Service中的部署和管理 目标 准备工作 注册 Azure 账户 AKS文档 进入Azure门户(控制台) 安装 Azure Cli 安装 Docker 进入正题 资源组 创建资源组 删除资源组 容器注册表 Azure Container Register (ACR) 创建 ACR 登录 ACR 服务主体 service principle 创建服务主体 给服务主体配置 ACR 的pull权限 K8s服务集群 Azure Ku

Kubernetes 生产环境安装部署 基于 Kubernetes v1.14.0 之 部署规划

1. 安装规划 1.1 部署节点说明 etcd集群规划 etcd 中心集群 192.168.2.247192.168.2.248192.168.2.249 etcd 事件集群 192.168.2.250192.168.2.251192.168.2.252 Kubernetes master节点集群规划 192.168.3.10192.168.3.11192.168.3.12192.168.3.13192.168.3.14 Kubernetes master vip 192.168.4.1192.

Kubernetes V1.16.2部署Dashboard V2.0(beta5)

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具. 1.安装要求 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 一台或多台机器,操作系统 CentOS7.6-86_x64 硬件配置:4GB或更多RAM,4个CPU或更多CPU,硬盘30GB或更多 集群中所有机器之间网络互通 禁止swap分区 2. 准备环境 关闭防火墙: systemctl stop firewalld systemctl disable firewalld 关闭selinux:

kubernetes v1.15.4 部署手册

kubernetes v1.15.4 部署手册 配置要求 推荐在阿里云采购如下配置:(也可以使用自己的虚拟机.私有云等) 3台 2核4G 的ECS(突发性能实例 t5 ecs.t5-c1m2.large或同等配置,单台约 0.4元/小时,停机时不收费) Cent OS 7.6 安装后的软件版本为 Kubernetes v1.15.4 calico 3.8.2 nginx-ingress 1.5.3 Docker 18.09.7 检查 centos / hostname # 在 master 节点

在 Kubernetes 集群快速部署 KubeSphere 容器平台

KubeSphere 不仅支持部署在 Linux 之上,还支持在已有 Kubernetes 集群之上部署 KubeSphere,自动纳管 Kubernetes 集群的已有资源与容器. 前提条件 Kubernetes 版本: 1.13.0 ≤ K8s version < 1.16: Helm,版本 >= 2.10.0(不支持 helm 2.16.0 #6894),且已安装了 Tiller,参考 如何安装与配置 Helm: 集群的可用 CPU > 1 C,可用内存 > 2 G: 集群已

Kubernetes实战总结 - EFK部署(v7.6.0)

基础概念 Elasticsearch 是一个实时的.分布式的可扩展的搜索引擎,允许进行全文.结构化搜索,它通常用于索引和搜索大量日志数据,也可用于搜索许多不同类型的文档. Beats 是数据采集的得力工具.将 Beats 和您的容器一起置于服务器上,或者将 Beats 作为函数加以部署,然后便可在 Elastisearch 中集中处理数据.如果需要更加强大的处理性能,Beats 还能将数据输送到 Logstash 进行转换和解析. Kibana 核心产品搭载了一批经典功能:柱状图.线状图.饼图.

Kubernetes 1.5.1 部署

> kubernetes 1.5.0 , 配置文档 # 1 初始化环境 ## 1.1 环境: | 节 点  |      I P      ||--------|-------------||node-1|10.6.0.140||node-2|10.6.0.187||node-3|10.6.0.188| ## 1.2 设置hostname hostnamectl --static set-hostname hostname |       I P     | hostname ||-------

Kubernetes+Flannel 环境中部署HBase集群

注:目前方案不满足加入新节点(master节点或regionserver节点)而不更改已运行节点的参数的需求,具体讨论见第六部分. 一.背景知识 先看下HBase的组成: Master:Master主要负责管理RegionServer集群,如负载均衡及资源分配等,它本身也可以以集群方式运行,但同一时刻只有一个master处于激活状态.当工作中的master宕掉后,zookeeper会切换到其它备选的master上. RegionServer:负责具体数据块的读写操作. ZooKeeper:负责集