<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          CentOS單機(jī)安裝k8s并部署.NET 6程序

          共 5854字,需瀏覽 12分鐘

           ·

          2022-02-21 23:51

          學(xué)習(xí)云原生,k8s 是一個基礎(chǔ),為了做一些實驗,單機(jī)部署是最方便的,下面將介紹在 CentOS 中單機(jī)安裝 k8s ,并將一個 .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)建一個 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?lvm2

          sudo?yum-config-manager?--add-repo?https://download.docker.com/linux/centos/docker-ce.repo

          sudo?yum-config-manager?--add-repo?http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

          sudo?yum-config-manager?--enable?docker-ce-edge

          sudo?yum?install?docker-ce

          systemctl?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.gpg
          ???????http://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/$imageName
          ??docker?tag?registry.aliyuncs.com/google_containers/$imageName?k8s.gcr.io/$imageName
          ??docker?rmi?registry.aliyuncs.com/google_containers/$imageName
          done;

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

          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

          可以手動拉取鏡像來進(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 的時候用的是 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í)行下面命令開放端口,如果還是碰到各種端口不能訪問的問題,測試環(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

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

          如果中途有報錯,進(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、因為是單機(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)注冊到了 k8s 中。

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

          部署 .NET 6 程序

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

          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-demo
          ??namespace:?k8s-netcore
          ??labels:
          ????k8s-app:?k8s-netcore-demo
          spec:
          ??replicas:?2
          ??selector:
          ????matchLabels:
          ??????k8s-app:?k8s-netcore-demo
          ??template:
          ????metadata:
          ??????labels:
          ????????k8s-app:?k8s-netcore-demo
          ????spec:
          ??????containers:
          ??????-?name:?k8s-netcore-demo
          ????????image:?10.211.55.10:8888/k8s-netcore-demo
          ????????ports:
          ????????-?containerPort:?80
          ---
          #?-------------------?Service?-------------------?#
          kind:?Service
          apiVersion:?v1
          metadata:
          ??labels:
          ????k8s-app:?k8s-netcore-demo
          ??name:?k8s-netcore-demo
          ??namespace:?k8s-netcore
          spec:
          ??type:?NodePort
          ??ports:
          ????-?port:?80
          ??????targetPort:?80
          ??selector:
          ????k8s-app:?k8s-netcore-demo
          • 所有配置為 k8s-netcore-demo 的地方是構(gòu)建的鏡像的名稱;
          • image 的值為 10.211.55.10:8888/k8s-netcore-demo,這個是鏡像發(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文件有錯誤時,會給出提示

          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???????????80:32230/TCP???8h

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

          總結(jié)

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

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

          瀏覽 166
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  蜜桃vs无码 | 在线日韩国产网站 | 国产性爱AV | 中国免费毛片 | YoUJizz日本55丰满熟妇 |