一,安装kubernetes前的准备工作

     安装前的准备工作(master\worker都要进行)
     参见:
https://www.cnblogs.com/architectforest/p/13141743.html
     说明:以上这些准备工作需要在worker 节点机器上操作一遍
 
     kubernetes的master节点的安装(需在master节点机器上操作):
     参见:
https://www.cnblogs.com/architectforest/p/13153053.html
    演示例子说明:机器共两台:
     master节点机器: ip: 192.168.219.130, hostname: kubemaster
     woker 节点机器: ip: 192.168.219.136, hostname: node1
 

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,在worker节点安装kubernetes

1,新建kubernetes的repo
[root@node1 ~]# vi /etc/yum.repos.d/kubernetes.repo
内容:
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg 
 
2,安装三大件:
[root@node1 ~]# dnf install kubectl kubelet kubeadm
安装完成后查看版本:
[root@node1 ~]# kubelet --version
Kubernetes v1.18.3
[root@node1 ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.3", GitCommit:"2e7996e3e2712684bc73f0dec0200d64eec7fe40",
GitTreeState:"clean", BuildDate:"2020-05-20T12:49:29Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
[root@node1 ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.3", GitCommit:"2e7996e3e2712684bc73f0dec0200d64eec7fe40",
GitTreeState:"clean", BuildDate:"2020-05-20T12:52:00Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
The connection to the server localhost:8080 was refused - did you specify the right host or port?
3,使kubelet服务可以自启动
[root@node1 ~]# systemctl enable kubelet

三,把worker节点加入到cluster

1,得到join命令:要在master节点上执行:
[root@kubemaster ~]# kubeadm token create --print-join-command
W0618 15:07:30.243762 115106 configset.go:202] WARNING: kubeadm cannot validate component configs
for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
kubeadm join 192.168.219.130:6443 --token cts238.khb7z4qwu1h6iens \
--discovery-token-ca-cert-hash sha256:c718e29ccb1883715489a3fdf53dd810a7764ad038c50fd62a2246344a4d9a73
worker节点的ip要加入到master节点的防火墙:
[root@kubemaster ~]# firewall-cmd --permanent --zone=trusted --add-source=192.168.219.136
success
[root@kubemaster ~]# firewall-cmd --reload
success
2,回到worker节点上执行:
[root@node1 ~]# kubeadm join 192.168.219.130:6443 --token cts238.khb7z4qwu1h6iens     \
--discovery-token-ca-cert-hash sha256:c718e29ccb1883715489a3fdf53dd810a7764ad038c50fd62a2246344a4d9a73
看到如下信息表示加入到cluster成功:
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details. Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
3,查看woker节点上新增加的image
[root@node1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
calico/node v3.14.1 04a9b816c753 3 weeks ago 263MB
calico/pod2daemon-flexvol v3.14.1 7f93af2e7e11 3 weeks ago 112MB
calico/cni v3.14.1 35a7136bc71a 3 weeks ago 225MB
registry.aliyuncs.com/google_containers/kube-proxy v1.18.3 3439b7546f29 4 weeks ago 117MB
registry.aliyuncs.com/google_containers/pause 3.2 80d28bedfe5d 4 months ago 683kB
4,备注:
error execution phase preflight: couldn't validate the identity of the API Server: 
could not find a JWS signature in the cluster-info ConfigMap for token ID “xgt21h"
这个错误提示表示token已过期
 

四,在master节点上查看node

[root@kubemaster ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kubemaster Ready master 26h v1.18.3
node1 Ready <none> 2m57s v1.18.3
已经看到了node1节点,说明加入到cluster成功

五,在master和node1节点上安装一个nginx容器,并查看效果:

编辑rc文件
[root@kubemaster k8s]# vi nginx-rc.yaml
内容:
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx-demo
spec:
replicas: 2
selector:
app: nginx-demo
template:
metadata:
labels:
app: nginx-demo
spec:
containers:
- name: nginx-demo
image: nginx
ports:
- containerPort: 80
创建rc
[root@kubemaster k8s]# kubectl apply -f nginx-rc.yaml
replicationcontroller/nginx-demo created
 
查看效果:
[root@kubemaster k8s]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-demo-b5vwt 1/1 Running 0 15m 172.16.141.16 node1 <none> <none>
nginx-demo-j8n7d 1/1 Running 0 15m 172.16.141.13 node1 <none> <none>

用curl访问(注意此处要到worker节点node1上访问):

[root@node1 ~]# curl http://172.16.141.13
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p> <p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p>
</body>
</html>

生成service文件

[root@kubemaster k8s]# vi nginx-svc.yaml

内容:

apiVersion: v1
kind: Service
metadata:
name: nginx-demo
spec:
type: NodePort
ports:
- port: 80
nodePort: 30020
selector:
app: nginx-demo

创建service

[root@kubemaster k8s]# kubectl apply -f nginx-svc.yaml
service/nginx-demo created

从浏览器访问服务:(说明:192.168.219.136是woker节点node1的ip)

六,查看kubernetes的版本

[root@kubemaster ~]# kubelet --version
Kubernetes v1.18.3
[root@kubemaster ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.3", GitCommit:"2e7996e3e2712684bc73f0dec0200d64eec7fe40",
GitTreeState:"clean", BuildDate:"2020-05-20T12:49:29Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64”}

七,查看linux的版本

[root@kubemaster ~]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
[root@kubemaster ~]# uname -r
4.18.0-193.el8.x86_64

linux(centos8):安装kubernetes worker节点并加入到kubernetes集群(kubernetes 1.18.3)的更多相关文章

  1. linux(centos8):安装配置consul集群(consul 1.8.4 | centos 8.2.2004)

    一,什么是consul? 1,Consul 是 HashiCorp 公司推出的开源软件,用于实现分布式系统的服务发现与配置. Consul 是分布式的.高可用的. 可横向扩展的   2,官方网站: h ...

  2. Kubernetes v1.12/v1.13 二进制部署集群(HTTPS+RBAC)

    官方提供的几种Kubernetes部署方式 minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用.不能用于生产环 ...

  3. Zookeeper节点增删改查与集群搭建(笔记)

    1.上传文件目录说明 上传的文件一般放在 /home/下 安装文件一般在 /usr/local/下 2. 安装zookeeper 2.1将zookeeper-3.4.11.tar.gz拷贝到/home ...

  4. JAVAEE——宜立方商城06:Redis安装、数据类型和持久化方案、Redis集群分析与搭建、实现缓存和同步

    1. 学习计划 1.首页轮播图展示 2.Redis服务器搭建 3.向业务逻辑中添加缓存. 4.使用redis做缓存 5.缓存同步. 2. 首页轮播图动态展示 2.1. 功能分析 根据分类id查询内容列 ...

  5. Kubernetes 从懵圈到熟练:集群服务的三个要点和一种实现

    作者 | 声东 阿里云售后技术专家 文章来源:Docker,点击查看原文. 以我的经验来讲,理解 Kubernetes 集群服务的概念,是比较不容易的一件事情.尤其是当我们基于似是而非的理解,去排查服 ...

  6. 集群版本升级——rolling upgrade在ES 单节点从 restart 到加入集群,大概要 100s 左右的时间。也就是说,这 100s 内,该节点上的所有分片都是 unassigned 状态

    集群版本升级 Elasticsearch 作为一个新兴项目,版本更新非常快.而且每次版本更新都或多或少带有一些重要的性能优化.稳定性提升等特性.可以说,ES 集群的版本升级,是目前 ES 运维必然要做 ...

  7. yum安装k8s集群(kubernetes)

    此案例是以一个主,三个node来部署的,当然node可以根据自己情况部署 192.168.1.130 master 192.168.1.131 node1 192.168.1.132 node2 19 ...

  8. Kubernetes(k8s)1.12.2集群搭建

    本博客搭建k8s集群1.12.2版本 1. 准备2台以上最低2核4G的服务器 2. 关闭机器的防火墙 12 systemctl disable firewalldsystemctl stop fire ...

  9. kubeadm部署高可用集群Kubernetes 1.14.1版本

    Kubernetes高可用集群部署 部署架构: Master 组件: kube-apiserver Kubernetes API,集群的统一入口,各组件协调者,以HTTP API提供接口服务,所有对象 ...

随机推荐

  1. numpy函数笔记(持续更新)

    numpy函数笔记 np.isin用法 np.isin(a,b) 用于判定a中的元素在b中是否出现过,如果出现过返回True,否则返回False,最终结果为一个形状和a一模一样的数组.(注意:这里的a ...

  2. oracle之DML和DDL语句的其他用法

    DML和DDL语句的其他用法 17.1 DML语句-MERGE 作用:把数据从一个表复制到另一个表,插入新数据或替换掉老数据. Oracle 10g中MERGE有如下一些改进: 1.UPDATE或IN ...

  3. IHttpClientFactory组件使用

    起因 :由于需要前段时间写了一个http请求的公共方法  使用的 HttpClient,但是在jmeter测试下 爆发了这个问题:“Cannot assign requested address Ca ...

  4. jekins的搭建和踩过的坑

    https://www.cnblogs.com/jwrwst/p/6520114.html 主要按照上面的来装的 中间遇到过一些问题 https://wiki.jenkins.io/display/J ...

  5. 我搭建了一套企业级私有Git服务,抗住了每天上万次攻击!

    写在前面 事情是这样的,今年疫情期间,我在某云购买了一套服务器,做什么呢?不是用来部署项目,也不是用来搭建网站,而是用来做代码备份和管理.没错,都是我个人的代码,也许你会说,你个人能有多少代码啊?确实 ...

  6. Lucene索引库维护、搜索、中文分词器

    删除索引(文档) 需求 某些图书不再出版销售了,我们需要从索引库中移除该图书. 1 @Test 2 public void deleteIndex() throws Exception { 3 // ...

  7. (转)HttpServletResquest对象

    HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息. 1 ...

  8. HTTP协议学习之Request学习

    在开始前,我们首先对HTTP协议做个简单的了解 HTTP协议(Hyper Text Transfer Protocol) 超文本传输协议 名词非常的高大上,如果学过计算机网络这门课(再如果还有一点印象 ...

  9. 遍历 Dictionary,你会几种方式?

    一:背景 1. 讲故事 昨天在 StackOverflow 上看到一个很有趣的问题,说: 你会几种遍历字典的方式,然后跟帖就是各种奇葩的回答,挺有意思,马上就要国庆了,娱乐娱乐吧,说说这种挺无聊的问题 ...

  10. UnityShader学习笔记- Stencil Buffer

    模板测试(Stencil Test)是现代渲染流水线的一环,其中涉及到的就是模板缓冲(Stencil Buffer),模板缓冲可以用来制作物体的遮罩.轮廓描边.阴影.遮挡显示等等效果 目录 Stenc ...