国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

K8s集群離線安裝-kubeadm-詳細篇

這篇具有很好參考價值的文章主要介紹了K8s集群離線安裝-kubeadm-詳細篇。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、部署k8s的兩種方式:kubeadm 和二進制源碼安裝

#本次實驗采用的部署Kubernetes方式:
kubeadm
Kubeadm是一個K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。

2、環(huán)境準備

#服務器要求:
建議最小硬件配置:2核CPU、2G內存、20G硬盤
服務器最好可以訪問外網(wǎng),會有從網(wǎng)上拉取鏡像需求,如果服務器不能上網(wǎng),需要提前下載對應鏡像并導入節(jié)點
#軟件環(huán)境:
操作系統(tǒng):CentOS Linux release 7.8.2003 (Core)
Docker:20.10.16
K8s:1.23
名稱 IP
master 192.168.32.128
node1 192.168.32.129
node2 192.168.32.130
repo 192.168.32.131

3、下載安裝包至本地

# 找一臺可以連接外網(wǎng)的機器,下載所需的所有依賴安裝包,作為yum倉庫服務器
# yum倉庫服務器 192.168.32.131

# 下載所需工具依賴包
yum install --downloadonly --downloaddir=/opt/repo ntpdate wget httpd createrepo vim telnet netstat lrzsz

[root@repo ~]# yum clean all
[root@repo ~]# yum makecache
[root@repo ~]# yum install -y wget
[root@repo ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
[root@repo ~]# yum install --downloadonly --downloaddir=/opt/repo docker-ce
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

# 先下載好kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0所需要的依賴包

[root@repo ~]# yum install --downloadonly --downloaddir=/opt/repo  kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
[root@repo ~]# wget --no-check-certificate https://docs.projectcalico.org/manifests/calico.yaml
[root@repo ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml

4、將安裝包拷貝至本地并制作yum源

#使用yum下載命令
yum install ${軟件} --downloadonly --downloaddir=${指定目錄}
如:yum -y install httpd --downloadonly --downloaddir=/data/repo 
yum -y install autossh --downloadonly --downloaddir=/data/repo 
#將下載軟件包的目錄制作為yum源
[root@repo opt]# mkdir repo
[root@repo opt]# createrepo /opt/repo/
#命令執(zhí)行后,會在該目錄下創(chuàng)建一個repodata目錄,如下圖:
[root@repo repo]# ls
repodata

# 將上一步的安裝包全部拷貝至192.168.32.131,并制作本地的yum源
更新createrepo
[root@repo repo]# createrepo --update /opt/repo
cd /opt/repo
yum install -y httpd
systemctl start httpd && systemctl enable httpd
ln -s /opt/repo /var/www/html/
# 此時就制作好了本地yum源

# 例子
下載php-mysql到createrepo倉庫中:
yum install php-mysql --downloadonly --downloaddir=/opt/repo
[root@repo repo]# ls
libzip-0.10.1-8.el7.x86_64.rpm  php-common-5.4.16-48.el7.x86_64.rpm  php-mysql-5.4.16-48.el7.x86_64.rpm  php-pdo-5.4.16-48.el7.x86_64.rpm  repodata

#在內網(wǎng)機器上搜索php-mysql 
[root@k8s-node2 yum.repos.d]# yum search php-mysql
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
================================================================== N/S matched: php-mysql ==================================================================
php-mysql.x86_64 : A module for PHP applications that use MySQL databases

  名稱和簡介匹配 only,使用“search all”試試。

k8s離線安裝,k8s,kubernetes,docker,運維
k8s離線安裝,k8s,kubernetes,docker,運維## 5、初始化配置

5.1、安裝環(huán)境準備:下面的操作需要在所有的節(jié)點上執(zhí)行。

# 關閉防火墻
systemctl stop firewalld
systemctl disable firewalld
# 關閉selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
setenforce 0  # 臨時
# 關閉swap
swapoff -a  # 臨時
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久
# 根據(jù)規(guī)劃設置主機名
# 將橋接的IPv4流量傳遞到iptables的鏈
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system  # 生效
# 時間同步
yum install ntpdate -y
ntpdate time.windows.com
hostnamectl set-hostname k8s-node2
# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.32.128 master
192.168.32.129 node1
192.168.32.130 node2
192.168.32.131 repo
EOF
# 在每個節(jié)點創(chuàng)建離線環(huán)境repo源
cat > /etc/yum.repos.d/local.repo << EOF
[local]
name=local
baseurl=http://192.168.32.131/repo/   # 目錄地址很重要,一定要加對 必須加上/
enabled=1
gpgcheck=0
EOF

# 模擬離線狀態(tài)下的yum 倉庫
[root@k8s-master yum.repos.d]# cd /etc/yum.repos.d/
[root@k8s-master yum.repos.d]# mkdir bak
[root@k8s-master yum.repos.d]# mv *.repo bak/
[root@k8s-master yum.repos.d]# cd bak/
[root@k8s-master yum.repos.d]# mv local.repo ../
[root@k8s-master yum.repos.d]# yum clean all
[root@k8s-master yum.repos.d]# yum makecache
[root@k8s-master yum.repos.d]# yum repolist

5.2、安裝 Docker、kubeadm、kubelet【所有節(jié)點】

#安裝docker:
yum -y install docker-ce
systemctl enable docker && systemctl start docker

#配置鏡像下載加速器:
vim /etc/docker/daemon.json

{
  "registry-mirrors": ["https://l51yxa8e.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}

systemctl restart docker
#查看docker信息,進行確認 
docker info 
                                                       
#先安裝好kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0所需要的依賴包
yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0

#先設置kubelet 為自啟動
systemctl enable kubelet

所安裝的依賴包都是來自local 本地倉庫
k8s離線安裝,k8s,kubernetes,docker,運維

6、部署k8s-master【master執(zhí)行】

6.1、kubeadm部署

# 執(zhí)行kubeadm時,需要用到一些鏡像,我們需要提前準備。
# 查看需要依賴哪些鏡像
[root@k8s-master ~]# kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.23.0
k8s.gcr.io/kube-controller-manager:v1.23.0
k8s.gcr.io/kube-scheduler:v1.23.0
k8s.gcr.io/kube-proxy:v1.23.0
k8s.gcr.io/pause:3.6
k8s.gcr.io/etcd:3.5.1-0
k8s.gcr.io/coredns/coredns:v1.8.6

# 這里需要在192.168.32.131機器上執(zhí)行

# 在生產(chǎn)環(huán)境,是肯定訪問不了k8s.gcr.io這個地址的。在有大陸聯(lián)網(wǎng)的機器上,也是無法訪問的。所以我們需要使用國內鏡像先下載下來。
# 解決辦法跟簡單,我們在一臺可以上網(wǎng)的機器上使用docker命令搜索下
[root@repo yum.repos.d]# docker search kube-apiserver
NAME                                    DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
aiotceo/kube-apiserver                  end of support, please pull kubestation/kube…   20                   
mirrorgooglecontainers/kube-apiserver                                                   19                   
kubesphere/kube-apiserver                                                               7                    
kubeimage/kube-apiserver-amd64          k8s.gcr.io/kube-apiserver-amd64                 5                    
empiregeneral/kube-apiserver-amd64      kube-apiserver-amd64                            4                    [OK]
k8simage/kube-apiserver                                                                 3                    
docker/desktop-kubernetes-apiserver     Mirror of selected tags from k8s.gcr.io/kube…   1                    
mirrorgcrio/kube-apiserver              mirror of k8s.gcr.io/kube-apiserver:v1.23.6     1                    
# 選擇stars 最多的 aiotceo/kube-apiserver
# 下載對應版本的base鏡像
# kubeadm 所需鏡像

registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.0
registry.aliyuncs.com/google_containers/kube-controller-manager:v1.23.0
registry.aliyuncs.com/google_containers/kube-scheduler:v1.23.0
registry.aliyuncs.com/google_containers/kube-proxy:v1.23.0
registry.aliyuncs.com/google_containers/pause:3.6
registry.aliyuncs.com/google_containers/etcd:3.5.1-0
registry.aliyuncs.com/google_containers/coredns:v1.8.6

# 編寫 pull 腳本:
vim pull_images.sh

#!/bin/bash
images=(
registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.0
registry.aliyuncs.com/google_containers/kube-controller-manager:v1.23.0
registry.aliyuncs.com/google_containers/kube-scheduler:v1.23.0
registry.aliyuncs.com/google_containers/kube-proxy:v1.23.0
registry.aliyuncs.com/google_containers/pause:3.6
registry.aliyuncs.com/google_containers/etcd:3.5.1-0
registry.aliyuncs.com/google_containers/coredns:v1.8.6
)
for pullimageName in ${images[@]} ; do
docker pull $pullimageName
done

# 編寫 save 腳本:
vim save_images.sh
#!/bin/bash
images=(
registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.0
registry.aliyuncs.com/google_containers/kube-controller-manager:v1.23.0
registry.aliyuncs.com/google_containers/kube-scheduler:v1.23.0
registry.aliyuncs.com/google_containers/kube-proxy:v1.23.0
registry.aliyuncs.com/google_containers/pause:3.6
registry.aliyuncs.com/google_containers/etcd:3.5.1-0
registry.aliyuncs.com/google_containers/coredns:v1.8.6
)

for imageName in ${images[@]}; do
key=`echo $imageName | awk -F '\\\/' '{print $3}' | awk -F ':' '{print $1}'`
docker save -o $key.tar $imageName
done

# 將save 出來的鏡像傳送到master節(jié)點上
[root@repo images]# ll
total 755536
-rw------- 1 root root  46967296 Sep  4 02:37 coredns.tar
-rw------- 1 root root 293936128 Sep  4 02:37 etcd.tar
-rw------- 1 root root 136559616 Sep  4 02:36 kube-apiserver.tar
-rw------- 1 root root 126385152 Sep  4 02:37 kube-controller-manager.tar
-rw------- 1 root root 114243584 Sep  4 02:37 kube-proxy.tar
-rw------- 1 root root  54864896 Sep  4 02:37 kube-scheduler.tar
-rw------- 1 root root    692736 Sep  4 02:37 pause.tar

scp *.tar root@192.168.32.128:/root/

#以下在master節(jié)點上執(zhí)行

# 編寫 load 腳本:
vim load_images.sh
#!/bin/bash
images=(
kube-apiserver
kube-controller-manager
kube-scheduler
kube-proxy
pause
etcd
coredns
)
for imageName in ${images[@]} ; do
key=.tar
docker load -i $imageName$key
done

[root@master ~]# docker images
REPOSITORY                                                        TAG        IMAGE ID       CREATED         SIZE
registry.aliyuncs.com/google_containers/kube-apiserver            v1.23.0   9ca5fafbe8dc   2 weeks ago     135MB
registry.aliyuncs.com/google_containers/kube-proxy                v1.23.0   71b9bf9750e1   2 weeks ago     112MB
registry.aliyuncs.com/google_containers/kube-controller-manager   v1.23.0   91a4a0d5de4e   2 weeks ago     125MB
registry.aliyuncs.com/google_containers/kube-scheduler            v1.23.0   d5c0efb802d9   2 weeks ago     53.5MB
registry.aliyuncs.com/google_containers/etcd                      3.5.1-0    25f8c7f3da61   10 months ago   293MB
registry.aliyuncs.com/google_containers/coredns                   v1.8.6     a4ca41631cc7   11 months ago   46.8MB
registry.aliyuncs.com/google_containers/pause                     3.6        6270bb605e12   12 months ago   683kB


kubeadm init \
  --apiserver-advertise-address=192.168.32.128 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.23.0 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16 \
  --ignore-preflight-errors=all
  
 初始化之后,會輸出一個join命令,先復制出來,node節(jié)點加入master會使用。
 --image-repository registry.aliyuncs.com/google_containers 鏡像倉庫,離線安裝需要把相關鏡像先拉取下來
 --apiserver-advertise-address 集群通告地址
 --image-repository 由于默認拉取鏡像地址k8s.gcr.io國內無法訪問,這里指定阿里云鏡像倉庫地址
 --kubernetes-version K8s版本,與上面安裝的一致
 --service-cidr 集群內部虛擬網(wǎng)絡,Pod統(tǒng)一訪問入口
 --pod-network-cidr Pod網(wǎng)絡,與下面部署的CNI網(wǎng)絡組件yaml中保持一致
 # 安裝完成之后會有token,記錄下來有用
 Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.32.128:6443 --token 6m4wt4.y90169m53e6nen8d \
	--discovery-token-ca-cert-hash sha256:0ea734ba54d630659ed78463d0f38fc6c407fabe9c8a0d41913b626160981402 

6.2、拷貝k8s認證文件

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#查看工作節(jié)點:
[root@master .kube]# kubectl get nodes
NAME     STATUS     ROLES                  AGE     VERSION
master   NotReady   control-plane,master   6m46s   v1.23.0
# 注:由于網(wǎng)絡插件還沒有部署,還沒有準備就緒 NotReady,繼續(xù)操作。 

7、配置k8s的node節(jié)點【node節(jié)點操作】

# 向集群添加新節(jié)點,執(zhí)行在kubeadm init輸出的kubeadm join命令
# 在192.168.32.129 192.1168.32.130主機上輸入以下命令

[root@k8s-node1 ~]# kubeadm join 192.168.32.128:6443 --token 6m4wt4.y90169m53e6nen8d \
--discovery-token-ca-cert-hash sha256:0ea734ba54d630659ed78463d0f38fc6c407fabe9c8a0d41913b626160981402  
[preflight] Running pre-flight checks
	[WARNING Hostname]: hostname "k8s-node1" could not be reached
	[WARNING Hostname]: hostname "k8s-node1": lookup k8s-node1 on 8.8.8.8:53: no such host
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...

This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

#默認token有效期為24小時,當過期之后,該token就不可用了。這時就需要重新創(chuàng)建token,可以直接使用命令快捷生成:
kubeadm token create --print-join-command

# 在192.168.32.128主機上
[root@master .kube]# kubectl get nodes
NAME        STATUS     ROLES                  AGE   VERSION
k8s-node1   NotReady   <none>                 47s   v1.23.0
k8s-node2   NotReady   <none>                 8s    v1.23.0
master      NotReady   control-plane,master   10m   v1.23.0
# 注:由于網(wǎng)絡插件還沒有部署,還沒有準備就緒 NotReady,繼續(xù)操作。

8、部署容器網(wǎng)絡 (master執(zhí)行)

# Calico是一個純三層的數(shù)據(jù)中心網(wǎng)絡方案,是目前Kubernetes主流的網(wǎng)絡方案。
# calico鏡像 在192.168.32.131能連接外網(wǎng)的主機上下載calico鏡像,然后傳到master主機上

# 查看pod 網(wǎng)段
[root@master .kube]# cat /etc/kubernetes/manifests/kube-controller-manager.yaml | grep cluster-cidr=
    - --cluster-cidr=10.244.0.0/16
    
#把calico.yaml里pod所在網(wǎng)段改成kubeadm init時選項--pod-network-cidr所指定的網(wǎng)段,
直接用vim編輯打開此文件查找192,按如下標記進行修改:
# no effect. This should fall within `--cluster-cidr`.
# - name: CALICO_IPV4POOL_CIDR
#   value: "192.168.0.0/16"
# Disable file logging so `kubectl logs` works.
- name: CALICO_DISABLE_FILE_LOGGING
value: "true"
修改:
把兩個#及#后面的空格去掉,并把192.168.0.0/16改成10.244.0.0/16
# no effect. This should fall within `--cluster-cidr`.
- name: CALICO_IPV4POOL_CIDR      #此處
value: "10.244.0.0/16"			 #此處
# Disable file logging so `kubectl logs` works.
- name: CALICO_DISABLE_FILE_LOGGING
value: "true"  

# 指定網(wǎng)卡,不然創(chuàng)建pod 會有報錯 
# 報錯信息
network: error getting ClusterInformation: connection is unauthorized: Unauthorized
# Cluster type to identify the deployment type
  - name: CLUSTER_TYPE
  value: "k8s,bgp"
# 下面添加
  - name: IP_AUTODETECTION_METHOD
    value: "interface=eth0"
    # eth0為本地網(wǎng)卡名字

# 參考鏈接:https://blog.csdn.net/m0_61237221/article/details/125217833
# 修改網(wǎng)卡名稱教程:https://www.freesion.com/article/991174666/ 

# calico 版本
docker.io/calico/cni:v3.22.1
docker.io/calico/pod2daemon-flexvol:v3.22.1
docker.io/calico/node:v3.22.1
docker.io/calico/kube-controllers:v3.22.1

vim save_calico_images.sh
#!/bin/bash
images=(
docker.io/calico/cni:v3.22.1
docker.io/calico/pod2daemon-flexvol:v3.22.1
docker.io/calico/node:v3.22.1
docker.io/calico/kube-controllers:v3.22.1
)

for imageName in ${images[@]}; do
key=`echo $imageName | awk -F '\\\/' '{print $3}' | awk -F ':' '{print $1}'`
docker save -o $key.tar $imageName
done

# 192.168.32.128
vim load_calico_images.sh 

#!/bin/bash
images=(
cni
kube-controllers
node
pod2daemon-flexvol
)
for imageName in ${images[@]} ; do
key=.tar
docker load -i $imageName$key
done

# dashboard 版本鏡像
kubernetesui/dashboard:v2.5.1
kubernetesui/metrics-scraper:v1.0.7

#下載YAML:
wget http://192.168.32.131/repo/calico.yaml

# 下載完后還需要修改里面定義Pod網(wǎng)絡(CALICO_IPV4POOL_CIDR),與前面kubeadm init的 --pod-network-cidr指定的一樣。
  # The default IPv4 pool to create on startup if none exists. Pod IPs will be
            # chosen from this range. Changing this value after installation will have
            # no effect. This should fall within `--cluster-cidr`.
            # - name: CALICO_IPV4POOL_CIDR
            #   value: "10.244.0.0/16" # 修改此處

# 修改完后文件后,進行部署:
kubectl apply -f calico.yaml
kubectl get pods -n kube-system

# 執(zhí)行結束要等上一會才全部running
# 等Calico Pod都Running后,節(jié)點也會準備就緒。
# 注:以后所有yaml文件都只在Master節(jié)點執(zhí)行。
# 安裝目錄:/etc/kubernetes/
# 組件配置文件目錄:/etc/kubernetes/manifests/

[root@master ~]# kubectl get nodes -o wide
NAME        STATUS   ROLES                  AGE     VERSION   INTERNAL-IP      EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME
k8s-node1   Ready    <none>                 3h20m   v1.23.0   192.168.32.129   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://20.10.17
k8s-node2   Ready    <none>                 3h19m   v1.23.0   192.168.32.130   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://20.10.17
master      Ready    control-plane,master   3h30m   v1.23.0   192.168.32.128   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://20.10.17
[root@master ~]# kubectl get nodes,svc -o wide
NAME             STATUS   ROLES                  AGE     VERSION   INTERNAL-IP      EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME
node/k8s-node1   Ready    <none>                 3h20m   v1.23.0   192.168.32.129   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://20.10.17
node/k8s-node2   Ready    <none>                 3h19m   v1.23.0   192.168.32.130   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://20.10.17
node/master      Ready    control-plane,master   3h30m   v1.23.0   192.168.32.128   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://20.10.17

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE     SELECTOR
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   3h30m   <none>


9、部署Dashboard (master執(zhí)行)

# 參考網(wǎng)址:https://blog.csdn.net/qq_41980563/article/details/123182854

# Dashboard是官方提供的一個UI,可用于基本管理K8s資源。
# https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml
# YAML下載地址:wget http://192.168.32.131/repo/recommended.yaml
# 默認Dashboard只能集群內部訪問,修改Service為NodePort類型,暴露到外部:
vim recommended.yaml   #在第三步中下載的
...
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30001
  selector:
    k8s-app: kubernetes-dashboard
  type: NodePort
...

# 版本信息:
kubernetesui/dashboard:v2.5.1
kubernetesui/metrics-scraper:v1.0.7


kubectl apply -f recommended.yaml

[root@master ~]# kubectl get pods -n kubernetes-dashboard
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-799d786dbf-4fh5r   1/1     Running   0          10m
kubernetes-dashboard-fb8648fd9-pk6jk         1/1     Running   0          10m

# 訪問地址:https://NodeIP:30001 
# 創(chuàng)建service account并綁定默認cluster-admin管理員集群角色:
# 創(chuàng)建用戶
[root@master ~]# kubectl create serviceaccount dashboard-admin -n kube-system
serviceaccount/dashboard-admin created
# 用戶授權
[root@master ~]# kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
clusterrolebinding.rbac.authorization.k8s.io/dashboard-admin created
# 獲取用戶Token
[root@master ~]# kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
Name:         dashboard-admin-token-gr2bk
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: dashboard-admin
              kubernetes.io/service-account.uid: b3b13801-e4a6-481f-a3ea-2fb55b2f6f23

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1099 bytes
namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6Ik1CLXR0QmxtSkhLZXRubXdLQ1c4X2paMk14dXRvQTRDMVBOdmw0SWtpX2cifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tZ3IyYmsiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiYjNiMTM4MDEtZTRhNi00ODFmLWEzZWEtMmZiNTViMmY2ZjIzIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.sH4z8gX5qdZXgw3pApBDzF9nlowdLjuFkkFfpdh1p0ljFdNOYdnfj84sRssU-PqoEx6ImCBF0czxQqfOJMXp6ha6-0XR44U15aWWjenqcfydw27RRJuV42z4N-PE7PdRETImCELIfvokkNU_r7uMlYahVE-cwRVi6Uj7ywL_Sjt6l8pv3qGDbCLnhWX-64mpZTqtjxhsH2xj1RUlOh_y_Q6UANtJzqxIvLmJwn5a1k7fNEWoI9F-9oBxbNEzias-AEygr9h4wjIdX3tB2LCR7EsDsulJ1KYLVNj-U72PqzU7j0IeFessB3F34TO50FXmQ6z6-fnHdK93aNYjY8BBcA


# https://192.168.32.130:30001/#/login

k8s離線安裝,k8s,kubernetes,docker,運維
10、部署nginx服務文章來源地址http://www.zghlxwxcb.cn/news/detail-787241.html

# 1.創(chuàng)建namespace.yaml文件
[root@k8s-master1 ~]# vi nginx-namespase.yaml
apiVersion: v1 #類型為Namespace
kind: Namespace  #類型為Namespace
metadata:
  name: ssx-nginx-ns  #命名空間名稱
  labels:
    name: lb-ssx-nginx-ns

# 然后應用到k8s中:
[root@master ~]# kubectl create -f nginx-namespase.yaml 
namespace/ssx-nginx-ns created

# 2.創(chuàng)建nginx-deployment.yaml文件
vi nginx-deployment.yaml

[root@k8s-master1 ~]# vi nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx #為該Deployment設置key為app,value為nginx的標簽
  name: ssx-nginx-dm
  namespace: ssx-nginx-ns
spec:
  replicas: 2 #副本數(shù)量
  selector: #標簽選擇器,與上面的標簽共同作用
    matchLabels: #選擇包含標簽app:nginx的資源
      app: nginx
  template: #這是選擇或創(chuàng)建的Pod的模板
    metadata: #Pod的元數(shù)據(jù)
      labels: #Pod的標簽,上面的selector即選擇包含標簽app:nginx的Pod
        app: nginx
    spec: #期望Pod實現(xiàn)的功能(即在pod中部署)
      containers: #生成container,與docker中的container是同一種
      - name: ssx-nginx-c
        image: nginx:latest #使用鏡像nginx: 創(chuàng)建container,該container默認80端口可訪問
        ports:
        - containerPort: 80  # 開啟本容器的80端口可訪問
        volumeMounts:  #掛載持久存儲卷
        - name: volume #掛載設備的名字,與volumes[*].name 需要對應 
          mountPath: /usr/share/nginx/html #掛載到容器的某個路徑下  
      volumes:
      - name: volume #和上面保持一致 這是本地的文件路徑,上面是容器內部的路徑
        hostPath:
          path: /opt/web/dist #此路徑需要實現(xiàn)創(chuàng)建
     
[root@master ~]# kubectl create -f nginx-deployment.yaml
  
# 3.創(chuàng)建service.yaml文件        
[root@k8s-master1 ~]# vi nginx-service.yaml 
apiVersion: v1
kind: Service
metadata:
  labels:
   app: nginx
  name: ssx-nginx-sv
  namespace: ssx-nginx-ns
spec:
  ports:
  - port: 80 #寫nginx本身端口
    name: ssx-nginx-last
    protocol: TCP
    targetPort: 80 # 容器nginx對外開放的端口 上面的dm已經(jīng)指定了
    nodePort: 31090 #外網(wǎng)訪問的端口
  selector:
    app: nginx    #選擇包含標簽app:nginx的資源
  type: NodePort

kubectl create -f ./nginx-service.yaml

[root@master ~]# kubectl get pods,svc -n ssx-nginx-ns -owide
NAME                               READY   STATUS    RESTARTS   AGE   IP               NODE        NOMINATED NODE   READINESS GATES
pod/ssx-nginx-dm-686cdf7d5-72hhv   1/1     Running   0          98s   10.244.169.135   k8s-node2   <none>           <none>
pod/ssx-nginx-dm-686cdf7d5-qppqc   1/1     Running   0          98s   10.244.36.87     k8s-node1   <none>           <none>

NAME                   TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE   SELECTOR
service/ssx-nginx-sv   NodePort   10.110.26.245   <none>        80:31090/TCP   46s   app=nginx

# 測試nginx
[root@master ~]# curl 192.168.32.129:31090
<h1>This is 192.168.32.129</h1>

[root@master ~]# curl 192.168.32.130:31090
<h1>This is 192.168.32.129</h1>

到了這里,關于K8s集群離線安裝-kubeadm-詳細篇的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 云原生|kubernetes|kubernetes集群部署神器kubekey安裝部署高可用k8s集群(半離線形式)

    云原生|kubernetes|kubernetes集群部署神器kubekey安裝部署高可用k8s集群(半離線形式)

    前面利用kubekey部署了一個簡單的非高可用,etcd單實例的kubernetes集群,經(jīng)過研究,發(fā)現(xiàn)部署過程可以簡化,省去了一部分下載過程(主要是下載kubernetes組件的過程)只是kubernetes版本會固定在1.22.16版本,etcd集群可以部署成生產(chǎn)用的外部集群,并且apiserver等等組件也是高可用,

    2024年02月15日
    瀏覽(28)
  • Kubernetes技術--使用kubeadm快速部署一個K8s集群

    Kubernetes技術--使用kubeadm快速部署一個K8s集群

    這里我們配置一個 單master集群 。( 一個Master節(jié)點,多個Node節(jié)點 ) 1.硬件環(huán)境準備 一臺或多臺機器,操作系統(tǒng) CentOS7.x-86_x64 。這里我們使用安裝了CentOS7的三臺虛擬機 硬件配置 : 2GB或更多RAM , 2個CPU或更多CPU , 硬盤30GB或更多 2.主機名稱和IP地址規(guī)劃 3. 初始化準備工作 (1).關

    2024年02月10日
    瀏覽(122)
  • Ubuntu 使用Kubeadm 離線安裝k8s

    K8S離線部署的方案 離線包,自己可以跟著下面步驟自己下載。 https://download.csdn.net/download/u010952056/86748944 萬字長文詳解 PaaS toB 場景下 K8s 離線部署方案 Item Language 離線部署支持情況 kops Golang 不支持 kubespray Ansible 支持,需自行構建安裝包 kubeasz Ansible 支持,需自行構建安裝包

    2024年02月05日
    瀏覽(27)
  • 【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.26.0版本

    【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.26.0版本

    官方文檔: 二進制下載地址 環(huán)境規(guī)劃: pod網(wǎng)段:10.244.0.0/16 service網(wǎng)段:10.10.0.0/16 注意: pod和service網(wǎng)段不可沖突,如果沖突會導致K8S集群安裝失敗。 容器運行時本次使用containerd。 主機名 IP地址 操作系統(tǒng) master-1 16.32.15.200 CentOS7.8 node-1 16.32.15.201 CentOS7.8 node-2 16.32.15.202 CentOS

    2024年02月10日
    瀏覽(51)
  • 【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.27.0版本

    【Kubernetes部署篇】Kubeadm方式搭建K8s集群 1.27.0版本

    官方文檔: 二進制下載地址 環(huán)境規(guī)劃: pod網(wǎng)段:10.244.0.0/16 service網(wǎng)段:10.10.0.0/16 注意: pod和service網(wǎng)段不可沖突,如果沖突會導致K8S集群安裝失敗。 主機名 IP地址 操作系統(tǒng) master-1 16.32.15.200 CentOS7.8 node-1 16.32.15.201 CentOS7.8 node-2 16.32.15.202 CentOS7.8 1、關閉防火墻 2、配置域名解

    2024年02月08日
    瀏覽(35)
  • Kubeadm安裝K8s集群

    Kubeadm安裝K8s集群

    一、硬件環(huán)境 準備3臺Linux服務器,此處用Vmware虛擬機。 主機名 CPU 內存 k8smaster 2核 4G k8snode1 2核 4G k8snode2 2核 4G 二、系統(tǒng)前置準備 配置三臺主機的hosts文件 設置主機名 關閉selinux、禁用swap分區(qū) ipv4流量轉發(fā) 關閉防火墻 同步三臺服務器的時間 三、環(huán)境安裝 Docker 安裝 Docker卸載

    2024年02月13日
    瀏覽(28)
  • 一、kubeadm部署Kubernetes(k8s) 1.23.0多主高可用集群

    Kubernetes介紹 kubernetes(k8s)是2015年由Google公司基于Go語言編寫的一款開源的容器集群編排系統(tǒng),用于自動化容器的部署、擴縮容和管理; kubernetes(k8s)是基于Google內部的Borg系統(tǒng)的特征開發(fā)的一個版本,集成了Borg系統(tǒng)大部分優(yōu)勢; 官方地址:https://Kubernetes.io 代碼托管平臺:

    2024年03月25日
    瀏覽(38)
  • Kubernetes技術--使用kubeadm搭建高可用的K8s集群(貼近實際環(huán)境)

    Kubernetes技術--使用kubeadm搭建高可用的K8s集群(貼近實際環(huán)境)

    1.高可用k8s集群架構(多master) 2.安裝硬件要求 一臺或多臺機器,操作系統(tǒng) CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2個CPU或更多CPU,硬盤30GB或更多 注: 這里屬于教學環(huán)境,所以使用三臺虛擬機模擬實現(xiàn)。 3.部署規(guī)劃 4.部署前準備 (1).關閉防火墻 (2).關閉selinux (3).關閉swap (4).根據(jù)規(guī)

    2024年02月10日
    瀏覽(28)
  • 使用kubeadm安裝和設置Kubernetes(k8s)

    使用kubeadm安裝和設置Kubernetes(k8s)

    kubeadm是官方社區(qū)推出的一個用于快速部署kubernetes集群的工具。 這個工具能通過兩條指令完成一個kubernetes集群的部署: 使用kubeadm方式搭建K8s集群主要分為以下幾步 準備三臺虛擬機,同時安裝操作系統(tǒng)CentOS 7.x 對三個安裝之后的操作系統(tǒng)進行初始化操作 在三個節(jié)點安裝 dock

    2024年02月12日
    瀏覽(56)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包