搭建K8S基础环境
如果已经有K8S环境的同学可以跳过,如果没有,推荐你看看我的《Ubuntu22加Minikue搭建K8S环境》,课程目录如下:

Ubuntu22安装Vscode
下载:https://code.visualstudio.com/Download

安装命令:
            
            
              bash
              
              
            
          
          sudo dpkg -i code_1.85.1-1702462158_amd64.debUbuntu22搭建Golang开发环境

将其上传到Downloads目录下。
解压:
            
            
              bash
              
              
            
          
          tar -xzvf go1.21.5.linux-amd64.tar.gz将其移动到特定目录:
            
            
              bash
              
              
            
          
          mv go /usr/local/go1.21配置环境变量:
            
            
              bash
              
              
            
          
          vim ~/.bashrc
# 添加如下配置
export GOROOT=/usr/local/go1.21
export GOPATH=/home/zhangdapeng/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT/bin
export PATH=$PATH:$GOPATH/bin
export GOPROXY=https://goproxy.io,direct激活环境变量并测试:
            
            
              bash
              
              
            
          
          source ~/.bashrc
go versionVscode配置Golang环境
第一步:安装Go插件

第二步:安装Golang依赖
            
            
              bash
              
              
            
          
          go install golang.org/x/tools/cmd/guru@latest
go install golang.org/x/tools/cmd/gorename@latest
go install golang.org/x/tools/cmd/fiximports@latest
go install golang.org/x/tools/cmd/gopls@latest
go install golang.org/x/tools/cmd/godex@latest编写第一个Go程序
第一步:创建项目目录
            
            
              bash
              
              
            
          
          mkdir -p ~/zdpgo/zdpgo_k8s第二步:创建mod
            
            
              bash
              
              
            
          
          cd ~/zdpgo/zdpgo_k8s
go mod init zdpgo_k8s第三步:使用vscode打开目录
            
            
              bash
              
              
            
          
          code .第四步:创建main.go
            
            
              go
              
              
            
          
          package main
import "fmt"
func main(){
	fmt.Println("你好,张大鹏")
}运行Go程序:
            
            
              bash
              
              
            
          
          go run main.go编写Golang HTTP应用
main.go
            
            
              go
              
              
            
          
          package main
import (
	"fmt"
	"log"
	"net/http"
)
func main() {
	http.HandleFunc("/", handleIndex)
	log.Fatal(http.ListenAndServe(":18888", nil))
}
func handleIndex(writer http.ResponseWriter, request *http.Request) {
	fmt.Fprintln(writer, "你好,张大鹏")
}运行:
            
            
              bash
              
              
            
          
          go run main.go浏览器访问:http://localhost:18888/
使用Docker部署Web应用
创建Dockerfile
            
            
              dockerfile
              
              
            
          
          FROM golang:1.21-alpine AS build
# 第一次构建容器
WORKDIR /src/
COPY main.go go.* /src/
RUN export GOPROXY=https://goproxy.io && CGO_ENABLED=0 go build -o /bin/demo
# 第二次构建容器
FROM scratch
COPY --from=build /bin/demo /bin/demo
EXPOSE 18888
ENTRYPOINT ["/bin/demo"]如果已经存在镜像,删除原来的镜像,否则可以跳过:
            
            
              bash
              
              
            
          
          docker rmi myhello构建镜像:
            
            
              bash
              
              
            
          
          docker build -t myhello .运行容器:
            
            
              bash
              
              
            
          
          docker run --name myhello -p 9998:18888 -d myhello浏览器访问:http://localhost:9998
使用K8S部署Docker镜像
登录Docker Hub
先注册一个Docker Hub的账号 ,然后执行下面的命令登录:
            
            
              bash
              
              
            
          
          docker login命名和推送镜像
            
            
              bash
              
              
            
          
          # 给镜像命名
docker image tag myhello zhangdapeng520/myhello
# 将镜像推送到Docker Hub
docker image push zhangdapeng520/myhelloK8S部署镜像
如果之前的容器没有删除,则先删除之前的容器:
            
            
              bash
              
              
            
          
          docker stop myhello
docker rm myhello使用K8S部署myhello:
            
            
              bash
              
              
            
          
          # 从远程拉取镜像并部署
kubectl run demo --image=zhangdapeng520/myhello --port 18888 --labels app=demo
# 部署本地镜像 imagePullPolicy: Never
kubectl run demo --image=zhangdapeng520/myhello --image-pull-policy=IfNotPresent --port 18888 --labels app=demo查看K8S部署的容器状态
部署以后,通过以下命令,可以查看我们部署的容器的状态:
            
            
              bash
              
              
            
          
          kubectl get pods --selector app=demo启用K8S的端口转发
此时,我们访问 http://localhost:18888/ 是没有办法成功的。因为我们在使用Docker进行部署的时候,也需要做端口转发才能够正常访问,部署到K8S的时候,也需要进行端口转发才能够正常访问。
通过以下命令,可以实现K8S的端口转发:
            
            
              bash
              
              
            
          
          kubectl port-forward pod/demo 9998:18888这里的 pod/demo 是我们K8S部署的时候,指定的run demo。这里的9998:18888就和Docker的映射方式类似了,将宿主机的9998端口映射到K8S的18888端口。
端口转发以后,我们访问 http://localhost:9998/ 就可以成功了。
删除容器
使用以下命令,可以删除部署到K8S的容器:
            
            
              bash
              
              
            
          
          kubectl delete pod demo