<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[docker、kubernetes学习笔记]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/tjg138</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tjg138]]></copyright><item><title><![CDATA[Linux下安装Nginx-1.22.1]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/128443977</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/128443977</guid><author>tjg138</author><pubDate>Mon, 26 Dec 2022 15:03:07 +0800</pubDate><description><![CDATA[Linux下安装Nginx-1.22.1]]></description><category></category></item><item><title><![CDATA[K8S冲浪(2) - 使用curl访问api-server(方式一)]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/124861396</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/124861396</guid><author>tjg138</author><pubDate>Thu, 19 May 2022 17:00:44 +0800</pubDate><description><![CDATA[今天让我们来体验一下，使用curl的方式访问api-server。

实验目标：

使用curl的方式，取得下面的bb-128这个POD的名称。





环境说明：







操作步骤：

第1步：在kube-system命名空间中创建一个serivceaccount: test-sa-2



从上图可以看到，创建后，它的Tokens目前为none：



第2步：准备一份yaml文件，创建secret对象，并绑定到test-sa-2.



创建secret对象：



查看一下：




...]]></description><category></category></item><item><title><![CDATA[体验K8S的x509认证及RBAC授权机制]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/124813674</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/124813674</guid><author>tjg138</author><pubDate>Tue, 17 May 2022 10:52:49 +0800</pubDate><description><![CDATA[先让我们重温两个英文单词：authentication（认证）、authorization(授权)。

今天的实验目标：
1）基于X509证书方式来完成authentication(认证)。
2）基于RBAC方式来完成authorization（授权）











环境说明：







操作步骤：

第1步：生成Private key文件：

执行：





查看一下生成的Private key文件：





第2步： 使用私钥生成csr请求文件：



查看csr文件：





第3.]]></description><category></category></item><item><title><![CDATA[个人笔记：vmware16 +ubuntu22.04搭建单节点 kubernetes 1.24+连接Harbor]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/124773009</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/124773009</guid><author>tjg138</author><pubDate>Sat, 14 May 2022 21:18:41 +0800</pubDate><description><![CDATA[本次搭建与上次的类似，不同之处是，本次不用安装docker。

不熟悉的同学，可以先看看我的上一篇文章（以下简称上一篇文章）：

个人笔记：vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2_湾区的候鸟的博客-优快云博客_vmware16密钥今天使用vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2，踩了不少的坑，记录一下，希望能帮到大家。先看一篇高质量的参考：基于vmware16 和 ubuntu20.04, 搭建单节点 kub]]></description><category></category></item><item><title><![CDATA[envoy入门(2)（k8s环境）]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/124662035</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/124662035</guid><author>tjg138</author><pubDate>Mon, 09 May 2022 11:52:59 +0800</pubDate><description><![CDATA[今天，让我们一起来在k8s环境下，体验一下envoy.

环境说明：

centos 7.9
	Harbor-2.4 ，域名：hb.cn
	docker:






实验的目标：

使用envoy POD做反向代理，访问另一个POD tomcat（业务容器），并通过NodePort的方式，把envoy的服务暴露去出，实现可以在k8s中任意node节点上访问，如下。





操作步骤：

第1步：准备tomcat 的文件.



上图中设置了tomcat服务的名称为：tomcat-9-svc，端口为80.]]></description><category></category></item><item><title><![CDATA[envoy入门(1)（docker环境）]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/124645157</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/124645157</guid><author>tjg138</author><pubDate>Sun, 08 May 2022 11:42:59 +0800</pubDate><description><![CDATA[今天，让我们一起来在docker环境下，体验一下envoy.

环境说明：

centos 7.9
	Harbor-2.4 ，域名：hb.cn
	docker:




实验的目标：

使用envoy容器做反向代理，访问另一个容器中的nginx（业务容器），如下。





操作步骤：

第1步：先跑一个nginx，作为业务逻辑，暴露端口为：8022。


docker run -d --name nginx-1215 --rm  -p 8022:80 hb.cn/repo/nginx:1.21.5

注意]]></description><category></category></item><item><title><![CDATA[使用kubectl create创建deployment(不使用yaml文件)]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/124634962</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/124634962</guid><author>tjg138</author><pubDate>Sat, 07 May 2022 17:39:27 +0800</pubDate><description><![CDATA[今天，我们来试试使用kubectl create的方式创建deployment，不使用yaml文件。

k8s实验环境说明：





第1步：创建有两个pod的deployment。



第2步：查看一下创建出来的pod和deployment、replicaset。





第3步：把svc以NodePort方式暴露出去，端口为80，指定selector。



第4步： 检查一下，发现endpoint没有生效。



原因是创建pod时忘记加label。

另外，我们没有指定外部端口，从上图可以看到]]></description><category></category></item><item><title><![CDATA[Ubuntu 20.04添加临时/永久路由]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/124625602</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/124625602</guid><author>tjg138</author><pubDate>Sat, 07 May 2022 10:47:31 +0800</pubDate><description><![CDATA[1）添加临时路由





2) 添加永久路由



保存上面的文件，然后执行：


netplan apply



重启上，上面的default规则还有，说明是永久的。


]]></description><category></category></item><item><title><![CDATA[个人笔记：vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/124550033</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/124550033</guid><author>tjg138</author><pubDate>Tue, 03 May 2022 08:36:08 +0800</pubDate><description><![CDATA[今天使用vmware16 +ubuntu20.04搭建单节点 kubernetes 1.22.2，踩了不少的坑，记录一下，希望能帮到大家。

先看一篇高质量的参考：

基于vmware16 和 ubuntu20.04, 搭建单节点 kubernetes 1.22.2_琦彦的博客-优快云博客基于vmware16 和 ubuntu20.04, 搭建单节点 kubernetes 1.22.2安装环境win10ubuntu版本 20.04.3docker版本 20.10.7k8s版本 1.22.2vmware参考]]></description><category></category></item><item><title><![CDATA[浅谈云原生的各种专有名词（1）]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/124483543</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/124483543</guid><author>tjg138</author><pubDate>Fri, 29 Apr 2022 11:58:00 +0800</pubDate><description><![CDATA[刚开始学习云原生的时候，被各种专有名词搞得一头雾水，新名称太多，反而让人不容易理解。

今天，就让我们理一下。

环境说明：







先看一张图：



0) docker公司

这是一个正确的废话，我们常说的docker，不仅是一门技术，还是一家公司。



官网：www.docker.com





1）docker client

也叫docker客户端, 这是一个命令工具，在安装在/usr/bin/docker下。当你打docker run xxx 时，它会向docker-daemon...]]></description><category></category></item><item><title><![CDATA[观察containerd-shim-runc-v2进程与容器里的1号进程]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/124465440</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/124465440</guid><author>tjg138</author><pubDate>Thu, 28 Apr 2022 09:25:42 +0800</pubDate><description><![CDATA[我们使用docker run 启用一个容器时，docker 会给每个容器都启动一个containerd-shim-runc-v2进程，一开始，我以为这个containerd-shim-runc-v2就是容器里的1号进程（PID=1）,但实际上不是。

如何证明containerd-shim-runc-v2不是容器里的1号进程（PID=1）呢？

证明如下：

第1步：环境检查。


 [root@workstation ~]# ps -ef|grep containerd
root       1120  ]]></description><category></category></item><item><title><![CDATA[我对Kube-Scheduler调度过程的理解]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/124182218</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/124182218</guid><author>tjg138</author><pubDate>Thu, 14 Apr 2022 21:55:45 +0800</pubDate><description><![CDATA[今天阅读了张磊老师的《深入剖析Kubernetes》第41章节，对调度器的一些说明。

对于kube-scheduler组件的整个调度流程，我个人的理解如下：

第1步：通过ApiServer，监听ETCD中对象的变化，完成：

a) 取得待调度的Pod列表，放入队列，即：调度队列(FIFO)。

b) 取得所有Node列表，放入缓存，即：Scheduler Cache。

第2步：从队列中挑选出一个POD，进行Predicates算法，得到一组可用的Node列表。

第3步：对Node列表进行的打分，从0]]></description><category></category></item><item><title><![CDATA[使用cgroup限制进程的cpu资源]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/124159038</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/124159038</guid><author>tjg138</author><pubDate>Thu, 14 Apr 2022 06:46:56 +0800</pubDate><description><![CDATA[今天尝试了一下使用cgroup (control group)来限制进程对CPU时间的使用。对于一个计算密集型的进程，要求只能使用10%的CPU时间。



准备工作：

1）准备一台CentOS 7服务器。

2）安装go环境。

3）安装cgexec命令。


 
[root@workstation cpu-01]# yum install libcgroup-tools.x86_64 -y
Loaded plugins: fastestmirror
Determining fastest m...]]></description><category></category></item><item><title><![CDATA[我的K8S-v1.23.1安装笔记]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/124129161</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/124129161</guid><author>tjg138</author><pubDate>Tue, 12 Apr 2022 17:29:56 +0800</pubDate><description><![CDATA[我的K8S-v1.23.4安装笔记

（2021-12-27）



第1步：在VMware中安装1台CentOS 7，即master.

镜像为：CentOS-7-x86_64-DVD-2009.iso



第2步：给master添加两张网卡，分别走无线网，VMnet2网。









注1：我的T490笔记本的固定无线IP为： 192.168.43.111





注2：VMnet2网的IP在192.168.114.x网段。





第3步：设置master的IP为：









注：]]></description><category></category></item><item><title><![CDATA[Go语言实现超时的3种方法]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/124114511</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/124114511</guid><author>tjg138</author><pubDate>Tue, 12 Apr 2022 08:11:02 +0800</pubDate><description><![CDATA[超时，指一个协程A开启另一个协程B，A会阻塞等待B一段指定的时间，例如：5秒，A通知B结束。也就是说，A就不愿意阻塞等待太久。

Go语言有多种方法实现这种超时，我总结出3种：

方法一：用两个通道 + A协程sleep

一个通道用来传数据，一个用来传停止信号。


package main

import (
	"fmt"
	"time"
)

// 老师视频里的生产者消费者

func main() {
	//知识点： 老师这里用了两个线程，一个用个传数据，一个用来传关闭信号
	messages :=]]></description><category></category></item><item><title><![CDATA[Kubernetes删除节点]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/123938497</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/123938497</guid><author>tjg138</author><pubDate>Sun, 03 Apr 2022 16:02:36 +0800</pubDate><description><![CDATA[今天在K8S集群 中删除一个工作节点，从3个变成2个，即把名为node3的工作节点删除。

操作步骤：

第1步：在master节上，执行：kubectl drain node3 --delete-local-data --force --ignore-daemonsets


[root@master test-hostnetwork]# kubectl drain node3 --delete-local-data --force --ignore-daemonsets
Flag --delete-lo]]></description><category></category></item><item><title><![CDATA[K8S冲浪（1）：体验ReadinessProbe]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/123926422</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/123926422</guid><author>tjg138</author><pubDate>Sat, 02 Apr 2022 19:52:32 +0800</pubDate><description><![CDATA[今天让我们一起来体验一下K8S中的探针：ReadinessProbe。

本文所用的示例代码，有一部分已放到码云上：

k8s-readiness-probe: 学习使用Kubenetes中的ReadinessProbe1）使用JDK 8 包括出jar。2）制件镜像，上传到harbor镜像私服3）制K8S资源的yaml文件4）部署到K8S集群中验证效果。https://gitee.com/wqhn2020/k8s-readiness-probe.git

操作步骤：

第1步：编写JAR包程序。

这是一个]]></description><category></category></item><item><title><![CDATA[kubebuilder实践笔记(4) - 编写简单的业务逻辑]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/123902106</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/123902106</guid><author>tjg138</author><pubDate>Fri, 01 Apr 2022 18:48:50 +0800</pubDate><description><![CDATA[今天使用kubebuilder，在一个Controller中编写简单的业务逻辑。

需求：

1）实现对象状态的转换：PENDING&gt;RUNNING&gt;DONE

2）到了指定的时间，controller会感知到，然后创建一个Pod，启动一个BusyBox的容器，打印出YOY。



声明：

1）本文的部分源码源于《Kubernetes编程》书籍，版权属于此书作者。

2） 本文的源码已放到码云：

https://gitee.com/wqhn2020/ncat.git

）本文使用的操作环境.]]></description><category></category></item><item><title><![CDATA[kubebuilder实践笔记(3) - 修改CRD中的字段]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/123893037</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/123893037</guid><author>tjg138</author><pubDate>Fri, 01 Apr 2022 12:14:57 +0800</pubDate><description><![CDATA[这一篇是在上一篇《kubebuilder实践笔记(2) - 入门体验_湾区的候鸟的博客-优快云博客》成功的基础上，再做一点点变化，给CRD加上几个自定义字段，使用kubebuilder重新生成代码，并部署到K8S中，修改资源对象，并观察自定义Controller里面的日志输出。



学习目标：

CRD加上几个自定义字段，使用kubebuilder重新构建，重新部署。



操作步骤：

第1步：修改guestbook_types.go文件，把GuestbookSpec与GuestbookStatus结]]></description><category></category></item><item><title><![CDATA[kubebuilder实践笔记(1) - CentOS 7 安装kubebuilder]]></title><link>https://blog.youkuaiyun.com/tjg138/article/details/123881461</link><guid>https://blog.youkuaiyun.com/tjg138/article/details/123881461</guid><author>tjg138</author><pubDate>Thu, 31 Mar 2022 19:59:52 +0800</pubDate><description><![CDATA[kubebuilder的安装非常简单

第1步：下载 kubebuilder v3.3.0版本。

https://github.com/kubernetes-sigs/kubebuilder/releases/download/v3.3.0/kubebuilder_linux_amd64

上面网站不太给力，我用CURL下载，失败了3次。

改为用迅雷下载，然后通过FTP上传到linux服务器上。





第2步：放入到/usr/local/bin，重命名，授权。


[root@workstatio.]]></description><category></category></item></channel></rss>