日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

CentOS单机安装k8s并部署.NET 6程序

發(fā)布時(shí)間:2023/12/4 asp.net 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CentOS单机安装k8s并部署.NET 6程序 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

學(xué)習(xí)云原生,k8s 是一個(gè)基礎(chǔ),為了做一些實(shí)驗(yàn),單機(jī)部署是最方便的,下面將介紹在 CentOS 中單機(jī)安裝 k8s ,并將一個(gè) .NET 6 的程序發(fā)布到 k8s 中。

環(huán)境

  • 宿主機(jī):Mac 10.15.7

  • CentOS

    • 版本:7.6

    • 內(nèi)存:4gb

    • cpu:2核

  • docker:20.10.12

  • k8s:1.23.4

準(zhǔn)備

1、創(chuàng)建一個(gè) CentOS 虛擬機(jī),配置如下:

  • 版本:7.6

  • cpu:2核

  • 內(nèi)存:4gb

2、執(zhí)行下面命令更新 yum 源:

yum?update

3、設(shè)置 iptables 檢查橋接流量,編輯 ?/etc/sysctl.conf 文件,在文件中添加如下內(nèi)容:

net.bridge.bridge-nf-call-iptables?=?1

4、禁用 swap:

swapoff?-a

修改 /etc/fstab 文件,將下圖紅框部分注釋:

安裝

1、安裝 docker:

sudo?yum?install?-y?yum-utils?device-mapper-persistent-data?lvm2sudo?yum-config-manager?--add-repo?https://download.docker.com/linux/centos/docker-ce.reposudo?yum-config-manager?--add-repo?http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposudo?yum-config-manager?--enable?docker-ce-edgesudo?yum?install?docker-cesystemctl?start?docker chkconfig?docker?on

2、在 /etc/yum.repos.d 下創(chuàng)建 k8s.repo, 并添加如下內(nèi)容:

[kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

3、安裝 kubelet、kubeadm 和 kubectl:

yum?install?-y?kubelet?kubeadm?kubectl systemctl?enable?kubelet??&&?systemctl?start?kubelet

4、在 root 目錄下創(chuàng)建文件 k8s-images.sh ,內(nèi)容如下:

for?i?in?`kubeadm?config?images?list`;?do?imageName=${i#k8s.gcr.io/}docker?pull?registry.aliyuncs.com/google_containers/$imageNamedocker?tag?registry.aliyuncs.com/google_containers/$imageName?k8s.gcr.io/$imageNamedocker?rmi?registry.aliyuncs.com/google_containers/$imageName done;

5、執(zhí)行 sh k8s-images.sh 命令來進(jìn)行相關(guān)鏡像的拉取,但最后會(huì)報(bào)一個(gè)錯(cuò),coredns 鏡像拉取失敗,如果是科學(xué)上網(wǎng)就不存在問題,錯(cuò)誤信息如下:

Error response from daemon: pull access denied for registry.aliyuncs.com/google_containers/k8s.gcr.io/coredns/coredns, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

可以手動(dòng)拉取鏡像來進(jìn)行處理,依次執(zhí)行下面命令:

docker?pull?coredns/coredns docker?tag?coredns/coredns:latest?k8s.gcr.io/coredns/coredns:v1.8.6 docker?rmi?coredns/coredns:latest

為什么上面 tag 的時(shí)候用的是 1.8.6 的版本,可以先執(zhí)行 kubeadm config images list查看下鏡像的版本,我這里執(zhí)行后的鏡像列表如下,而 coredns 就是 1.8.6:

k8s.gcr.io/kube-apiserver:v1.23.4 k8s.gcr.io/kube-controller-manager:v1.23.4 k8s.gcr.io/kube-scheduler:v1.23.4 k8s.gcr.io/kube-proxy:v1.23.4 k8s.gcr.io/pause:3.6 k8s.gcr.io/etcd:3.5.1-0 k8s.gcr.io/coredns/coredns:v1.8.6

6、設(shè)置 cgroup ,在 /etc/docker/ 目錄下添加 daemon.json 文件,內(nèi)容如下:

{"exec-opts":?["native.cgroupdriver=systemd"] }

執(zhí)行下面命令讓配置生效:

systemctl?daemon-reload systemctl?restart?docker

7、執(zhí)行下面命令開放端口,如果還是碰到各種端口不能訪問的問題,測(cè)試環(huán)境可以關(guān)閉防火墻:

#?6443?Kubernetes?API服務(wù)器?所有組件 firewall-cmd?--zone=public?--add-port=6443/tcp?--permanent?&&?firewall-cmd?--reload #?10250?Kubelet?APT?Kubelet自身,控制平面組件 firewall-cmd?--zone=public?--add-port=10250/tcp?--permanent?&&?firewall-cmd?--reload

8、執(zhí)行下面命令初始化 k8s :

kubeadm?init

初始化成功,會(huì)出現(xiàn)下圖的日志:

如果中途有報(bào)錯(cuò),進(jìn)行了其他的設(shè)置后,需要執(zhí)行 kubeadm reset 后再執(zhí)行 kubeadm init 。

安裝后的配置

1、根據(jù)上圖的提示進(jìn)行配置,依次執(zhí)行下面命令:

mkdir?-p?$HOME/.kube sudo?cp?-i?/etc/kubernetes/admin.conf?$HOME/.kube/config sudo?chown?$(id?-u):$(id?-g)?$HOME/.kube/config

3、因?yàn)槭菃螜C(jī)版,需要讓 master 節(jié)點(diǎn)參與工作:

kubectl?taint?nodes?--all?node-role.kubernetes.io/master-

3、 安裝網(wǎng)絡(luò)插件:

kubectl?apply?-f?"https://cloud.weave.works/k8s/net?k8s-version=$(kubectl?version?|?base64?|?tr?-d?'\n')"

4、執(zhí)行 kubectl get nodes ,如果 status 為 Ready ,說明安裝配置完成,master 節(jié)點(diǎn)注冊(cè)到了 k8s 中。

NAME ? ? ? ? ? ? ?STATUS ? ROLES ? ? ? ? ? ? ? ? ?AGE ? ? VERSION k8s-single-temp ? Ready ? ?control-plane,master ? 5m58s ? v1.23.4

部署 .NET 6 程序

1、在命令行執(zhí)行命令創(chuàng)建一個(gè)名為k8s-netcore-demo的項(xiàng)目:

dotnet?new?webApp?-o?k8s-netcore-demo?--no-https

2、進(jìn)入 k8s-netcore-demo 目錄執(zhí)行 dotnet publish ,將發(fā)布后的 publish 目錄復(fù)制到上面的 CentOS 的 root 目錄中。

3、進(jìn)入 publish 目錄,創(chuàng)建 Dockerfile 文件,內(nèi)容如下:

FROM?mcr.microsoft.com/dotnet/aspnet:6.0 COPY?.?/app WORKDIR?/app EXPOSE?80/tcp ENTRYPOINT?["dotnet",?"k8s-netcore-demo.dll"]

4、在 publish 目錄下執(zhí)行下面命令,將程序構(gòu)建成鏡像:

docker?build?-t?k8s-netcore-demo?.

5、搭建私有倉庫:

docker?pull?registry docker?run?-d?-p?8888:5000?--restart=always?registry

6、編輯 /etc/docker/daemon.json 文件,添加下面內(nèi)容:

{"exec-opts":?["native.cgroupdriver=systemd"],"insecure-registries":["10.211.55.10:8888"]?#?新加的內(nèi)容,IP?為宿主機(jī)的?IP }

執(zhí)行下面命令重啟生效:

sudo?systemctl?daemon-reload sudo?systemctl?restart?docker

7、將構(gòu)建的鏡像推送到私有倉庫:

docker?tag?k8s-netcore-demo?10.211.55.10:8888/k8s-netcore-demo docker?push?10.211.55.10:8888/k8s-netcore-demo

8、在 root 目錄下創(chuàng)建文件 deploy.yaml 文件,內(nèi)容如下:

apiVersion:?apps/v1 kind:?Deployment metadata:name:?k8s-netcore-demonamespace:?k8s-netcorelabels:k8s-app:?k8s-netcore-demo spec:replicas:?2selector:matchLabels:k8s-app:?k8s-netcore-demotemplate:metadata:labels:k8s-app:?k8s-netcore-demospec:containers:-?name:?k8s-netcore-demoimage:?10.211.55.10:8888/k8s-netcore-demoports:-?containerPort:?80 --- #?-------------------?Service?-------------------?# kind:?Service apiVersion:?v1 metadata:labels:k8s-app:?k8s-netcore-demoname:?k8s-netcore-demonamespace:?k8s-netcore spec:type:?NodePortports:-?port:?80targetPort:?80selector:k8s-app:?k8s-netcore-demo
  • 所有配置為 k8s-netcore-demo 的地方是構(gòu)建的鏡像的名稱;

  • image 的值為 10.211.55.10:8888/k8s-netcore-demo,這個(gè)是鏡像發(fā)布到私有倉庫中的地址;

  • namespace 的值配置為創(chuàng)建的 namespace 的名稱。

9、在 k8s 中創(chuàng)建 namespace :

kubectl?create?namespace?k8s-netcore

10、執(zhí)行 deploy.yaml 文件:

kubectl?create?-f?deploy.yaml?--validate #加上?--validate?參數(shù),當(dāng)yaml文件有錯(cuò)誤時(shí),會(huì)給出提示

11、使用 kubectl get 命令查看創(chuàng)建情況:

kubectl?get?deploy?-n?k8s-netcore #?結(jié)果如下: NAME???????????????READY???UP-TO-DATE???AVAILABLE???AGE k8s-netcore-demo???2/2?????2????????????2???????????8h

12、查看訪問端口:

kubectl?get?svc?-n?k8s-netcore #?結(jié)果如下: NAME???????????????TYPE???????CLUSTER-IP??????EXTERNAL-IP???PORT(S)????????AGE k8s-netcore-demo???NodePort???10.106.23.177???<none>????????80:32230/TCP???8h

13、訪問 http://10.211.55.10:32230 ,正常出現(xiàn)下圖則部署成功:

總結(jié)

我按照上面的步驟可以順利安裝成功,但由于系統(tǒng)、環(huán)境、網(wǎng)絡(luò)、版本的差異可能會(huì)出現(xiàn)問題,也不用擔(dān)心,根據(jù)錯(cuò)誤信息搜索就能夠解決。

有問題不可怕,不斷地去解決問題,我們的能力才能提升。

總結(jié)

以上是生活随笔為你收集整理的CentOS单机安装k8s并部署.NET 6程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。