K8S入門------1、k8s 1.19.2安裝

環境:

 

主機名 IP 操作系統 docker k8s版本 備註
k8s-master 10.13.19.51 Centos 7.9 19.03.13 1.19.2 master節點
k8s-node01 10.13.19.52 Centos 7.9 19.03.13 1.19.2 node節點
k8s-node02 10.13.19.53 Centos 7.9 19.03.13 1.19.2 node節點

一、Docker安裝

所有節點都需要安裝docker
 

1.安裝阿里雲docker源

[root@centos7 ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

 

2.安裝docker

 

2.1 docker安裝版本查看

[root@centos7 ~]# yum list docker-ce --showduplicates | sort -r`

2.2 安裝docker

[root@centos7 ~]# yum -y install docker-ce-19.03.13 bash-completion

3. 配置鏡像加速器

3.1 配置daemon.json文件

[root@centos7 ~]# mkdir -p /etc/docker
[root@centos7 ~]# sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://v16stybc.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF





重啓服務

[root@centos7 ~]# systemctl daemon-reload
[root@centos7 ~]# systemctl enable --now docker

加速器配置完成
 

二、k8s安裝準備工作 

安裝Centos是已經禁用了防火牆和selinux並設置了阿里源。master和node節點都執行本部分操作。

1. 配置主機名

 

1.1 修改主機名

[root@centos7 ~]# hostnamectl set-hostname k8s-master
[root@centos7 ~]# hostname
k8s-master

退出重新登陸即可顯示新設置的主機名k8s-master
 

1.2 修改hosts文件

[root@master ~]# cat >> /etc/hosts << EOF
10.13.19.51 k8s-master
10.13.19.52 k8s-node01
10.13.19.53 k8s-node02
EOF



2. 驗證mac地址uuid

[root@master ~]# cat /sys/class/net/ens33/address
[root@master ~]# cat /sys/class/dmi/id/product_uuid

保證各節點mac和uuid唯一
 

3. 禁用swap

 

3.1 臨時禁用

[root@k8s-master ~]# swapoff -a

3.2 永久禁用

若需要重啓後也生效,在禁用swap後還需修改配置文件/etc/fstab,註釋swap

[root@k8s-master ~]# sed -i.bak '/swap/s/^/#/' /etc/fstab

4. 內核參數修改

[root@k8s-master ~]# cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
[root@k8s-master ~]# sysctl -p /etc/sysctl.d/k8s.conf



5. 設置kubernetes源

 

5.1 新增kubernetes源

[root@k8s-master ~]# 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







5.2 更新緩存

[root@k8s-master ~]# yum clean all
[root@k8s-master ~]# yum -y makecache

三、Master節點安裝

 

1. 安裝kubelet、kubeadm和kubectl

 

1.1 安裝三個包

[root@k8s-master ~]# yum install -y kubelet-1.19.2 kubeadm-1.19.2 kubectl-1.19.2

1.2 安裝包說明

kubelet 運行在集羣所有節點上,用於啓動Pod和容器等對象的工具
kubeadm 用於初始化集羣,啓動集羣的命令工具
kubectl 用於和集羣通信的命令行,通過kubectl可以部署和管理應用,查看各種資源,創建、刪除和更新各種組件

 

1.3 啓動kubelet

啓動kubelet並設置開機啓動

[root@k8s-master ~]# systemctl enable --now kubelet

1.4 kubelet命令補全

[root@k8s-master ~]# source /usr/share/bash-completion/bash_completion
[root@k8s-master ~]# echo "source <(kubectl completion bash)" >> ~/.bash_profile
[root@k8s-master ~]# source .bash_profile

2. 初始化Master

 

2.1 初始化

[root@master ~]# kubeadm init \
--apiserver-advertise-address=10.13.19.51 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version v1.19.2 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16




apiserver-advertise-address指定master的interface,pod-network-cidr指定Pod網絡的範圍,這裏使用flannel網絡方案。

記錄kubeadm join的輸出,後面需要這個命令將各個節點加入集羣中。
 

2.2 加載環境變量

[root@k8s-master ~]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
[root@k8s-master ~]# source .bash_profile
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config



2.3. 配置hosts

cat >> /etc/hosts << EOF
151.101.108.133 raw.githubusercontent.com
EOF

2.4.安裝pod網絡

[root@k8s-master ~]# wget https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml
[root@k8s-master ~]# kubectl apply -f kube-flannel.yml

四、Node節點安裝

 

1. 安裝kubelet、kubeadm和kubectl

 
同master節點
 

2. 下載鏡像

 
同master節點
 

3. 加入集羣

 
以下操作master上執行
 

3.1 查看令牌

[root@k8s-master ~]# kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
j5eoyz.zu0x6su7wzh752b3 <invalid> 2019-06-04T17:40:41+08:00 authentication,signing The default bootstrap token generated by 'kubeadm init'. system:bootstrappers:kubeadm:default-node-token

發現之前初始化時的令牌已過期
 

3.2 生成新的令牌

[root@master ~]# kubeadm token create
1zl3he.fxgz2pvxa3qkwxln

3.3 生成新的加密串

[root@master ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \
openssl dgst -sha256 -hex | sed 's/^.* //'

3.4 node節點加入集羣

 
在node節點上分別執行如下操作:

[root@node01 ~]# kubeadm join 10.13.19.51:6443 --token 1zl3he.fxgz2pvxa3qkwxln --discovery-token-ca-cert-hash sha256:5f656ae26b5e7d4641a979cbfdffeb7845cc5962bbfcd1d5435f00a25c02ea50

五、集羣測試

 

1. 部署應用

 

1.1 命令方式

[root@master ~]# kubectl run httpd --image=httpd --replicas=3
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/httpd-app created

通過命令行方式部署apache服務
 

1.2 配置文件方式

cat >> nginx.yml << EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
restartPolicy: Always
containers:












  • name: nginx
    image: nginx:latest
    EOF

 

[root@master ~]# kubectl apply -f nginx.yml
deployment.apps/nginx created

通過配置文件方式部署nginx服務
 

2. 狀態查看

 

2.1 查看節點狀態

[root@k8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 1h v1.19.2
node01 Ready <none> 1h v1.19.2
node02 Ready <none> 1h v1.19.2



2.2 查看pod狀態

[root@k8s-master ~]# kubectl get pod --all-namespaces

2.3 查看副本數

[root@master ~]# kubectl get deployments --all-namespaces

[root@master ~]# kubectl get pod -o wide --all-namespaces

2.4 查看deployment詳細信息

[root@master ~]# kubectl describe deployments

2.5 查看集羣基本組件狀態

[root@master ~]# kubectl get cs
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}



至此完成Centos7.9下k8s(v1.19.2)集羣部署。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章