建站公司咨询,做菠菜网站,做电影网站赚了几百万,网站建设报价word文档搭建K8S基础环境
如果已经有K8S环境的同学可以跳过#xff0c;如果没有#xff0c;推荐你看看我的《Ubuntu22加Minikue搭建K8S环境》#xff0c;课程目录如下#xff1a;
Ubuntu22安装Vscode
下载#xff1a;https://code.visualstudio.com/Download
安装命令#…搭建K8S基础环境
如果已经有K8S环境的同学可以跳过如果没有推荐你看看我的《Ubuntu22加Minikue搭建K8S环境》课程目录如下
Ubuntu22安装Vscode
下载https://code.visualstudio.com/Download
安装命令
sudo dpkg -i code_1.85.1-1702462158_amd64.debUbuntu22搭建Golang开发环境
下载https://studygolang.com/dl 将其上传到Downloads目录下。 解压
tar -xzvf go1.21.5.linux-amd64.tar.gz将其移动到特定目录
mv go /usr/local/go1.21配置环境变量
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 GOPROXYhttps://goproxy.io,direct激活环境变量并测试
source ~/.bashrc
go versionVscode配置Golang环境
第一步安装Go插件
第二步安装Golang依赖
go install golang.org/x/tools/cmd/gurulatest
go install golang.org/x/tools/cmd/gorenamelatest
go install golang.org/x/tools/cmd/fiximportslatest
go install golang.org/x/tools/cmd/goplslatest
go install golang.org/x/tools/cmd/godexlatest编写第一个Go程序
第一步创建项目目录
mkdir -p ~/zdpgo/zdpgo_k8s第二步创建mod
cd ~/zdpgo/zdpgo_k8s
go mod init zdpgo_k8s第三步使用vscode打开目录
code .第四步创建main.go
package mainimport fmtfunc main(){fmt.Println(你好张大鹏)
}运行Go程序
go run main.go编写Golang HTTP应用
main.go
package mainimport (fmtlognet/http
)func main() {http.HandleFunc(/, handleIndex)log.Fatal(http.ListenAndServe(:18888, nil))
}func handleIndex(writer http.ResponseWriter, request *http.Request) {fmt.Fprintln(writer, 你好张大鹏)
}运行
go run main.go浏览器访问http://localhost:18888/
使用Docker部署Web应用
创建Dockerfile
FROM golang:1.21-alpine AS build# 第一次构建容器
WORKDIR /src/
COPY main.go go.* /src/
RUN export GOPROXYhttps://goproxy.io CGO_ENABLED0 go build -o /bin/demo# 第二次构建容器
FROM scratch
COPY --frombuild /bin/demo /bin/demo
EXPOSE 18888
ENTRYPOINT [/bin/demo]如果已经存在镜像删除原来的镜像否则可以跳过
docker rmi myhello构建镜像
docker build -t myhello .运行容器
docker run --name myhello -p 9998:18888 -d myhello浏览器访问http://localhost:9998
使用K8S部署Docker镜像
登录Docker Hub
先注册一个Docker Hub的账号 然后执行下面的命令登录
docker login命名和推送镜像
# 给镜像命名
docker image tag myhello zhangdapeng520/myhello# 将镜像推送到Docker Hub
docker image push zhangdapeng520/myhelloK8S部署镜像
如果之前的容器没有删除则先删除之前的容器
docker stop myhello
docker rm myhello使用K8S部署myhello
# 从远程拉取镜像并部署
kubectl run demo --imagezhangdapeng520/myhello --port 18888 --labels appdemo# 部署本地镜像 imagePullPolicy: Never
kubectl run demo --imagezhangdapeng520/myhello --image-pull-policyIfNotPresent --port 18888 --labels appdemo查看K8S部署的容器状态
部署以后通过以下命令可以查看我们部署的容器的状态
kubectl get pods --selector appdemo启用K8S的端口转发
此时我们访问 http://localhost:18888/ 是没有办法成功的。因为我们在使用Docker进行部署的时候也需要做端口转发才能够正常访问部署到K8S的时候也需要进行端口转发才能够正常访问。
通过以下命令可以实现K8S的端口转发
kubectl port-forward pod/demo 9998:18888这里的 pod/demo 是我们K8S部署的时候指定的run demo。这里的9998:18888就和Docker的映射方式类似了将宿主机的9998端口映射到K8S的18888端口。
端口转发以后我们访问 http://localhost:9998/ 就可以成功了。
删除容器
使用以下命令可以删除部署到K8S的容器
kubectl delete pod demo